1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-05 09:19:27 +01:00
libunwind-eh_elf/include
Arun Sharma 649f1fb344 [X86-64] For local unwinding, we have a defence mechanism against
bad/missing unwind information, which could result in libunwind
dereferencing bad pointers. This mechanism is based on msync(2) system
call and significantly reduces the chances of a bad pointer
dereference in libunwind.

The original idea was to turn this mechanism on only when necessary
i.e. libunwind didn't find proper unwind information for a IP.

There are a couple of problems in the current implementation.

* The flag is global and is modified without locking
* The flag isn't reset when starting a new unwind

The attached patch makes ->validate a per-thread setting by moving it
into struct cursor from unw_local_addr_space and resets it to false
when starting a new unwind. As a result, cursor->as_arg points to the
cursor itself instead of the ucontext (for the local case).

This was found to reduce the number of msync() system calls from an
application using libunwind significantly.

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-06-16 14:35:53 -06:00
..
tdep-arm Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-hppa Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-ia64 Restore more files wiped out by Bitkeeper->CVS->GIT transition. 2006-07-26 15:09:39 -06:00
tdep-mips Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-ppc32 Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-ppc64 Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-x86 Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
tdep-x86_64 [X86-64] For local unwinding, we have a defence mechanism against 2008-06-16 14:35:53 -06:00
x86 Merge ../libunwind-v0.98 2006-07-25 21:41:43 -06:00
x86_64 Merge ../libunwind-v0.98 2006-07-25 21:41:43 -06:00
config.h.in Rebuilt configure and Makefile.in files. 2007-08-06 19:56:28 -06:00
dwarf-eh.h Rename: src/dwarf/dwarf-eh.h -> include/dwarf-eh.h 2005-05-03 09:13:17 +00:00
dwarf.h Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
dwarf_i.h Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
libunwind-arm.h Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
libunwind-common.h.in (UNW_VERSION_CODE): New macro. 2004-09-09 10:45:24 +00:00
libunwind-dynamic.h (unw_dyn_info_format_t): Remove UNW_INFO_FORMAT_DWARF_FDE. 2005-05-03 09:13:17 +00:00
libunwind-hppa.h [dwarf] The sword() function in Gexpr.c doesn't do what's intended. 2006-07-26 22:12:10 -06:00
libunwind-ia64.h [dwarf] The sword() function in Gexpr.c doesn't do what's intended. 2006-07-26 22:12:10 -06:00
libunwind-mips.h Add initial ARM and MIPS support. To support this, also enable the 2008-02-04 17:16:37 -07:00
libunwind-ppc32.h [PPC32] Make PPC32 unwinding work for real. 2007-10-08 12:33:18 -06:00
libunwind-ppc64.h Add PPC64 support. 2007-08-02 09:59:43 -06: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-x86.h [X86] Cleanup XMM handling for x86 2008-01-07 15:41:20 -07:00
libunwind-x86_64.h [dwarf] The sword() function in Gexpr.c doesn't do what's intended. 2006-07-26 22:12:10 -06:00
libunwind_i.h Introduce a tdep_get_func_addr_hook() in the ELF lookup_symbol() 2007-08-22 13:02:09 -06: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
stamp-h.in Initial revision 2002-02-23 20:27:03 +00:00
unwind.h (Logical change 1.135) 2003-12-04 07:44:21 +00:00