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
Arun Sharma
7bd264e292
Fix up what looks like an unintentional semi colon.
...
Thanks to Lassi Tuura for noticing it.
2010-03-23 10:37:21 -07:00
Konstantin Belousov
8a75ba971a
Signal trampoline on amd64 for ia32 is special.
2010-03-13 21:26:50 +02:00
Konstantin Belousov
e51429280b
Handle error return from is_signal_frame
2010-03-13 20:31:12 +02:00
Konstantin Belousov
e9cd30040e
Move x86 porting further.
2010-03-13 20:28:12 +02:00
Konstantin Belousov
71c4161247
Remove extra empty line
2010-03-13 18:33:22 +02:00
Arun Sharma
f8a15e9679
Fix a couple of test breakages on x86_64
...
setcontext() now restores the signal mask. Also remove a check
in the test that doesn't seem to be valid.
2010-03-10 22:52:12 -08:00
Konstantin Belousov
a6b23dcb0c
Add partial implementation for is_signal_frame for i386.
2010-03-11 00:50:40 +02:00
Konstantin Belousov
54f8b2fdbe
Fill real offsets for freebsd
2010-03-11 00:02:24 +02:00
Konstantin Belousov
47dcc89457
Remove unneeded braces
2010-03-10 23:51:59 +02:00
Konstantin Belousov
bb41eba56c
FreeBSD/i386 port. get/setcontext need further work
2010-03-09 18:01:25 +02:00
Konstantin Belousov
9f79621a29
Enough for now for ptrace backend
2010-03-08 20:55:50 +02:00
Konstantin Belousov
752ce15c4f
Preliminary version of freebsd syscall unwinder
2010-03-08 19:45:54 +02:00
Konstantin Belousov
c1b1c10cfc
Fix memory leak on error
2010-03-08 18:48:27 +02:00
Konstantin Belousov
89e1df2d32
Fix _UI_siglongjmp_cont name
2010-03-08 15:55:29 +02:00
Konstantin Belousov
0f1c0f5f66
Fix resume.
2010-03-08 15:51:39 +02:00
Konstantin Belousov
43ed5b3e56
Add required assembler magic.
2010-03-08 00:57:50 +02:00
Konstantin Belousov
5f5b1a5daa
tdep_get_elf_image should be public
2010-03-08 00:52:26 +02:00
Konstantin Belousov
093855f12a
Remove unneeded includes of sys/types.h
2010-03-08 00:25:22 +02:00
Konstantin Belousov
53095e6b3e
Code for resume
2010-03-07 23:43:07 +02:00
Konstantin Belousov
c64723835c
Support walk over freebsd sigframes
2010-03-07 21:53:01 +02:00
Konstantin Belousov
d0d5f9979b
Correct rsp offset
2010-03-07 21:20:43 +02:00
Konstantin Belousov
efd0655ff4
Silence warning about symbol redefinition.
2010-03-07 17:27:41 +02:00
Konstantin Belousov
d7eea91448
Cast caddr_t argument for ptrace
2010-03-07 12:27:03 +02:00
Konstantin Belousov
200147d0f2
Handle fpu state
2010-03-06 23:22:46 +02:00
Konstantin Belousov
62218e10eb
Provide proper offsets for gregs in freebsd ucontext. Note that fp regs are not handled.
2010-03-06 22:33:11 +02:00
Konstantin Belousov
63ae8ca894
Correct assignments, remove unneeded includes.
2010-03-06 22:32:11 +02:00
Konstantin Belousov
4de09a9c15
Implement freebsd-specific vm walker.
2010-03-06 18:53:27 +02:00
Konstantin Belousov
81f2de0083
Add implementation of unw_is_signal_frame for freebsd.
2010-03-06 18:08:44 +02:00
Konstantin Belousov
1ba7599250
Add FreeBSD stub.
2010-03-06 17:54:51 +02:00
Konstantin Belousov
2646e0fde8
Add freebsd stub
2010-03-06 17:51:00 +02:00
Konstantin Belousov
3eabce18b1
Include sys/types.h when needed.
2010-03-06 16:43:39 +02:00
Konstantin Belousov
29c110265f
_NSIG.
2010-03-06 16:43:18 +02:00
Konstantin Belousov
c7ffca11ae
FreeBSD way to name registers.
2010-03-06 16:35:32 +02:00
Konstantin Belousov
78cb28b4a6
PT_CONTINUE.
2010-03-06 16:20:47 +02:00
Konstantin Belousov
d4a4ddd23d
Provide access to the general regs on FreeBSD.
2010-03-06 16:17:21 +02:00
Konstantin Belousov
cf6ae3548f
Code to read/write user memory on FreeBSD
2010-03-06 15:04:56 +02:00
Konstantin Belousov
d11456ffbf
Code to read/write fpregs on FreeBSD
2010-03-06 14:55:11 +02:00
Konstantin Belousov
905034ce72
Initial attempt at the build infrastructure for FreeBSD.
2010-03-06 00:41:37 +02:00
Arun Sharma
3468a6b33d
Change MS_SYNC to MS_ASYNC
...
Hopefully this makes the address validation a bit cheaper.
2010-02-23 10:35:47 -08:00
Stefan Demharter
752076789f
Be gcc compatible for C++ exceptions on 32 bit platforms.
2010-02-21 22:45:08 -08:00
Arun Sharma
5a1d3c6fd7
Remove bogus check on scan_string which is guaranteed to fail every time.
2010-02-21 22:35:26 -08:00
Paul Pluzhnikov
54752e0df0
Implement getcontext for x86
...
Greetings,
Attached patch implements getcontext for x86.
Motivation is the same as:
http://lists.nongnu.org/archive/html/libunwind-devel/2008-06/msg00009.html
This also fixes check-name-space on x86.
Tested on Linux/86 with no new failures.
Thanks,
--
Paul Pluzhnikov
2009-12-23 09:59:52 -08:00
Paul Pluzhnikov
0cf76ed0b5
Check for NULL when validating addresses
...
This is rather on the obvious side.
While doing strace on an executable using libunwind, I noticed a
lot of:
msync(0, 1, MS_SYNC) = -1 ENOMEM (Cannot allocate memory)
Since we know that the first page isn't mapped (or at least doesn't
contain the data we are looking for), we can eliminate all such
msync calls.
Tested on Linux/x86_64 with no regressions.
2009-12-01 13:59:45 -08:00
Paul Pluzhnikov
9626d66019
Fix a race condition in dwarf unwinding.
...
Original code was accessing rs_cache memory without holding a lock
in some cases. If there was sufficient cache pressure, entry being
accessed may be overwritten by another thread, resulting in a data
race.
We now make a thread local copy of the data, before releasing the
lock. If we end up supporting UNW_CACHE_PER_THREAD properly
in the future, this memcpy should be unnecessary.
2009-11-24 15:18:48 -08:00
Paul Pluzhnikov
2648a77f04
Simplify control flow
...
Greetings,
Attached patch gets rid of additional unnecessary branch (rs_get_cache
can not return NULL unless caching_policy is UNW_CACHE_NONE), gets rid of
goto's, and makes apply_reg_state (major CPU consumer) execute with cache
lock not held (before the patch, apply_reg_state was called with lock held
for newly-inserted entries, but not for found-in-cache entries).
Tested on Linux/x86_64 with no regressions.
Thanks,
--
Paul Pluzhnikov
2009-11-20 12:04:13 -08:00