1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-12-13 07:53:41 +01:00
Commit graph

333 commits

Author SHA1 Message Date
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
1227c41d20 Disable C++ exception support by default on x86. 2009-03-16 21:57:08 -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
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
David Mosberger-Tang
183d28a066 Rebuild autoconf files with autoreconf. 2008-06-16 14:30:38 -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
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
David Mosberger-Tang
79c943b922 Make tests/perf-startup executable. Suggested by Mark Wielaard. 2007-12-10 09:34:57 -07:00
Jan Kratochvil
57e5696463 Mark Wielaard <mwielaard@redhat.com> writes:
On some systems executable stacks are denied. Since libunwind and the
tests don't actually need executable stacks this patch marks all
assembly files as not needing it.

The original patch comes from frysk:

2007-04-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

    * src/hppa/getcontext.S, src/hppa/setcontext.S, src/hppa/siglongjmp.S,
    src/ia64/Ginstall_cursor.S, src/ia64/Linstall_cursor.S,
    src/ia64/dyn_info_list.S, src/ia64/getcontext.S, src/ia64/longjmp.S,
    src/ia64/setjmp.S, src/ia64/siglongjmp.S, src/ia64/sigsetjmp.S,
    src/ppc64/longjmp.S, src/ppc64/siglongjmp.S, src/x86/longjmp.S,
    src/x86/siglongjmp.S, src/x86_64/longjmp.S, src/x86_64/setcontext.S,
    src/x86_64/siglongjmp.S: Stack should be non-executable, for SELinux.

I added a couple more markers for new files in current libunwind.

Before this patch you would get the following on selinux enabled
systems without allow_exec_stack: error while loading shared
libraries:

libunwind.so.7: cannot enable executable stack as shared object
	requires: Permission denied

After the patch that error disappears and all test results are similar
to the results on systems without executable stack protection.
2007-10-01 08:35:01 -06:00
Jose Flavio Aguilar Paulino
4499bb29a6 [PPC32] First check-in to add preliminary support for Linux/PPC32. 2007-09-12 21:52:25 -06:00
Jose Flavio Aguilar Paulino
32e2187fab [PPC64] Get "make check" to work on PPC64 Linux. Add a README entry
describing the expected results.
2007-08-27 09:11:37 -06:00
David Mosberger-Tang
25739eec86 [IA64] Fix ia64-test-setjmp.c. With MAP_SHARED the kernel will try to
find a 1MiB-aligned region, which isn't what we want here.
2007-08-09 16:26:58 -06:00
David Mosberger-Tang
297315675e Recreate autoconf files. 2007-08-06 20:27:29 -06:00
Jose Flavio Aguilar Paulino
a1e7ee4836 Just a small patch to build system, it helps if you build in a power
without altivec.
2007-08-06 20:23:42 -06:00
David Mosberger-Tang
fad8b04c9f Rebuilt configure and Makefile.in files. 2007-08-06 19:56:28 -06:00
Jose Flavio Aguilar Paulino
b33021e4b2 Add PPC64 support. 2007-08-02 09:59:43 -06:00
Nurdin Premji
0fa6b58f5d 2007-03-20 Nurdin Premji <npremji@redhat.com>
* tests/mapper.c: Change alarm timeout to 80, as per discussion
	  at:
	http://lists.gnu.org/archive/html/libunwind-devel/2007-03/msg00005.html
2007-05-16 13:32:58 -06:00
Jan Kratochvil
565ffdb75c 2007-04-05 Jan Kratochvil <jan.kratochvil@redhat.com>
* tests/ia64-test-setjmp.c (doit): New forward declaration.
	(doit_pointer): New function pointer variable initialized to DOIT.
	(doit): Self-call made by an unoptimizable volatile indirect call.
2007-05-16 13:30:12 -06:00
David Mosberger-Tang
5f3d29562d * tests/test-async-sig.c: Move "const" definition to separate area to keep
things a bit neater looking.
* tests/test-ptrace.c: Likewise.

