Ken Werner
fb325c895e
ARM extbl cleanup.
...
Move code that does not necessarily need to reside in the ex_tables.h header
file into ex_tables.c. Add comments and remove unused code.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-24 20:44:25 -07:00
Ken Werner
cf8d5e41af
Have the ARM extbtl-parser operate on the DWARF model directly.
...
This eliminates the arm_stackframe and therefore the need to synchronize the
two models. It also clears the way for unwinding call stacks with mixed
DWARF- and extbl-frames.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-24 20:42:00 -07:00
Konstantin Belousov
04fc88fa31
Fix build and distribution on the FreeBSD.
...
Signed-off-by: Konstantin Belousov <kostikbel@gmail.com>
2011-03-24 20:41:07 -07:00
Arun Sharma
0613d4c680
Fixup trailing whitespace
...
Signed-off-by: Arun Sharma <asharma@fb.com>
2011-03-22 08:40:49 -07:00
Zachary T Welch
6a67154674
Use ARM-specific unwinding tables in unw_step
...
Uses ex_tables routines to provide a new means of unwinding the stack.
Set UNW_ARM_UNWIND_METHOD=4 to use ARM-specific unwinding tables.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-22 08:14:58 -07:00
Zachary T Welch
ffc474b8c8
Add module for parsing ARM-specific unwind tables
...
Handles lookup, extracting unwind entries, and decoding the entry
using a callback mechanism.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-22 08:14:51 -07:00
Zachary T Welch
049e2ba1b9
Add ARM signal frame detection
...
Implements a check for call to sigreturn that the kernel will have
setup before jumping to the signal handler.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-22 08:14:45 -07:00
Zachary T Welch
6a072982dd
Fix file descriptor leakage in maps_init
...
If mmap fails, be sure to close the maps file before returning an error.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-07 21:24:51 -08:00
Ken Werner
4a89b88fd3
Link libunwind-setjmp against libunwind-elf.
...
This prevents the linker from complaining about a missing symbol when
building the test-setjmp test case.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
2011-03-07 21:24:51 -08:00
Arun Sharma
516304a557
Revert "Use more convenience libraries"
...
Breaks make check on both x86 (32 and 64 bit)
This reverts commit af88cab09f
.
2011-02-01 20:37:25 -08:00
Arun Sharma
a83e96cc1c
Some entries in /proc/<pid>/maps are not ELF files, so add check
...
in elf_map_image() to ensure mapped files have a valid ELF header.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
Signed-off-by: Arun Sharma <asharma@fb.com>
2011-01-23 17:55:55 -08:00
Zachary T Welch
5007f8c794
Improve ELF valid_object() helper
...
Ensures the ELF header version is valid.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2011-01-23 17:21:04 -08:00
Zachary T Welch
af88cab09f
Use more convenience libraries
...
Eliminates obfuscating variables in favor of adding files directly
to library SOURCES. Eliminates the need for EXTRA_DIST variable.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:29:01 -08:00
Zachary T Welch
ce847afb3b
Build ELF convenience libraries
...
Rather than building the sources directly, create a library that
gets linked statically into libunwind.la and libunwind-$(arch).la.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:28:57 -08:00
Zachary T Welch
02dd6c468a
Use noinst_HEADERS for distributing .h files
...
Header files should be listed in a HEADERS automake declaration
rather than in the SOURCES.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:28:54 -08:00
Zachary T Welch
9de666d141
Simplify DWARF source handling
...
Build DWARF source files into automake convenience libraries to
eliminate duplication in arch-dependent library build rules.
Adds a configure-time check to determine whether to use them.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:28:51 -08:00
Zachary T Welch
b07829bedd
Simplify LIBRARIES and LTLIBRARIES automake rules
...
Use automake's '+=' to eliminate obfuscation.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:28:47 -08:00
Zachary T Welch
64a827603c
Simplify libunwind_setjmp automake rules
...
Eliminate redundant listing of libunwind_setjmp source files by
using automake's '+=' operator.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-29 11:28:44 -08:00
Zachary T Welch
651e9bb4fd
Add MAINTAINERCLEANFILES to Makefile.am files.
...
Ensures 'make maintainer-clean' removes files generated by autotools.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-08 09:06:09 -08:00
Zachary T Welch
cf6a998796
Fix memory leak in ARM unw_create_addr_space()
...
Frees newly created address space memory in the event of a failure
caused by an endian mismatch.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
2010-11-08 09:03:34 -08:00
Sven Neumann
7909c71e5d
[PATCH] Add files to EXTRA_DIST so that 'make dist' works again
2010-08-04 14:26:39 -07:00
Arun Sharma
99e60be5a4
Fix the page boundary crossing bug.
...
Signed-off-by: Jason Evans <jasone@canonware.com>
2010-06-08 14:44:07 -07:00
Konstantin Belousov
b3757e7792
Restore the linking when --enable-debug-frame is not specified
2010-05-29 01:07:40 +03:00
Arun Sharma
00aed9631b
Add an experimental and optional frame chain unwinding for ARM
...
The environment variable UNW_ARM_UNWIND_METHOD controls the unwind method.
1 - debug_frame unwinding
2 - frame chain unwinding,
3 - 1 & 2 (default))
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:28:44 -07:00
Arun Sharma
46e10c5abe
Support .debug_frame based unwinding in _UPTi_find_unwind_table()
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:25:41 -07:00
Arun Sharma
546463d1e7
Factor out and export dwarf_find_debug_frame() function
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:21:30 -07:00
Konstantin Belousov
298e575f2c
Fix freebsd build
2010-05-17 21:57:59 +03:00
Arun Sharma
8ee7b1762e
Add ip argument to _UPTi_find_unwind_table.
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-15 12:15:49 -07:00
Arun Sharma
1787a2fd28
Add path and pathlen arguments to tdep_get_elf_image()
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-15 12:14:09 -07:00
Arun Sharma
b115ab645a
Ignore separate debug files which contain a .gnu_debuglink section.
...
Current implementation fails to find separate debug symbols when
.gnu_debuglink is set to the same name of the target ELF basename
(e.g. "libc.so.6" for /lib/libc.so.6). This patch fixes this by ignoring
separate debug files that contain a .gnu_debuglink section.
It also fixes a small typo in a related Debug() line.
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-15 11:57:35 -07:00
Arun Sharma
66b7335ff3
Adds missing register offsets for ARM
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-15 11:56:37 -07:00
Konstantin Belousov
e1493dc011
Merge branch 'master' into freebsd
2010-05-03 17:59:50 +03:00
Arun Sharma
aa3bb307a3
Fix merge errors
2010-05-03 07:47:41 -07:00
Konstantin Belousov
c84005e9c8
Add unwind annotations for freebsd/x86 getcontext.S.
...
Rearrange the code to put the slow branch out of main body,
and pinch the fixed amount of stack space to be able to annotate
the code.
2010-05-02 17:06:24 +03:00
Konstantin Belousov
b73c618a31
Merge branch 'master' into freebsd
2010-05-02 16:29:02 +03:00
Arun Sharma
0176c4f723
Merge commit 'fdc534ccb05d1e6c0438345d292203343a811701'
2010-04-28 17:27:38 -07:00
Arun Sharma
fdc534ccb0
Silence a compiler warning
2010-04-28 16:38:27 -07:00
Arun Sharma
215afa30b7
Add unwind descriptors to getcontext.S
2010-04-28 16:32:30 -07:00
Arun Sharma
c140d8598d
Undo commit f252f5ff4e
for now.
...
Seems to introduce a couple of test breakages.
2010-04-25 09:44:59 -07:00
Arun Sharma
d3c4bc4295
Fix a compiler warning
2010-04-25 09:24:40 -07:00
Lassi Tuura
045c55b2a2
Be conservative in all pointer derefrences by default.
...
Since most people can't completely control their compile or runtime
environment, it becomes hard to ensure that unwind data is perfect.
2010-04-24 19:24:49 -07:00
Lassi Tuura
d4fbc8326a
Detect end of stack in x86-64 rbp-based walk.
2010-04-24 19:22:08 -07:00
Lassi Tuura
92cc7fd78a
Remove obsolete code for 'old way' of handling x86-64 signal frames.
2010-04-24 19:21:52 -07:00
Lassi Tuura
f252f5ff4e
Recognise and unwind through PLT.
2010-04-24 19:21:26 -07:00
Lassi Tuura
a9dce3c06e
During the stack unwinding process, the return address points to
...
the instruction after the call for a normal frame. libunwind uses
IP-1 to lookup unwind information. However, this is not necessary for
interrupted frames such as signal frames (or interrupt frames) in
the kernel context.
This patch handles both cases correctly.
Based on work by Mark Wielaard <mwielaard@redhat.com>
2010-04-24 19:16:09 -07:00
Lassi Tuura
4c553ceb2c
Identify end-of-stack by undefined return address location.
2010-04-24 17:18:31 -07:00
Lassi Tuura
dac2d001af
Identify signal frames by augmentation attribute.
2010-04-24 17:18:26 -07:00
Lassi Tuura
250382c56d
Use wider format when printing addresses in debug format.
2010-04-24 17:18:19 -07:00
Konstantin Belousov
58f290e1ce
Add config.h.
2010-04-21 15:43:05 +03:00
Konstantin Belousov
2709abc883
msync() also may be called on unaligned address.
2010-04-21 15:33:37 +03:00
Konstantin Belousov
4454413242
Account for possible unaligned access.
2010-04-21 15:18:02 +03:00
Konstantin Belousov
ee99dbec87
Use mincore instead of msync when available
2010-04-20 17:45:18 +03:00
Konstantin Belousov
75b76d1f45
Save FPU context for i386.
2010-04-17 00:18:33 +03:00
Konstantin Belousov
b1c68e060c
Arrange the FreeBSD ucontext offset definitions in ascending order.
2010-04-17 00:17:58 +03:00
Giuseppe Scrivano
a67654e86f
[PATCH] Reduce scope of the eh_frame_end local variable
2010-04-14 12:11:29 -07:00
Arun Sharma
1d9c5a356d
Fix compiler warnings on x86_64 Linux
2010-04-14 12:01:37 -07:00
Arun Sharma
5a70fab451
Fix compiler warnings on x86 Linux
2010-04-14 18:54:20 -07:00
Konstantin Belousov
127acf8e97
Use correct offset name and value for ucontext offset in struct sigframe
2010-04-14 12:15:05 +03:00
Konstantin Belousov
0d311ea161
Add abort() after sigreturn calls
2010-04-14 12:10:34 +03:00
Konstantin Belousov
34b064bf22
Fix typo.
2010-04-14 12:10:14 +03:00
Konstantin Belousov
1e77c66a51
Fix FreeBSD/x86_64 sigcontext restore
2010-04-14 12:04:28 +03:00
Konstantin Belousov
61f4345a9e
Fix an issue where len was too short for sysctl to recieve the process
...
vm map.
2010-04-13 15:33:11 +03:00
Konstantin Belousov
02d0cb6f71
Do not save FPU context on x86 for now; XMM save area must be 16-bytes aligned
2010-04-13 14:20:22 +03:00
Konstantin Belousov
ae7eebb839
Separate getcontext implementation for x86
2010-04-13 14:11:39 +03:00
Konstantin Belousov
66e49bdd41
Save %eax for i386
2010-04-13 13:55:23 +03:00
Konstantin Belousov
5a7407dd94
Merge branch 'master' into freebsd
2010-04-12 22:34:24 +03:00
Arun Sharma
c2d78041cc
GCC compatibility on x86 for C++ exception handling
2010-04-12 12:08:43 -07:00
Giuseppe Scrivano
eb8857a324
Silence a compiler warning
2010-04-12 10:45:31 -07:00
Konstantin Belousov
843190597c
Remove unneeded include.
...
Noted by: Arun Sharma
2010-04-11 22:07:31 +03:00
Konstantin Belousov
21f0e90ce8
Rework 69001646fa
, store sigframe address into sigcontext_addr.
2010-04-11 22:01:08 +03:00
Konstantin Belousov
42bc15c72c
Provide proper register offsets in the gregset for FreeBSD/i386
2010-04-11 19:18:07 +03:00
Konstantin Belousov
f10f851916
Add slightly more debug output
2010-04-11 14:59:36 +03:00
Konstantin Belousov
e33fa9f73c
Ditch using the libutil, it is not async-signal safe.
2010-04-11 14:36:24 +03:00
Konstantin Belousov
69001646fa
Store the ucontext_t pointer to properly handle resume across signal frames.
2010-04-11 13:48:14 +03:00
Konstantin Belousov
f01a043712
Convince gcc that x86_64_sigreturn cannot return, as declared.
2010-04-11 13:47:28 +03:00
Konstantin Belousov
a688d6c4c9
Remove unused variable.
2010-04-10 18:51:17 +03:00
Konstantin Belousov
dd1c7b6c1a
Declare mxcsr as XMM
2010-04-10 18:48:35 +03:00
Konstantin Belousov
53f7e650e0
For FreeBSD/i386, add real offset values for FPU context fields.
2010-04-10 18:48:16 +03:00
Konstantin Belousov
6f7b335e89
Add my copyrights to several files that contain essential modifications
2010-04-10 01:42:26 +03:00
Konstantin Belousov
9fe75c7d93
Save FPU state when saving context. For XMM-capable CPUs only (for now).
2010-04-10 00:47:08 +03:00
Konstantin Belousov
117ccd246d
Move all XMM offsets into one place.
2010-04-10 00:46:51 +03:00
Konstantin Belousov
f6546e27ed
Implement the base code to fetch x86/xmm state on x86. Offsets to be filled.
2010-04-10 00:40:39 +03:00
Konstantin Belousov
2c50c95cde
Correct arguments for Debug().
...
Shut up warning by using the cast.
2010-04-10 00:38:54 +03:00
Arun Sharma
d1676f192e
Fix warnings on 32 bit x86
2010-04-08 03:12:05 -07:00
Arun Sharma
caa6095aec
Fix compile errors on Linux
2010-04-07 19:59:06 -07:00
Konstantin Belousov
979af4502f
Move local_resume to os-specific file.
2010-04-05 23:00:27 +03:00
Konstantin Belousov
0dbeeeb08d
Move uc_addr to os-specific file
2010-04-05 22:42:23 +03:00
Konstantin Belousov
79d012348d
Move get_scratch_loc() to os-specific file.
2010-04-05 22:22:55 +03:00
Konstantin Belousov
aeee03dd74
Reduce diffs to master
2010-04-05 16:28:46 +03:00
Konstantin Belousov
ccc0ae665b
More move of osdep code.
2010-04-05 16:25:36 +03:00
Konstantin Belousov
a40641f326
Trim spaces
2010-04-05 16:25:20 +03:00
Konstantin Belousov
fd88f41818
Merge remote branch 'origin/master' into freebsd
...
Conflicts:
src/x86/Gis_signal_frame.c
src/x86/Gstep.c
src/x86_64/Gis_signal_frame.c
src/x86_64/Gstep.c
2010-04-05 16:14:50 +03:00
Arun Sharma
8e53e62db9
Refactor os specific code for x86 (both 32 and 64 bit).
...
Move Linux specific code into ${arch}/Gos-linux.c
2010-04-04 16:46:13 -07:00
Konstantin Belousov
980ccffe9e
Merge remote branch 'origin/master' into freebsd
...
Conflicts:
src/x86/Gis_signal_frame.c
2010-04-04 12:44:10 +03:00
Arun Sharma
2b7ca45acc
Fix handling of SA_SIGINFO frames on 32 bit x86
...
Submitted by: Arne de Bruijn <mail@arnedebruijn.nl>
2010-04-03 16:49:18 -07:00
Konstantin Belousov
bd2798805a
Reformat os-freebsd.c.
2010-04-03 23:29:28 +03:00
Konstantin Belousov
5715d912f4
Make setjmp/longjmp work at least on FreeBSD/amd64.
...
FreeBSD-supplied setjmp() saves incremented stack pointer into jmpbuf.
I have no idea whether siglongjmp ever worked on amd64, since
UNW_NUM_EH_REGS == 2 and abort at siglongjmp.c:81 is firing.
2010-04-03 19:02:43 +03:00
Konstantin Belousov
31ece3eaa1
Fix setcontext for amd64 freebsd
2010-04-03 18:28:31 +03:00
Konstantin Belousov
9bb9c972e6
Merge with origin/master
2010-03-31 16:01:38 +03:00
Arun Sharma
6203f1cd0f
Cleanup a mapped elf image.
...
Without this, we end up with mmap leaks. Thanks to Humberto Abdelnur
for suggesting this.
2010-03-26 15:54:14 -07:00