diff options
author | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2007-01-10 22:47:56 +0000 |
---|---|---|
committer | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2007-01-10 22:47:56 +0000 |
commit | 97d392dc4b60f0099cd7ad8c8a5f06581a532392 (patch) | |
tree | d905546d8bac18be851703c480e2a4dc0a64bc56 /src/processor/stackwalker.cc | |
parent | Added method to allow adding a file's contents directly. Fixes issue #105. (diff) | |
download | breakpad-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.cc | 16 |
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; |