aboutsummaryrefslogtreecommitdiff
path: root/src/google_airbag/processor/stackwalker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/google_airbag/processor/stackwalker.h')
-rw-r--r--src/google_airbag/processor/stackwalker.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/google_airbag/processor/stackwalker.h b/src/google_airbag/processor/stackwalker.h
index 70da125e..381b9e29 100644
--- a/src/google_airbag/processor/stackwalker.h
+++ b/src/google_airbag/processor/stackwalker.h
@@ -50,6 +50,7 @@ class CodeModules;
template<typename T> class linked_ptr;
class MemoryRegion;
class MinidumpContext;
+class SourceLineResolverInterface;
struct StackFrame;
struct StackFrameInfo;
class SymbolSupplier;
@@ -73,7 +74,8 @@ class Stackwalker {
static Stackwalker* StackwalkerForCPU(MinidumpContext *context,
MemoryRegion *memory,
const CodeModules *modules,
- SymbolSupplier *supplier);
+ SymbolSupplier *supplier,
+ SourceLineResolverInterface *resolver);
protected:
// memory identifies a MemoryRegion that provides the stack memory
@@ -81,10 +83,13 @@ class Stackwalker {
// object that is used to look up which code module each stack frame is
// associated with. supplier is an optional caller-supplied SymbolSupplier
// implementation. If supplier is NULL, source line info will not be
- // resolved.
+ // 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,
const CodeModules *modules,
- SymbolSupplier *supplier);
+ SymbolSupplier *supplier,
+ SourceLineResolverInterface *resolver);
// The stack memory to walk. Subclasses will require this region to
// get information from the stack.
@@ -115,6 +120,9 @@ class Stackwalker {
// The optional SymbolSupplier for resolving source line info.
SymbolSupplier *supplier_;
+
+ // The SourceLineResolver implementation
+ SourceLineResolverInterface *resolver_;
};