Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1017)

Unified Diff: src/processor/stackwalk_common.cc

Issue 6814002: SH4 support Base URL: http://google-breakpad.googlecode.com/svn/trunk/
Patch Set: with sh4_unittest Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/processor/stackwalk_common.cc
===================================================================
--- src/processor/stackwalk_common.cc (revision 1435)
+++ src/processor/stackwalk_common.cc (working copy)
@@ -602,6 +602,48 @@
sequence = PrintRegister64("s7",
frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S7],
sequence);
+ } else if (cpu == "sh4") {
+ const StackFrameSH4* frame_sh4 =
+ reinterpret_cast<const StackFrameSH4*>(frame);
+
+ // Argument registers (caller-saves), which will likely only be valid
+ // for the youngest frame.
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R0)
+ sequence = PrintRegister("r0", frame_sh4->context.iregs[0], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R1)
+ sequence = PrintRegister("r1", frame_sh4->context.iregs[1], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R2)
+ sequence = PrintRegister("r2", frame_sh4->context.iregs[2], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R3)
+ sequence = PrintRegister("r3", frame_sh4->context.iregs[3], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R4)
+ sequence = PrintRegister("r4", frame_sh4->context.iregs[3], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R5)
+ sequence = PrintRegister("r5", frame_sh4->context.iregs[5], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R6)
+ sequence = PrintRegister("r6", frame_sh4->context.iregs[6], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R7)
+ sequence = PrintRegister("r7", frame_sh4->context.iregs[7], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R8)
+ sequence = PrintRegister("r8", frame_sh4->context.iregs[8], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R9)
+ sequence = PrintRegister("r9", frame_sh4->context.iregs[9], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R10)
+ sequence = PrintRegister("r10", frame_sh4->context.iregs[10], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R11)
+ sequence = PrintRegister("r11", frame_sh4->context.iregs[11], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R12)
+ sequence = PrintRegister("r12", frame_sh4->context.iregs[12], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R13)
+ sequence = PrintRegister("r13", frame_sh4->context.iregs[13], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R14)
+ sequence = PrintRegister("r14", frame_sh4->context.iregs[14], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_SP)
+ sequence = PrintRegister("r15", frame_sh4->context.iregs[15], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_PC)
+ sequence = PrintRegister("pc", frame_sh4->context.iregs[16], sequence);
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_PR)
+ sequence = PrintRegister("pr", frame_sh4->context.iregs[17], sequence);
}
printf("\n Found by: %s\n", frame->trust_description().c_str());

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1004:630ec63f810e-tainted