aboutsummaryrefslogtreecommitdiff
path: root/src/google_airbag/processor/stackwalker.h
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/google_airbag/processor/stackwalker.h
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/google_airbag/processor/stackwalker.h')
-rw-r--r--src/google_airbag/processor/stackwalker.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/google_airbag/processor/stackwalker.h b/src/google_airbag/processor/stackwalker.h
index 381b9e29..c058f09a 100644
--- a/src/google_airbag/processor/stackwalker.h
+++ b/src/google_airbag/processor/stackwalker.h
@@ -54,6 +54,7 @@ class SourceLineResolverInterface;
struct StackFrame;
struct StackFrameInfo;
class SymbolSupplier;
+class SystemInfo;
using std::vector;
@@ -71,13 +72,15 @@ class Stackwalker {
// Returns a new concrete subclass suitable for the CPU that a stack was
// generated on, according to the CPU type indicated by the context
// argument. If no suitable concrete subclass exists, returns NULL.
- static Stackwalker* StackwalkerForCPU(MinidumpContext *context,
+ static Stackwalker* StackwalkerForCPU(const SystemInfo *system_info,
+ MinidumpContext *context,
MemoryRegion *memory,
const CodeModules *modules,
SymbolSupplier *supplier,
SourceLineResolverInterface *resolver);
protected:
+ // system_info identifies the operating system, NULL or empty if unknown.
// memory identifies a MemoryRegion that provides the stack memory
// for the stack to walk. modules, if non-NULL, is a CodeModules
// object that is used to look up which code module each stack frame is
@@ -86,11 +89,16 @@ class Stackwalker {
// resolved. resolver is an instance of SourceLineResolverInterface
// (see source_line_resolver_interface.h and basic_source_line_resolver.h).
// If resolver is NULL, source line info will not be resolved.
- Stackwalker(MemoryRegion *memory,
+ Stackwalker(const SystemInfo *system_info,
+ MemoryRegion *memory,
const CodeModules *modules,
SymbolSupplier *supplier,
SourceLineResolverInterface *resolver);
+ // Information about the system that produced the minidump. Subclasses
+ // and the SymbolSupplier may find this information useful.
+ const SystemInfo *system_info_;
+
// The stack memory to walk. Subclasses will require this region to
// get information from the stack.
MemoryRegion *memory_;