1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-05-18 19:25:16 +02:00
libunwind-eh_elf/include
Tim Deegan 4eb880e1b5 Implement DWARF DW_CFA_val_expression for x86_64
Ubuntu's libc-bin (2.15-0ubuntu20.2) on x86_64 uses DW_CFA_val_expression
in describing the pthread spinlock operations __lll_unlock_wake() and
__lll_lock_wait().  libunwind 1.1 doesn't understand that opcode and
so backtraces from those operations are truncated.

This changeset adds basic support for it, by adding a new type to
dwarf_loc_t that describes the register's actual contents rather than
its location.  I've only implemented the new type for x86_64, and
stubbed it out for all other architectures -- it looks like a lot
of that code is duplicated so oughtn't to be that hard, but I don't
have test cases for them.

Tested that DW_CFA_val_expression works on x86_64 (by using
https://code.google.com/p/gperftools/ on a lock-heavy program).
Build-tested on x86, x86_64 and arm.  The unit tests don't pass for me
on any of those archs, but this cset doesn't break anything that was
passing before.

Signed-off-by: Tim Deegan <tjd@phlegethon.org>
2014-02-08 20:19:20 -08:00
..
tdep [PATCH] AArch64 port. 2013-05-11 09:20:28 -06:00
tdep-aarch64 [PATCH] AArch64 port. 2013-05-11 09:20:28 -06:00
tdep-arm Invert tdep_init() flag logic 2012-09-28 14:06:07 +03:00
tdep-hppa Invert tdep_init() flag logic 2012-09-28 14:06:07 +03:00
tdep-ia64 IA64: give prototype for `ia64_find_unwind_table()' 2012-09-28 14:50:03 +03:00
tdep-mips Invert tdep_init() flag logic 2012-09-28 14:06:07 +03:00
tdep-ppc32 Invert tdep_init() flag logic 2012-09-28 14:06:07 +03:00
tdep-ppc64 Support powerpc64le-linux platform 2013-12-27 07:09:06 -08:00
tdep-sh SuperH port 2012-09-28 14:50:03 +03:00
tdep-x86 Invert tdep_init() flag logic 2012-09-28 14:06:07 +03:00
tdep-x86_64 Implement DWARF DW_CFA_val_expression for x86_64 2014-02-08 20:19:20 -08:00
x86 Merge ../libunwind-v0.98 2006-07-25 21:41:43 -06:00
compiler.h Define and use `CONST_ATTR' 2012-09-28 14:51:21 +03:00
dwarf-eh.h Rename: src/dwarf/dwarf-eh.h -> include/dwarf-eh.h 2005-05-03 09:13:17 +00:00
dwarf.h Implement DWARF DW_CFA_val_expression for x86_64 2014-02-08 20:19:20 -08:00
dwarf_i.h Constify `dwarf_to_unw_regnum_map' 2012-09-28 14:50:03 +03:00
libunwind-aarch64.h [PATCH] AArch64 port. 2013-05-11 09:20:28 -06:00
libunwind-arm.h [ARM] Add support for systems that don't support ucontext.h 2011-10-29 17:12:43 -07:00
libunwind-common.h.in Export unw_backtrace() and alias backtrace() to it. 2011-04-01 00:00:33 -07:00
libunwind-coredump.h Add support for multiple threads in core files 2012-03-23 22:07:17 -07:00
libunwind-dynamic.h Rework the lookup of the ARM specific unwind info 2011-08-15 20:12:54 +02:00
libunwind-hppa.h Drop a call frame in tdep_trace and avoid a call to unw_step. 2011-04-01 00:00:39 -07:00
libunwind-ia64.h Drop a call frame in tdep_trace and avoid a call to unw_step. 2011-04-01 00:00:39 -07:00
libunwind-mips.h MIPS coredump support 2012-09-28 14:50:03 +03:00
libunwind-ppc32.h Fix the UNW_TDEP_CURSOR_LEN for ppc32 to fix assert failure 2013-04-13 11:47:18 -07:00
libunwind-ppc64.h Support powerpc64le-linux platform 2013-12-27 07:09:06 -08:00
libunwind-ptrace.h Bring git v0.98.5 tree in sync with released v0.98.5. 2006-07-25 21:32:28 -06:00
libunwind-sh.h SuperH port 2012-09-28 14:50:03 +03:00
libunwind-x86.h Drop a call frame in tdep_trace and avoid a call to unw_step. 2011-04-01 00:00:39 -07:00
libunwind-x86_64.h Installed include files can't include config.h 2011-09-05 10:47:13 -07:00
libunwind.h.in [PATCH] AArch64 port. 2013-05-11 09:20:28 -06:00
libunwind_i.h Implement DWARF DW_CFA_val_expression for x86_64 2014-02-08 20:19:20 -08:00
mempool.h Include "libunwind_i.h" instead of "internal.h". 2005-05-20 09:48:08 +00:00
remote.h Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
unwind.h Be gcc compatible for C++ exceptions on 32 bit platforms. 2010-02-21 22:45:08 -08:00