mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-03-09 02:56:28 +00:00
Breakpad processor: Support AMD64 stack unwinding driven by DWARF CFI.
This adds support for 'STACK CFI' records (DWARF CFI) to the AMD64 stack walker. This is necessary for the stack trace to include any frames other than the youngest. Unit tests are included. a=jimblandy, r=mmentovai git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@554 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
@@ -196,6 +196,16 @@ static void PrintStack(const CallStack *stack, const string &cpu) {
|
||||
const StackFrameAMD64 *frame_amd64 =
|
||||
reinterpret_cast<const StackFrameAMD64*>(frame);
|
||||
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBX)
|
||||
sequence = PrintRegister("rbx", frame_amd64->context.rbx, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R12)
|
||||
sequence = PrintRegister("r12", frame_amd64->context.r12, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R13)
|
||||
sequence = PrintRegister("r13", frame_amd64->context.r13, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R14)
|
||||
sequence = PrintRegister("r14", frame_amd64->context.r14, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R15)
|
||||
sequence = PrintRegister("r15", frame_amd64->context.r15, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RIP)
|
||||
sequence = PrintRegister("rip", frame_amd64->context.rip, sequence);
|
||||
if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP)
|
||||
|
||||
Reference in New Issue
Block a user