Signed-off-by: David Mosberger-Tang <dmosberger@gmail.com>
2007-05-16 13:19:46 -06:00
Jan Kratochvil
a72abd4e46 2007-04-05 Jan Kratochvil <jan.kratochvil@redhat.com>
* tests/test-ptrace.c (target_pid_kill): New function.
        (target_pid, main): TARGET_PID made static, for target_pid_kill ().
        (main): Register target_pid_kill () for atexit(3).

2007-04-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* tests/Gtest-dyn1.c, tests/test-async-sig.c, tests/test-ptrace.c:
	Fixed lockups on broken libunwind (as ppc64 is).

2007-03-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* tests/test-async-sig.c (do_backtrace): Limit maximum backtrace depth
	to 100 iterations; it workarounds FC6 DWARF-broken glibc.

2006-12-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

        * tests/test-ptrace.c (main): Check for too many unexpected child
        signals, such as the common `SIGSEGV'.
2007-05-16 13:16:31 -06:00
David Mosberger-Tang
7923ae31a0 Re-run aclocal and automake to update Makefiles so new files (e.g.,
x86_64/gen_offsets.c) get distributed.
2007-04-10 20:35:15 -06:00
David Mosberger-Tang
9e927e7087 Restore tests/perf-startup.
Another file that got wiped out during the Bitkeeper->CVS->GIT translation.
2006-07-26 14:57:51 -06:00
David Mosberger-Tang
ca69fee8bb Merge ../libunwind-v0.98
Conflicts:

	include/dwarf_i.h
	include/x86/jmpbuf.h
	include/x86_64/jmpbuf.h
	src/hppa/init.h
	src/mi/Gget_fpreg.c
	src/mi/Gset_fpreg.c
	src/mi/strerror.c
2006-07-25 21:41:43 -06:00
David Mosberger-Tang
cbd8648b33 Make libunwind compile with recent versions of GAS.
Don't test read-only access to F0 and F1 registers --- according to
the SCRA manual, those locations cannot even be expressed in SPILL
descriptors and newer versions of GAS (as well as IAS) won't accept
.spillreg directives targeting those registers.
2006-07-25 21:34:32 -06:00
David Mosberger-Tang
f176ad6fc6 Bring git v0.98.5 tree in sync with released v0.98.5.
Sadly, the conversion from Bitkeeper -> CVS -> git wasn't perfect.  Or
so it seems.
2006-07-25 21:32:28 -06:00
hp.com!davidm
d3d722fb0a Include "tdep-ia64/rse.h" instead of "ia64/rse.h".
(ARRAY_SIZE): New macro.

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
da5e9ba297 (ARRAY_SIZE): Rename from NELEMS.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
4f8a2291b4 Fix merge-conflict.
2005/05/17 14:14:23-07:00 hp.com!davidm
(check_static_to_scratch): Check contents of AR.EC.

(Logical change 1.293)
2005-05-17 21:28:19 +00:00
hp.com!davidm
3d881cd0cb (save_static_to_scratch): Initialize ar.ec.
(Logical change 1.293)
2005-05-17 21:28:19 +00:00
hp.com!davidm
e5426f4221 Auto merged
2005/05/17 06:10:13-07:00 hp.com!davidm
(save_pr): Declare
(check_pr): New function.
(all_funcs): Mention save_pr/check_pr.
(random_word): New function.
(check_pr): Likewise.
(check_rotate_regs): Call check_pr().
(run_check): Use random_word() instead of random() to get a word full of
	pseudo-random bits.

(Logical change 1.292)
2005-05-17 13:24:49 +00:00
hp.com!davidm
05feedabea (rotate_regs): Load up "pr" with first value. Preserve p63 across rotation.
(save_pr): New function.

(Logical change 1.292)
2005-05-17 13:24:49 +00:00
hp.com!davidm
b0406d0a2a (doit): Set stack-size attribute to increase likelihood that we're able
to create NTHREADS threads.  With NTHREADS==128 and the stack-size
	rlimit set to "unlimited", the test is otherwise likely to fail because
	on ia64 it will default to using 32MB of stack per thread.

(Logical change 1.291)
2005-05-05 09:23:46 +00:00
mostang.com!davidm
a5e8408d47 Include <string.h> to get memset() declared.
(consume_some_stack_space): New function.
(main): Call consume_some_stack_space() before establishing the
	rlimit.  Otherwise, stack-expansion may bump into
	the address-space rlimit.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
6ef1640a5f (main): Fix a typo in the argument-checking code.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
d9445c1f46 (handler): get_bsp() returns an integer, not a pointer.
(main): Do some silly FP computations.  On x86-64, this ensures
	that the signal handler invocations will always be called
	with the FPU-state saved as well.  Without this, the first
	signal was invoked without FPU-state, the second with, causing
	a spurious failure.

2004/11/17 02:06:25-08:00 mostang.com!davidm
(get_bsp): New function.
(handler): Clean up & check for error returns.
(main): Also fail if we didn't get SIGUSR2.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
3ff39e9fc9 (flush_cache): Provide dummy implementation for HPPA.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
1ee6b0ac74 (STACK_SIZE): SIGSTKSZ is also ridiculously small on x86-64 (at least
for SuSE LES 9) so use 128KB instead.
(do_backtrace): Also print backtrace obtained via backtrace().
(foo): Remove backtrace() call---now done in do_backtrace().

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
02c9034eb2 Tweak such that GCC v4 doesn't optimize it to the point where the
test fails (it managed to unravel the recursion in f1).

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
2f63c6c54e Regenerate.
2004/12/15 15:38:34-08:00 hp.com!davidm
Regenerate.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
b09eae1203 On PA-Linux, allow for _Uhppa_setcontext symbol.
2004/12/02 18:37:47-08:00 hp.com!davidm
Allow _U${plat}_get_elf_image symbol on HPPA, too.

2004/12/02 00:40:45-08:00 mostang.com!davidm
Add support for hppa.

2004/11/30 22:44:47-08:00 mostang.com!davidm
Add rules for x86-64.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
30dec34c3a Include "config.h" and <ia64intrin.h> if we have them.
2004/10/19 23:11:07-07:00 mostang.com!davidm
(got_here): New global variable.
(raise_exception): Fix off-by-2 error so that we _really_ step
	to the outermost a() frame.
(get_bsp): New function.
(__builtin_ia64_bsp): Remove.
(a): Print stack and bsp addresses as we recurse.
     When resuming execution in outermost a() frame (n==depth),
     clear "result" and set "got_here" so we know we landed in
     the right place.
(main): Don't accept arguments that cause "depth" to be < 1.
	When returning from a(), also check "got_here".  If
	the check failed, print result, got_here, and nerrors
	for diagnostic purposes.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
05246dbab7 Fix missing NELEMS -> ARRAY_SIZE rename.
2005/02/23 13:10:05-08:00 mostang.com!davidm
Adjust for "ia64_rse" to "rse" prefix change.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
95c9a4a21e Fix merge conflict.
2004/12/02 23:51:00-08:00 hp.com!davidm
(do_backtrace): Also print the symbol offset.  Increase nesting-level
	tolerance to 64 so we can test programs with deeply nested
	call-chains without triggering spurious warnings.


2004/11/30 22:44:47-08:00 mostang.com!davidm
(do_backtrace): Print IP if unw_get_proc_info() fails.

2004/11/23 18:01:09-08:00 mostang.com!davidm
(do_backtrace): Fix "start_ip might be used uninitialized" warning.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
83b02fa05b Add missing include of <string.h> to get strerror() declared.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
c0e81195b7 (doit): Fail gracefully if we fail to create all NTHREADS threads.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
9fa361ed37 (bar): Fix missing initialization warned on by GCC v4.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
hp.com!davidm
f60827dc5c (LIBUNWIND_local): New macro.
(LIBUNWIND): Mention $(LIBUNWIND_local).
(test_setjmp_LDADD): Likewise.
(ia64_teset_setjmp_LDADD): Likewise.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00