diff options
author | Mike Frysinger <vapier@chromium.org> | 2017-03-17 20:06:34 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@chromium.org> | 2017-03-18 03:04:26 +0000 |
commit | 0a57d7a32b963712c3a464741689b0ba0f48f4ea (patch) | |
tree | da495101c0ac257dc6454f98ff663c1a5277a1ca /src/processor | |
parent | Fix sporadic failure of InstructionPointerMemory test on Windows (diff) | |
download | breakpad-0a57d7a32b963712c3a464741689b0ba0f48f4ea.tar.xz |
dump_context: arm: name the registers in the dump output
The current ARM minidump_dump output makes people remember or look up
how registers are mapped in the ISA. Let's use human friendly names
instead so they don't have to.
Currently it looks like:
MDRawContextARM
context_flags = 0x40000006
iregs[ 0] = 0x3c48b000
iregs[ 1] = 0x3
iregs[ 2] = 0x20
iregs[ 3] = 0x0
iregs[ 4] = 0x1c
iregs[ 5] = 0x3c48b000
iregs[ 6] = 0x20
iregs[ 7] = 0x3c48b04c
iregs[ 8] = 0x39100611
iregs[ 9] = 0x1c
iregs[10] = 0x0
iregs[11] = 0xbe61c200
iregs[12] = 0xfb9c1fec
iregs[13] = 0xbe61bd28
iregs[14] = 0x39e19b1c
iregs[15] = 0x357dd74c
cpsr = 0x680b0010
float_save.fpscr = 0x0
Now it looks like:
MDRawContextARM
context_flags = 0x40000006
r0 = 0x3c48b000
r1 = 0x3
r2 = 0x20
r3 = 0x0
r4 = 0x1c
r5 = 0x3c48b000
r6 = 0x20
r7 = 0x3c48b04c
r8 = 0x39100611
r9 = 0x1c
r10 = 0x0
r11 = 0xbe61c200
r12 = 0xfb9c1fec
sp = 0xbe61bd28
lr = 0x39e19b1c
pc = 0x357dd74c
cpsr = 0x680b0010
float_save.fpscr = 0x0
BUG=chromium:665083
Change-Id: I46d87c4ff7303a7efcd60da1d0b67ae7a5465c8f
Reviewed-on: https://chromium-review.googlesource.com/457197
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
Diffstat (limited to 'src/processor')
-rw-r--r-- | src/processor/dump_context.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/processor/dump_context.cc b/src/processor/dump_context.cc index 762d4fe2..8dd671e6 100644 --- a/src/processor/dump_context.cc +++ b/src/processor/dump_context.cc @@ -549,22 +549,26 @@ void DumpContext::Print() { case MD_CONTEXT_ARM: { const MDRawContextARM* context_arm = GetContextARM(); + const char * const names[] = { + "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc", + }; printf("MDRawContextARM\n"); - printf(" context_flags = 0x%x\n", + printf(" context_flags = 0x%x\n", context_arm->context_flags); for (unsigned int ireg_index = 0; ireg_index < MD_CONTEXT_ARM_GPR_COUNT; ++ireg_index) { - printf(" iregs[%2d] = 0x%x\n", - ireg_index, context_arm->iregs[ireg_index]); + printf(" %-3s = 0x%x\n", + names[ireg_index], context_arm->iregs[ireg_index]); } - printf(" cpsr = 0x%x\n", context_arm->cpsr); + printf(" cpsr = 0x%x\n", context_arm->cpsr); printf(" float_save.fpscr = 0x%" PRIx64 "\n", context_arm->float_save.fpscr); for (unsigned int fpr_index = 0; fpr_index < MD_FLOATINGSAVEAREA_ARM_FPR_COUNT; ++fpr_index) { - printf(" float_save.regs[%2d] = 0x%" PRIx64 "\n", + printf(" float_save.regs[%2d] = 0x%" PRIx64 "\n", fpr_index, context_arm->float_save.regs[fpr_index]); } for (unsigned int fpe_index = 0; |