From dfdc7d29668c396273ca02197b1238c144b3dc87 Mon Sep 17 00:00:00 2001 From: "ted.mielczarek@gmail.com" Date: Fri, 30 May 2014 10:51:16 +0000 Subject: Print more x86-64 registers in minidump_stackwalk R=mark@chromium.org Review URL: https://breakpad.appspot.com/7654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1335 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/processor/minidump_stackwalk.cc | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/processor/minidump_stackwalk.cc') diff --git a/src/processor/minidump_stackwalk.cc b/src/processor/minidump_stackwalk.cc index d43edd37..47e08575 100644 --- a/src/processor/minidump_stackwalk.cc +++ b/src/processor/minidump_stackwalk.cc @@ -205,8 +205,30 @@ static void PrintStack(const CallStack *stack, const string &cpu) { const StackFrameAMD64 *frame_amd64 = reinterpret_cast(frame); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RAX) + sequence = PrintRegister64("rax", frame_amd64->context.rax, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RDX) + sequence = PrintRegister64("rdx", frame_amd64->context.rdx, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RCX) + sequence = PrintRegister64("rcx", frame_amd64->context.rcx, sequence); if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBX) sequence = PrintRegister64("rbx", frame_amd64->context.rbx, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSI) + sequence = PrintRegister64("rsi", frame_amd64->context.rsi, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RDI) + sequence = PrintRegister64("rdi", frame_amd64->context.rdi, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBP) + sequence = PrintRegister64("rbp", frame_amd64->context.rbp, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP) + sequence = PrintRegister64("rsp", frame_amd64->context.rsp, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R8) + sequence = PrintRegister64("r8", frame_amd64->context.r8, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R9) + sequence = PrintRegister64("r9", frame_amd64->context.r9, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R10) + sequence = PrintRegister64("r10", frame_amd64->context.r10, sequence); + if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R11) + sequence = PrintRegister64("r11", frame_amd64->context.r11, sequence); if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R12) sequence = PrintRegister64("r12", frame_amd64->context.r12, sequence); if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R13) @@ -217,10 +239,6 @@ static void PrintStack(const CallStack *stack, const string &cpu) { sequence = PrintRegister64("r15", frame_amd64->context.r15, sequence); if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RIP) sequence = PrintRegister64("rip", frame_amd64->context.rip, sequence); - if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP) - sequence = PrintRegister64("rsp", frame_amd64->context.rsp, sequence); - if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBP) - sequence = PrintRegister64("rbp", frame_amd64->context.rbp, sequence); } else if (cpu == "sparc") { const StackFrameSPARC *frame_sparc = reinterpret_cast(frame); -- cgit v1.2.1