diff options
author | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-01-14 19:17:36 +0000 |
---|---|---|
committer | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-01-14 19:17:36 +0000 |
commit | 2684b4dc196ca2da9466aa5391f5c0090739d2f6 (patch) | |
tree | 915b756348bebc378ba53e3137aa7ba09733b4b1 /src/google_breakpad/processor/stackwalker.h | |
parent | Breakpad Linux dumper: STABS reader incorrectly assumes a single compilation ... (diff) | |
download | breakpad-2684b4dc196ca2da9466aa5391f5c0090739d2f6.tar.xz |
Breakpad processor: Don't pass Windows stack walking information to all walkers.
At the moment, the StackWalker GetCallerFrame member function expects
a vector of WindowsFrameInfo structures, even though WindowsFrameInfo
is only used or useful on one one implementation (StackWalkerX86).
This patch changes StackWalker::GetCallerFrame to no longer expect the
WindowsFrameInfo structures, and changes all implementations to match.
In particular, StackWalkerX86 is changed to find the WindowsFrameInfo
data itself, and store a pointer to whatever it got in the StackFrame
object itself (which is really a StackFrameX86).
To allow GetCallerFrame implementations to look up stack walking data,
StackWalker::resolver_ needs to be made protected, not private.
a=jimblandy, r=mmentovai
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@491 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/google_breakpad/processor/stackwalker.h')
-rw-r--r-- | src/google_breakpad/processor/stackwalker.h | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/google_breakpad/processor/stackwalker.h b/src/google_breakpad/processor/stackwalker.h index 27085585..3b62eacc 100644 --- a/src/google_breakpad/processor/stackwalker.h +++ b/src/google_breakpad/processor/stackwalker.h @@ -48,12 +48,10 @@ namespace google_breakpad { class CallStack; class CodeModules; -template<typename T> class linked_ptr; class MemoryRegion; class MinidumpContext; class SourceLineResolverInterface; struct StackFrame; -struct WindowsFrameInfo; class SymbolSupplier; class SystemInfo; @@ -118,6 +116,10 @@ class Stackwalker { // This field is optional and may be NULL. const CodeModules *modules_; + protected: + // The SourceLineResolver implementation. + SourceLineResolverInterface *resolver_; + private: // Obtains the context frame, the innermost called procedure in a stack // trace. Returns NULL on failure. GetContextFrame allocates a new @@ -133,15 +135,10 @@ class Stackwalker { // the end of the stack has been reached). GetCallerFrame allocates a new // StackFrame (or StackFrame subclass), ownership of which is taken by // the caller. - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr<WindowsFrameInfo> > &stack_frame_info) = 0; + virtual StackFrame* GetCallerFrame(const CallStack *stack) = 0; // The optional SymbolSupplier for resolving source line info. SymbolSupplier *supplier_; - - // The SourceLineResolver implementation - SourceLineResolverInterface *resolver_; }; |