aboutsummaryrefslogtreecommitdiff
path: root/src/processor/stackwalker.cc
diff options
context:
space:
mode:
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;