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

2929 commits

Author SHA1 Message Date
Konstantin Belousov
3b026a7ed8 Fix i386 distinctions between freebsd and linux for mcontext. 2010-03-10 23:51:09 +02:00
Konstantin Belousov
bb41eba56c FreeBSD/i386 port. get/setcontext need further work 2010-03-09 18:01:25 +02:00
Konstantin Belousov
c61e0b932c Add sys/types.h for x86. 2010-03-09 17:37:52 +02:00
Konstantin Belousov
71cbdc697f Provide real values for jmpbuf offsets for FreeBSD 2010-03-08 21:49:38 +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
4b3ca293bf Fix PT_SYSCALL ignoring of ip 2010-03-08 17:01:31 +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
ad932154a6 Port test-ptrace 2010-03-08 00:50:50 +02:00
Konstantin Belousov
093855f12a Remove unneeded includes of sys/types.h 2010-03-08 00:25:22 +02:00
Konstantin Belousov
64b5391b7b Include sys/types.h once 2010-03-08 00:24:32 +02:00
Konstantin Belousov
da357e3c2e Revert "sys/types.h"
This reverts commit 5976f1a5b3.
2010-03-08 00:20:23 +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
59d38aaccd Properly handle -ldl and -lutil 2010-03-07 12:46:05 +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
5976f1a5b3 sys/types.h 2010-03-06 17:47:26 +02:00
Konstantin Belousov
d7f5141075 MAP_ANONYMOUS 2010-03-06 16:46:52 +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
8ccebc9307 MAP_ANONYMOUS 2010-03-06 16:23:24 +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
46ea10680d Update documentation on building from git 2010-03-02 21:18:57 -08: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
890a630d76 Fix tests/Gtest-concurrent.c to test all caching policies
Greetings,

Attached patch is rather on the obvious side: setting caching policy and
than doing nothing is pointless; we'd better acutally test that it works!

Tested on Linux/x86_64.

Thanks,
--
Paul Pluzhnikov
2009-11-24 11:12:49 -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
Paul Pluzhnikov
f958b9dc4f Get rid of some bogus checks.
Greetings,

Attached patch is rather on the obvious side:
- rs1 can't be NULL since it's assigned on previous line
- rs_new never returns NULL, and if it ever did, we'd crash on memcpy that
  preceeds the NULL check.

Tested on Linux/x86_64 with no regressions.

Thanks,
--
Paul Pluzhnikov
2009-11-20 11:40:05 -08:00