1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-16 21:27:38 +01:00
libunwind-eh_elf/src
Dave Watson 3d9a694de8 dwarf: Fix incorrect application of restore_state
Repro for a multilib binary on host x86_64:

CFLAGS="-m32" LDFLAGS="-m32" ./configure --enable-debug -- host=i686-pc-linux-gnu --target=i686-pc-linux-gnu --libdur=/usr/lib32 --prefix=/usr --disable-documentation

make check

Gtest-init function fails trying to step through libc_start_main.  The CFA function is:

DW_CFA_def_cfa_offset: 112
DW_CFA_advance_loc: 5 to ...643
DW_CFA_restore state

Where the return address is 643.

Generally, it appears we apply all ip <= end_ip, which is incorrect in some circumstances.

libgcc only applies ip < end_ip + is_signal_frame, but that seems to break async signal handling
tests in libunwind for unknown reasons.

This is somewhat simlar to the fix in e9e8ed73e for GNU_args_size,
where the same ip check was added.
2017-08-24 08:51:18 -07:00
..
aarch64 arm64: Support for restore of ARM64 Neon callee-saved registers during unwind 2017-08-18 09:56:06 -07:00
arm arm: argument type for unw_init_local2 2017-08-22 11:50:02 -07:00
coredump core: Fix memory leak in libunwind-coredump. 2017-08-14 18:39:37 -07:00
dwarf dwarf: Fix incorrect application of restore_state 2017-08-24 08:51:18 -07:00
hppa Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
ia64 Bring back support for UNW_CACHE_PER_THREAD. 2017-08-15 10:34:28 -07:00
mi Bring back support for UNW_CACHE_PER_THREAD. 2017-08-15 10:34:28 -07:00
mips Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
ppc Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
ppc32 Bring back support for UNW_CACHE_PER_THREAD. 2017-08-15 10:34:28 -07:00
ppc64 Bring back support for UNW_CACHE_PER_THREAD. 2017-08-15 10:34:28 -07:00
ptrace aarch64: Use PTRACE_GETREGSET if available 2017-08-07 09:33:23 -07:00
setjmp One time whitespace fixup. 2014-09-27 09:47:23 -07:00
sh Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
tilegx Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
unwind One time whitespace fixup. 2014-09-27 09:47:23 -07:00
x86 Change unw_init_local_signal to unw_init_local2(..., UNW_INIT_SIGNAL_FRAME) 2017-08-16 13:11:24 -07:00
x86_64 x86_64: fix mincore_validate and msync_validate 2017-08-24 08:50:07 -07:00
elf32.c Do nothing of UNW_REMOTE_ONLY is defined. 2003-02-15 03:10:30 +00:00
elf32.h One time whitespace fixup. 2014-09-27 09:47:23 -07:00
elf64.c Do nothing of UNW_REMOTE_ONLY is defined. 2003-02-15 03:10:30 +00:00
elf64.h One time whitespace fixup. 2014-09-27 09:47:23 -07:00
elfxx.c elf: Don't use .gnu_debuglink if it doesn't exist 2017-08-16 10:59:32 -07:00
elfxx.h elf: Follow .gnu_debuglink when resolving function names 2017-03-02 08:02:14 -08:00
libunwind-generic.pc.in Add Cflags keyword to pkg-config metadata files 2013-08-26 05:40:19 -07:00
Makefile.am configure: Fix dangling link when --disable-static is specified 2017-08-16 11:12:56 -07:00
os-freebsd.c dwarf: Make binary path calculation os-specific. 2017-01-19 10:07:13 -08:00
os-hpux.c dwarf: Make binary path calculation os-specific. 2017-01-19 10:07:13 -08:00
os-linux.c elf: Follow .gnu_debuglink when resolving function names 2017-03-02 08:02:14 -08:00
os-linux.h One time whitespace fixup. 2014-09-27 09:47:23 -07:00
os-qnx.c dwarf: Make binary path calculation os-specific. 2017-01-19 10:07:13 -08:00