Commit Graph

49 Commits

Author SHA1 Message Date
joerg 4e5ca533a9 The semantics of DW_CFA_GNU_args_size have changed subtile over the
years. Adopt the new convention that it is call-site specific and that
it should be applied before moving the IP by personality routines, but
not during normal unwinding. Further discussion can be found in
LLVM's phabricator review D38680.
2018-07-17 19:01:16 +00:00
joerg 364f0c0b54 Remove redundant setIP call overwritten a few lines later. 2018-07-17 18:58:58 +00:00
christos 4fac11b8ba Avoid negative shift. 2017-11-02 16:09:33 +00:00
joerg e5b91c2885 GCC 5.3 likes to emit unwind data with float registers, i.e. register
halfs. Compensate.
2017-07-13 15:13:19 +00:00
matt 71577e7b2d Use ARM_ENTRY since these aren't thumb compatible. 2015-05-25 18:41:08 +00:00
joerg 72523275ec Provide _Unwind_Find_FDE for libgcc_s compatibility. 2015-02-17 21:02:33 +00:00
joerg 1c5d00e7d3 Force FPU support for Clang, don't disable IAS completely. 2015-01-29 20:45:16 +00:00
joerg e9d4ea8b6a Fix binary search when search value is in the last block, but not equal
to the start of the range. PR 49444.
2015-01-29 20:05:56 +00:00
christos 035b9a6c6d prefer our own unwind.h 2014-10-23 17:51:22 +00:00
joerg 5e9701e670 Introduce a separate bit mask for the return address. Use it on HPPA. 2014-09-27 12:08:46 +00:00
matt a23afddde6 Add OR1K support 2014-09-03 19:27:21 +00:00
matt 547b3a3b01 Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only.  While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.
2014-08-10 05:56:36 +00:00
joerg 3d95c8af33 Fix braino in last commit and free the node iff the insert failed. 2014-07-20 14:40:58 +00:00
joerg 827ab89a76 Use static_cast for rb_tree_insert_node void * return value. 2014-07-14 11:36:39 +00:00
joerg 1aed1443e6 IAS is clang specific. 2014-06-30 20:42:31 +00:00
joerg 182cb3ee17 .fpu is not handled correctly by LLVM's assembler parser, so use GAS for
now.
2014-06-28 20:18:15 +00:00
matt a50cc6d607 Split COPTS.libunwind.cxx into multiple lines. 2014-06-13 21:31:20 +00:00
mrg 26f35dd6b6 remove the build support for GCC 4.1, and any hacks i found for it.
there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)
2014-06-13 01:17:45 +00:00
joerg 0ed4c83ba9 Lazy VFP processing works a lot better if the functions contain a return
instruction.
2014-05-14 22:13:36 +00:00
joerg 2f1b7695c4 Support DWARFish unwind for ARM. 2014-05-11 02:07:35 +00:00
joerg 7e3335542c Missing register validation check. 2014-05-03 23:19:56 +00:00
joerg 0c55f87954 GC unwind_info_size. 2014-04-28 13:39:23 +00:00
joerg d013f698cc Use the return address register from the CIE. Based on patch from Nick
Kledzik.
2014-04-26 23:17:38 +00:00
joerg 380ce570fd Add initial unwind support for MIPS and MIPS64. 2014-04-26 20:15:48 +00:00
joerg f76ae5ef4f Basic unwind support for HPPA. 2014-04-19 21:21:24 +00:00
joerg a997683cbb Add basic Alpha support to libunwind. 2014-04-15 18:40:34 +00:00
joerg 7209984597 Add initial unwind support for SPARC/SPARC64. 2014-04-15 11:44:26 +00:00
joerg 4b91d83710 Some architectures like SPARC need to apply a fixed offset to the return
address. Introduce such a constant.
2014-04-14 18:15:17 +00:00
joerg 44e617ea85 Move definition of what the native register layout is into
Registers.hpp.
2014-04-13 19:04:01 +00:00
joerg 8886a873b8 Support SH3 in our unwinder. 2014-04-02 22:34:29 +00:00
joerg 8d85521c7b SH3 uses unaligned data in the .eh_frame section, so use memcpy. 2014-04-02 22:22:37 +00:00
joerg dd0e21086c Save & restore FP registers. 2014-03-25 00:00:55 +00:00
joerg 0378fc4757 Add m68k support to our unwinder. 2014-03-24 21:25:03 +00:00
joerg 1fad0e91e1 Fix DW_CFA_GNU_args_size handling. The primary architecture using this
opcode is VAX. A function call pushes the number of arguments given onto
the stack and "ret" will pop it automatically. The FDE of the caller
contains the amount of stack space used for arguments (and possibly
extra padding), so unwinding has to compensate for this when "returning"
from a function. This is exactly the case when step() is done. The
existing handling in _Unwind_SetIP no longer makes sense.
2014-03-20 01:35:45 +00:00
joerg 9a7eb6d5aa Drop XXX, spell R14 as SP. 2014-03-19 21:15:45 +00:00
joerg 0498752769 Allow building with GCC 4.1 by providing <cstdint> 2014-03-19 16:46:23 +00:00
joerg c9aa4ad46c Add basic unwind support for VAX. PSW handling and stack pointer after
resume is still incomplete.
2014-03-18 13:08:15 +00:00
joerg a5e04a5e0f Kill one colon that shouldn't be. 2014-03-13 01:50:50 +00:00
joerg 0f0483b305 libstdc++ doesn't like me using <cstdint> without requesting C++11, so
just do so.
2014-03-13 00:56:41 +00:00
joerg d952896fa0 Add _Unwind_GetIPInfo for libstdc++. 2014-03-13 00:28:20 +00:00
joerg a0318c3f0f Pass down data_base just in case something actually tries to use it. 2014-03-12 22:50:59 +00:00
joerg a6d7909bce Add more const to make GCC happy. 2014-03-12 15:31:55 +00:00
joerg b77db904fb Add a dummy element as explicit padding for PPC32. Fix DWARF enumeration
to match the values created by GCC. Fix DWARFish -> index conversion.
2014-03-12 00:01:12 +00:00
joerg fb33a5654b Rename IP_PSEUDO_REG to RETURN_REG. Fix PPC value. Sort. 2014-03-11 23:57:42 +00:00
joerg 1b4a81d6d1 GC unused enum. 2014-03-11 23:55:11 +00:00
joerg 499c31d6cd 0 is a valid LSDA encoding and can be seen in statically linked
programs. Initialize lsdaEncoding to DW_EH_PE_omit and check for that
value to decide whether a value should be decoded.
2014-03-11 23:52:17 +00:00
matt a11fbefc31 Add support for non-EABI (DWARF) ARM exception handling. 2014-01-29 06:59:53 +00:00
joerg a060b1754e Fix typo. 2013-12-20 12:46:42 +00:00
joerg 3a53a9e14e Add a heavily modified version of Apple's libunwind as released under
MIT license in libc++abi. At the moment, only x86 support is tested.
2013-10-14 01:14:57 +00:00