1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-12-03 19:57:39 +01:00
Commit graph

2482 commits

Author SHA1 Message Date
Alexander Esilevich
e97a676dd7 Fix for find_proc_fde implementation for linux 2010-07-30 07:19:10 +07:00
esil
5d4a07690e x86_64_local_resume is moved undef ifdef __linux__ 2010-07-29 15:33:09 -07:00
esil
a6f1065c24 Parameters for find_proc_fde function are fixed 2010-07-29 15:17:47 -07:00
Alexander Esilevich
15319ec864 Searching of proc fde is moved to separate function 2010-07-30 05:14:15 +07:00
Alexander Esilevich
ecbd61b631 Unused member is removed from callback_data structure 2010-07-30 05:03:43 +07:00
esil
97f1d2758d Fixes for solaris 2010-07-29 14:49:41 -07:00
Alexander Esilevich
06564bd0b9 find_proc_info_refactoring 2010-07-30 03:40:58 +07:00
Alexander Esilevich
7d6f41048c Unused members are removed from callback_data struct 2010-07-29 09:34:29 +07:00
Alexander Esilevich
35e1cb3ecb find_proc_info refactoring 2010-07-29 09:27:58 +07:00
Alexander Esilevich
69bfe6f298 find_proc_info refactoring 2010-07-29 09:21:42 +07:00
Alexander Esilevich
14e193cab6 find_proc_info refactoring 2010-07-29 09:12:35 +07:00
Alexander Esilevich
e61c4dde18 find_proc_info refactoring 2010-07-29 08:45:06 +07:00
Alexander Esilevich
582c652231 find_proc_info refactoring 2010-07-29 07:10:27 +07:00
Alexander Esilevich
cac775a482 libunwind configuration is implemented 2010-07-28 02:35:11 +07:00
Alexander Esilevich
aa4b723f2b Bug with setcontext.S & getcontext.S is fixed 2010-07-28 00:53:33 +07:00
Alexander Esilevich
121898b591 C++ exception support is added in cmake scripts 2010-07-28 00:44:52 +07:00
Alexander
b5aeae55fc Cmake scripts are added 2010-07-27 21:52:17 +07:00
Arun Sharma
4b8404d153 Remove the special casing of ia64 for GetIPInfo()
This rule (no IP adjustment on ia64) may be correct for locating the right FDE.

Unfortunately the same adjusted/unadjusted return address is being used also by
__gxx_personality_v0() to locate the right call-site (the try {} block) for
unwinding.  And this case is already sensitive for off-by-one PC values.
Unlike the FDE location where the function prologue + epilogue make it immune
against off-by-one PC calculations.

Therefore suggesting to unify it with non-ia64 case.

Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-24 11:10:08 -07:00
Arun Sharma
b483ea3f0e Multilib support.
This is useful when packaging for multiple target architectures.

Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-13 12:00:31 -07:00
Arun Sharma
6aec15799d Fix ppc32 build.
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-13 11:44:45 -07:00
Arun Sharma
40afb6667d Use a shorter path for include
This should've been a part of: 2fce54102c
2009-04-13 10:57:21 -07:00
Arun Sharma
aaed432328 Remove more autogenerated files. 2009-04-13 10:50:51 -07:00
Arun Sharma
2fce54102c Implement _Unwind_GetIPInfo() as required by the C++ ABI
Provide a special implementation for ia64, because the unwind
information is such that an IP adjustment is not necessary before
looking up unwind info.

Bad things happen if libunwind only provides parts of the ABI and
the rest come from libgcc.

Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-02 22:22:05 -07:00
Arun Sharma
18a0a81ffc Update the tag to -beta. 2009-03-18 15:33:27 -07:00
Arun Sharma
9607c6407c Fixup CONFIG_DEBUG_FRAME support. 2009-03-17 19:08:58 -07:00
Arun Sharma
1227c41d20 Disable C++ exception support by default on x86. 2009-03-16 21:57:08 -07:00
Arun Sharma
ec53de82ec [PATCH] Avoiding name conflict with the GNU-specific dprintf in stdio.h
Signed-off-by: Yang Zhang <yaaang@gmail.com>
2009-03-16 21:37:11 -07:00
Arun Sharma
ff0ae70cc3 Bad pointer validation for 32 bit x86.
This corresponds to commit 649f1fb344.

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
2009-03-16 21:34:49 -07:00
Arun Sharma
5822fca27a Enable Intel C++ compatibility only when C++ exceptions are enabled. 2009-03-16 21:34:49 -07:00
Arun Sharma
0bce5f0016 Remove auto generated files. 2009-03-16 21:34:49 -07:00
Arun Sharma
83cef8b8f5 Don't check C++ ABI when it's not enabled. 2009-03-16 21:34:49 -07:00
Arun Sharma
576b59e4b1 Verify that we don't call malloc when unwinding locally. 2009-03-16 21:34:48 -07:00
Arun Sharma
a2c27a4ab7 Make .debug_frame support optional.
Because these code paths use malloc and stdio, they could
cause deadlocks when we try to unwind stack from inside malloc.
2009-03-16 21:21:58 -07:00
David Mosberger-Tang
638302ed73 Rerun autoreconf. 2008-06-16 14:43:21 -06:00
Arun Sharma
ef29eade44 This patch eliminates one system call per unwind by not using the
getcontext in libc.

