llvm-capstone/libunwind
whitequark dcd93505da [libunwind] Add proper support for DWARF unwind on bare metal.
Right now, ARM EHABI unwind on bare metal expects to find the symbols
__exidx_start and __exidx_end defined, and uses those to locate
the EH tables. However, DWARF unwind on bare metal expects to find
dl_iterate_phdr, which, although possible to provide, is inconvenient
and mildly absurd.

This commit provides feature parity with ARM EHABI unwind by looking
for symbols __eh_frame_start, __eh_frame_end, __eh_frame_hdr_start
and __eh_frame_hdr_end, denoting the start and end of the sections
with corresponding names. As far as I know, there is no de jure or
de facto ABI providing any such names, so I chose the obvious ones.

The .eh_frame_hdr support is optional for maximum flexibility and
possible space savings (e.g. if libunwind is only used to provide
backtraces when a device crashes, providing the .eh_frame_hdr, which
is an index for rapid access to EH tables, would be a waste.)

The support for .eh_frame_hdr/DWARF index in the first place is
conditional on defined(_LIBUNWIND_SUPPORT_DWARF_INDEX), although
right now config.h will always define this macro.

The support for DWARF unwind on bare metal has been validated within
the ARTIQ environment[1].

  [1]: https://m-labs.hk/artiq/

llvm-svn: 321445
2017-12-25 17:05:07 +00:00
..
cmake build: use POSITION_INDEPENDENT_CODE instead of -fPIC 2017-10-03 20:22:26 +00:00
docs [docs] Mention that dwarf unwinding should be supported on arm64/windows 2017-11-16 07:16:36 +00:00
include [libunwind][MIPS]: Add support for unwinding in O32 and N64 processes. 2017-12-12 21:43:36 +00:00
src [libunwind] Add proper support for DWARF unwind on bare metal. 2017-12-25 17:05:07 +00:00
test [libunwind] Pass LIBUNWIND_SYSROOT and LIBUNWIND_GCC_TOOLCHAIN to lit 2017-12-05 20:22:10 +00:00
.arcconfig Update .arcconfig 2016-07-20 23:56:17 +00:00
.clang-format unwind: add a .clang-format 2015-05-07 19:50:18 +00:00
CMakeLists.txt [libunwind][CMake] Set TARGET_TRIPLE if LIBUNWND_TARGET_TRIPLE is set 2017-12-05 20:48:05 +00:00
LICENSE.TXT Fix the project name in the license file. 2017-02-27 17:47:58 +00:00