f4a8df5f4f338f1a12c25213227e98b34b42447f |
|
08-Mar-2014 |
Christopher Ferris <cferris@google.com> |
Fix maps caching for local processes. It is possible for the map to change while running libunwind. For example, if lots of threads are doing local unwinds at the same time. Allow the cached map to regenerate when it detects this case. Included in this change is a refactor of all of the os code so that it can also be used to do caching. This is a prelude to being able to attempt to push the code upstream. Also, this moves the code back closer to the original upstream code. Hopefully, this will allow me to upstream all of these changes. Change-Id: Ia219fa61e16e36416133bc95b1dd2161bd5b8ff7
/external/libunwind/src/x86_64/Ginit_local.c
|
0996405de25a3aab5045d20803c8f0a5441d0c57 |
|
01-Feb-2014 |
Christopher Ferris <cferris@google.com> |
Fix memory corruption bug. There are two problems, some of the init code needs the map created before the init function since it does a verify check during init. The second problem is that the local addr space seems to change for reasons I don't understand, so it's necessary to init the map list when doing a unw_cursor init. Bug: 12852152 Change-Id: I32246d7c5adf7e24192868cb32a8c2fdc53c12f0
/external/libunwind/src/x86_64/Ginit_local.c
|
5d0f376b08126b51a001d7cdfba1ec4e0d644f54 |
|
21-Sep-2012 |
Tommi Rantala <tt.rantala@gmail.com> |
Invert tdep_init() flag logic Invert the flag that signals that tdep_init() was called, to move the symbol from data to BSS.
/external/libunwind/src/x86_64/Ginit_local.c
|
ae5c1f2adf4da04235d87d024d4d942c01b2b447 |
|
18-Apr-2011 |
Lassi Tuura <lat@cern.ch> |
Performance optimisations for fast trace. Insert static branch prediction predicates in useful places and avoid unnecessary code in the hottest paths. Bypass unnecessary indirect calls, in particular to access_mem(), when known to be safe.
/external/libunwind/src/x86_64/Ginit_local.c
|
9e98f15e9aee12e67cd5956d06ccb559f6a06213 |
|
19-Mar-2011 |
Lassi Tuura <lat@iki.fi> |
Fast back-trace for x86_64 for only collecting the call stack. Adds new function to perform a pure stack walk without unwinding, functionally similar to backtrace() but accelerated by an address attribute cache the caller maintains across calls.
/external/libunwind/src/x86_64/Ginit_local.c
|
045c55b2a296988c16a4c1b90f3d8b7e8b78752b |
|
25-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
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.
/external/libunwind/src/x86_64/Ginit_local.c
|
a9dce3c06e6ffcb83957e734d960505415118f00 |
|
25-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
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>
/external/libunwind/src/x86_64/Ginit_local.c
|
649f1fb3449a65dd0626a709432d8b02a7c56bbc |
|
16-Jun-2008 |
Arun Sharma <arun.sharma@google.com> |
[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>
/external/libunwind/src/x86_64/Ginit_local.c
|
f576cce7480d6acee537cecfeb5530187e50f785 |
|
26-Aug-2004 |
hp.com!davidm <hp.com!davidm> |
Drop debug-level for function-trace to 1. (Logical change 1.257)
/external/libunwind/src/x86_64/Ginit_local.c
|
a766efd844260866e0d216f6eeef87f4593f60b2 |
|
19-Aug-2004 |
ibm.com!masbock <ibm.com!masbock> |
(Logical change 1.249)
/external/libunwind/src/x86_64/Ginit_local.c
|
58e37267beb93d9ea5cb4da403f503a5aa4d842d |
|
19-Aug-2004 |
ibm.com!masbock <ibm.com!masbock> |
Initial revision
/external/libunwind/src/x86_64/Ginit_local.c
|