Also cleanup the namespace (check-name-space passes on x86_64 now).
Replace uses of offsets.h with ucontext_i.h.
Rename _x86_64_setcontext to _Ux86_64_setcontext.

TBD: Add CFI annotations for get/setcontext.

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-06-16 14:42:16 -06:00
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
David Mosberger-Tang
183d28a066 Rebuild autoconf files with autoreconf. 2008-06-16 14:30:38 -06:00
Arun Sharma
8081e82ba1 Make the linking of C++ ABI related code for exceptions optional.
The default is to have it enabled.

Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-06-16 14:28:36 -06:00
Bruna Moreira
1eddefc371 [ARM] This patch add some missing bits on ARM platform.
* src/arm/unwind_i (arm_lock, arm_local_resume): Define.
 * src/ptrace/_UPT_find_proc_info.c: Handle ARM like X86 etc.
 * tests/flush-cache.S (flush_cache): Add (dummy) ARM-version.
	ARM does need executable stack, even on Linux...

Signed-off-by: Anderson Lizardo <anderson.lizardo@indt.org.br>
Signed-off-by: Bruna Moreira <bruna.moreira@indt.org.br>
2008-04-21 13:43:18 -06:00
Bruna Moreira
6f282a00f5 [ARM] This patch fix some testsuite issues on ARM:
- Gtest-bt: like on x86/-64, the stack size passed to sigaltstack() is
  too small for ARM thus causing segmentation fault due to stack
  overflow.

- Gtest-dyn1: code size definition of dynamic function (template()) on
  testcase is too big for ARM architecture so memcpy() reads invalid
  memory causing random crashes (segmentation fault). A better
  solution would be to compile the function in a separate binary,
  mmap() it and memcpy() from it instead, so maximum size is known for
  sure.

- check-name-space.in: fix some "bashisms", it causes the script to
  fail to run on N8XX's busybox shell.

Signed-off-by: Anderson Lizardo <anderson.lizardo@indt.org.br>
Signed-off-by: Bruna Moreira <bruna.moreira@indt.org.br>
2008-04-21 13:39:11 -06:00
Paul Pluzhnikov
bb9d3dc689 [X86-64] Fix the pattern used to match signal frames.
The current pattern is too restrictive and doesn't work well on
modern glibcs.

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-04-16 08:05:49 -06:00
Daniel Jacobowitz
3842dac733 Add initial ARM and MIPS support. To support this, also enable the
reading of .debug_frame sections (used in lieu of .eh_frame sections
when they're not available).
2008-02-04 17:16:37 -07:00
Mark Wielaard
5ed2da2a40 [DWARF] Fix error return.
* src/dwarf/Gfde.c (dwarf_extract_proc_info_from_fde):
	  Return -UNW_ENOMEM.
2008-02-04 16:31:34 -07:00
David Mosberger-Tang
f5cb2c52dc 2007-12-14 Mark Wielaard <mwielaard@redhat.com>
* src/mi/Gget_reg.c (unw_get_reg): Use tdep_get_ip() when
   looking for UNW_REG_IP.
2008-01-07 15:43:42 -07:00
David Mosberger-Tang
a8be10e251 [X86] Cleanup XMM handling for x86
* Use explicit types for XMM registers
* Support full width (128 bits) access

Signed-off-by: Andrew Cagney <cagney@redhat.com>
Signed-off-by: Arun Sharma <aruns@google.com>
2008-01-07 15:41:20 -07:00
David Mosberger-Tang
32145b680d Merge ../libunwind-v0.98 2007-12-10 09:36:06 -07:00
David Mosberger-Tang
4759b8eaf8 Mark tests/perf-startup executable. Suggested by Mark Wielaard. 2007-12-10 09:35:52 -07:00
David Mosberger-Tang
79c943b922 Make tests/perf-startup executable. Suggested by Mark Wielaard. 2007-12-10 09:34:57 -07:00
David Mosberger-Tang
5ffab805cb Merge ../libunwind-v0.98
Conflicts:

	README
	configure
	configure.in
2007-11-14 16:59:14 -07:00
David Mosberger-Tang
826374cee5 Merge ../libunwind-v0.98
Conflicts:

	configure
	configure.in
	src/ia64/Ginit.c
2007-11-14 16:51:14 -07:00