aboutsummaryrefslogtreecommitdiff
path: root/src/processor/stackwalker.cc
diff options
context:
space:
mode:
authormmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2007-01-10 22:47:56 +0000
committermmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2007-01-10 22:47:56 +0000
commit97d392dc4b60f0099cd7ad8c8a5f06581a532392 (patch)
treed905546d8bac18be851703c480e2a4dc0a64bc56 /src/processor/stackwalker.cc
parentAdded method to allow adding a file's contents directly. Fixes issue #105. (diff)
downloadbreakpad-97d392dc4b60f0099cd7ad8c8a5f06581a532392.tar.xz
Communicate OS and CPU to SymbolSupplier (#107). r=bryner
Interface change: moved a few fields around in ProcessState; added new arguments to Stackwalker and SymbolSupplier. http://groups.google.com/group/airbag-dev/browse_thread/thread/17e4a48ec3ede932 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@101 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/stackwalker.cc')
-rw-r--r--src/processor/stackwalker.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/processor/stackwalker.cc b/src/processor/stackwalker.cc
index e6a26bb9..d9ca045b 100644
--- a/src/processor/stackwalker.cc
+++ b/src/processor/stackwalker.cc
@@ -53,10 +53,13 @@
namespace google_airbag {
-Stackwalker::Stackwalker(MemoryRegion *memory, const CodeModules *modules,
+Stackwalker::Stackwalker(const SystemInfo *system_info,
+ MemoryRegion *memory,
+ const CodeModules *modules,
SymbolSupplier *supplier,
SourceLineResolverInterface *resolver)
- : memory_(memory),
+ : system_info_(system_info),
+ memory_(memory),
modules_(modules),
supplier_(supplier),
resolver_(resolver) {
@@ -96,7 +99,7 @@ bool Stackwalker::Walk(CallStack *stack) {
supplier_) {
string symbol_file;
SymbolSupplier::SymbolResult symbol_result =
- supplier_->GetSymbolFile(module, &symbol_file);
+ supplier_->GetSymbolFile(module, system_info_, &symbol_file);
switch (symbol_result) {
case SymbolSupplier::FOUND:
@@ -130,6 +133,7 @@ bool Stackwalker::Walk(CallStack *stack) {
// static
Stackwalker* Stackwalker::StackwalkerForCPU(
+ const SystemInfo *system_info,
MinidumpContext *context,
MemoryRegion *memory,
const CodeModules *modules,
@@ -140,13 +144,15 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
u_int32_t cpu = context->GetContextCPU();
switch (cpu) {
case MD_CONTEXT_X86:
- cpu_stackwalker = new StackwalkerX86(context->GetContextX86(),
+ cpu_stackwalker = new StackwalkerX86(system_info,
+ context->GetContextX86(),
memory, modules, supplier,
resolver);
break;
case MD_CONTEXT_PPC:
- cpu_stackwalker = new StackwalkerPPC(context->GetContextPPC(),
+ cpu_stackwalker = new StackwalkerPPC(system_info,
+ context->GetContextPPC(),
memory, modules, supplier,
resolver);
break;