aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump_processor.cc
diff options
context:
space:
mode:
authormmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-25 18:29:48 +0000
committermmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-25 18:29:48 +0000
commit960e5277ee489960c40c50c6222606200419302a (patch)
tree33a3b8a0ecba5cd6c961966d93f6270acc7a40d9 /src/processor/minidump_processor.cc
parentAdd ppc support to minidump reader (#27). r=bryner. (diff)
downloadbreakpad-960e5277ee489960c40c50c6222606200419302a.tar.xz
ppc stackwalker (#30). r=bryner
- Implementation of PowerPC stackwalker. Tested using stackwalker_selftest (#18). - Hook up processor-side multi-CPU support in MinidumpProcessor and minidump_stackwalk using the new Stackwalker::StackwalkerForCPU method. http://groups.google.com/group/airbag-dev/browse_thread/thread/1c2fa7c5182a77a9 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@34 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/minidump_processor.cc')
-rw-r--r--src/processor/minidump_processor.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
index eb520709..f58b54ba 100644
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -27,10 +27,14 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#include <memory>
+
#include "google/minidump_processor.h"
#include "processor/minidump.h"
#include "processor/stackwalker_x86.h"
+using std::auto_ptr;
+
namespace google_airbag {
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier)
@@ -68,10 +72,14 @@ bool MinidumpProcessor::Process(const string &minidump_file,
return false;
}
- // TODO(bryner): figure out which StackWalker we want
- StackwalkerX86 walker(exception->GetContext(), thread_memory,
- dump.GetModuleList(), supplier_);
- walker.Walk(stack_frames);
+ auto_ptr<Stackwalker> walker(
+ Stackwalker::StackwalkerForCPU(exception->GetContext(), thread_memory,
+ dump.GetModuleList(), supplier_));
+ if (!walker.get()) {
+ return false;
+ }
+
+ walker->Walk(stack_frames);
return true;
}