Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: src/processor/dump_context.cc

Issue 1418453011: [mips64] Support for mips n64 (Closed) Base URL: https://chromium.googlesource.com/breakpad/breakpad.git@master
Patch Set: addressing comments Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 Google Inc. 1 // Copyright (c) 2010 Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 const MDRawContextARM64* DumpContext::GetContextARM64() const { 127 const MDRawContextARM64* DumpContext::GetContextARM64() const {
128 if (GetContextCPU() != MD_CONTEXT_ARM64) { 128 if (GetContextCPU() != MD_CONTEXT_ARM64) {
129 BPLOG(ERROR) << "DumpContext cannot get arm64 context"; 129 BPLOG(ERROR) << "DumpContext cannot get arm64 context";
130 return NULL; 130 return NULL;
131 } 131 }
132 132
133 return context_.arm64; 133 return context_.arm64;
134 } 134 }
135 135
136 const MDRawContextMIPS* DumpContext::GetContextMIPS() const { 136 const MDRawContextMIPS* DumpContext::GetContextMIPS() const {
137 if (GetContextCPU() != MD_CONTEXT_MIPS) { 137 if ((GetContextCPU() != MD_CONTEXT_MIPS) &&
138 (GetContextCPU() != MD_CONTEXT_MIPS64)) {
138 BPLOG(ERROR) << "DumpContext cannot get MIPS context"; 139 BPLOG(ERROR) << "DumpContext cannot get MIPS context";
139 return NULL; 140 return NULL;
140 } 141 }
141 142
142 return context_.ctx_mips; 143 return context_.ctx_mips;
143 } 144 }
144 145
145 bool DumpContext::GetInstructionPointer(uint64_t* ip) const { 146 bool DumpContext::GetInstructionPointer(uint64_t* ip) const {
146 BPLOG_IF(ERROR, !ip) << "DumpContext::GetInstructionPointer requires |ip|"; 147 BPLOG_IF(ERROR, !ip) << "DumpContext::GetInstructionPointer requires |ip|";
147 assert(ip); 148 assert(ip);
(...skipping 20 matching lines...) Expand all
168 case MD_CONTEXT_PPC64: 169 case MD_CONTEXT_PPC64:
169 *ip = GetContextPPC64()->srr0; 170 *ip = GetContextPPC64()->srr0;
170 break; 171 break;
171 case MD_CONTEXT_SPARC: 172 case MD_CONTEXT_SPARC:
172 *ip = GetContextSPARC()->pc; 173 *ip = GetContextSPARC()->pc;
173 break; 174 break;
174 case MD_CONTEXT_X86: 175 case MD_CONTEXT_X86:
175 *ip = GetContextX86()->eip; 176 *ip = GetContextX86()->eip;
176 break; 177 break;
177 case MD_CONTEXT_MIPS: 178 case MD_CONTEXT_MIPS:
179 case MD_CONTEXT_MIPS64:
178 *ip = GetContextMIPS()->epc; 180 *ip = GetContextMIPS()->epc;
179 break; 181 break;
180 default: 182 default:
181 // This should never happen. 183 // This should never happen.
182 BPLOG(ERROR) << "Unknown CPU architecture in GetInstructionPointer"; 184 BPLOG(ERROR) << "Unknown CPU architecture in GetInstructionPointer";
183 return false; 185 return false;
184 } 186 }
185 return true; 187 return true;
186 } 188 }
187 189
(...skipping 23 matching lines...) Expand all
211 case MD_CONTEXT_PPC64: 213 case MD_CONTEXT_PPC64:
212 *sp = GetContextPPC64()->gpr[MD_CONTEXT_PPC64_REG_SP]; 214 *sp = GetContextPPC64()->gpr[MD_CONTEXT_PPC64_REG_SP];
213 break; 215 break;
214 case MD_CONTEXT_SPARC: 216 case MD_CONTEXT_SPARC:
215 *sp = GetContextSPARC()->g_r[MD_CONTEXT_SPARC_REG_SP]; 217 *sp = GetContextSPARC()->g_r[MD_CONTEXT_SPARC_REG_SP];
216 break; 218 break;
217 case MD_CONTEXT_X86: 219 case MD_CONTEXT_X86:
218 *sp = GetContextX86()->esp; 220 *sp = GetContextX86()->esp;
219 break; 221 break;
220 case MD_CONTEXT_MIPS: 222 case MD_CONTEXT_MIPS:
223 case MD_CONTEXT_MIPS64:
221 *sp = GetContextMIPS()->iregs[MD_CONTEXT_MIPS_REG_SP]; 224 *sp = GetContextMIPS()->iregs[MD_CONTEXT_MIPS_REG_SP];
222 break; 225 break;
223 default: 226 default:
224 // This should never happen. 227 // This should never happen.
225 BPLOG(ERROR) << "Unknown CPU architecture in GetStackPointer"; 228 BPLOG(ERROR) << "Unknown CPU architecture in GetStackPointer";
226 return false; 229 return false;
227 } 230 }
228 return true; 231 return true;
229 } 232 }
230 233
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 291
289 case MD_CONTEXT_ARM: 292 case MD_CONTEXT_ARM:
290 delete context_.arm; 293 delete context_.arm;
291 break; 294 break;
292 295
293 case MD_CONTEXT_ARM64: 296 case MD_CONTEXT_ARM64:
294 delete context_.arm64; 297 delete context_.arm64;
295 break; 298 break;
296 299
297 case MD_CONTEXT_MIPS: 300 case MD_CONTEXT_MIPS:
301 case MD_CONTEXT_MIPS64:
298 delete context_.ctx_mips; 302 delete context_.ctx_mips;
299 break; 303 break;
300 304
301 default: 305 default:
302 // There is no context record (valid_ is false) or there's a 306 // There is no context record (valid_ is false) or there's a
303 // context record for an unknown CPU (shouldn't happen, only known 307 // context record for an unknown CPU (shouldn't happen, only known
304 // records are stored by Read). 308 // records are stored by Read).
305 break; 309 break;
306 } 310 }
307 311
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 for (unsigned int freg_index = 0; 598 for (unsigned int freg_index = 0;
595 freg_index < MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT; 599 freg_index < MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT;
596 ++freg_index) { 600 ++freg_index) {
597 uint128_struct fp_value = context_arm64->float_save.regs[freg_index]; 601 uint128_struct fp_value = context_arm64->float_save.regs[freg_index];
598 printf(" float_save.regs[%2d] = 0x%" PRIx64 "%" PRIx64 "\n", 602 printf(" float_save.regs[%2d] = 0x%" PRIx64 "%" PRIx64 "\n",
599 freg_index, fp_value.high, fp_value.low); 603 freg_index, fp_value.high, fp_value.low);
600 } 604 }
601 break; 605 break;
602 } 606 }
603 607
604 case MD_CONTEXT_MIPS: { 608 case MD_CONTEXT_MIPS:
609 case MD_CONTEXT_MIPS64: {
605 const MDRawContextMIPS* context_mips = GetContextMIPS(); 610 const MDRawContextMIPS* context_mips = GetContextMIPS();
606 printf("MDRawContextMIPS\n"); 611 printf("MDRawContextMIPS\n");
607 printf(" context_flags = 0x%x\n", 612 printf(" context_flags = 0x%x\n",
608 context_mips->context_flags); 613 context_mips->context_flags);
609 for (int ireg_index = 0; 614 for (int ireg_index = 0;
610 ireg_index < MD_CONTEXT_MIPS_GPR_COUNT; 615 ireg_index < MD_CONTEXT_MIPS_GPR_COUNT;
611 ++ireg_index) { 616 ++ireg_index) {
612 printf(" iregs[%2d] = 0x%" PRIx64 "\n", 617 printf(" iregs[%2d] = 0x%" PRIx64 "\n",
613 ireg_index, context_mips->iregs[ireg_index]); 618 ireg_index, context_mips->iregs[ireg_index]);
614 } 619 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 break; 653 break;
649 } 654 }
650 655
651 default: { 656 default: {
652 break; 657 break;
653 } 658 }
654 } 659 }
655 } 660 }
656 661
657 } // namespace google_breakpad 662 } // namespace google_breakpad
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698