History log of /external/libunwind/src/x86_64/Gstash_frame.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d1c383c5bb03420decf5cf789cf14ab144b0720d 10-Apr-2014 Christopher Ferris <cferris@google.com> Fix all warnings, and make warnings errors.

Change-Id: Ia2039922b55891551b1de0f0c281c266db6ee219
/external/libunwind/src/x86_64/Gstash_frame.c
cf2f3d3b755d3374cc2f77973339c44c18057130 02-Dec-2011 Arun Sharma <asharma@fb.com> Correct the inverted check

Typo when manually applying the previous commit.
/external/libunwind/src/x86_64/Gstash_frame.c
2f328202ee19a68f4fc99d2cea169407026a70ed 02-Dec-2011 Arun Sharma <asharma@fb.com> Fix a compiler warning

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
/external/libunwind/src/x86_64/Gstash_frame.c
1010880548589685a27b8f63ef54a3ea78e052fc 28-Nov-2011 Arun Sharma <asharma@fb.com> Address x86_64 crashes when using sigaltstack

The crashes were tracked down to f->rpb_cfa_offset being incorrect.

The problem is that {rsp,rbp}_cfa_offset only have 15 bits, but for
SIGRETURN frame they are filled with:

// src/x86_64/Gstash_frame.c

f->cfa_reg_offset = d->cfa - c->sigcontext_addr;
f->rbp_cfa_offset = DWARF_GET_LOC(d->loc[RBP]) - d->cfa;
f->rsp_cfa_offset = DWARF_GET_LOC(d->loc[RSP]) - d->cfa;

The problem is that the delta here can be arbitrarily large when
sigaltstack is used, and can easily overflow the 15 and 30-bit fields.

When signal handler starts running, the stack layout is:

... higher addresses ...
ucontext
CFA->
__restore_rt (== pretcode in rt_sigframe from
linux-2.6/arch/x86/include/asm/sigframe.h)
SP ->
... sighandler runs on this stack.

... lower addresses ...

This makes it very convenient to find ucontext from the CFA.

Attached patch re-tested on Linux/x86_64, no new failures.

Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Reviwed-by: Lassi Tuura <lat@cern.ch>
/external/libunwind/src/x86_64/Gstash_frame.c
3b9fd99cb78383e0ce8cd1a31e3b824a30ef965e 25-Mar-2011 Lassi Tuura <lat@iki.fi> Assign copyright as requested by the author.
/external/libunwind/src/x86_64/Gstash_frame.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/Gstash_frame.c