History log of /external/libunwind/src/x86_64/Ginit_local.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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