Use frame pointer to walk ARM stack on iOS.
Review URL: http://breakpad.appspot.com/314001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@869 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
@@ -40,7 +40,6 @@
|
||||
#ifndef PROCESSOR_STACKWALKER_ARM_H__
|
||||
#define PROCESSOR_STACKWALKER_ARM_H__
|
||||
|
||||
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/stackwalker.h"
|
||||
@@ -57,6 +56,7 @@ class StackwalkerARM : public Stackwalker {
|
||||
// to the base Stackwalker constructor.
|
||||
StackwalkerARM(const SystemInfo *system_info,
|
||||
const MDRawContextARM *context,
|
||||
int fp_register,
|
||||
MemoryRegion *memory,
|
||||
const CodeModules *modules,
|
||||
SymbolSupplier *supplier,
|
||||
@@ -78,8 +78,12 @@ class StackwalkerARM : public Stackwalker {
|
||||
StackFrameARM *GetCallerByCFIFrameInfo(const vector<StackFrame *> &frames,
|
||||
CFIFrameInfo *cfi_frame_info);
|
||||
|
||||
// Use the frame pointer. The caller takes ownership of the returned frame.
|
||||
// Return NULL on failure.
|
||||
StackFrameARM *GetCallerByFramePointer(const vector<StackFrame *> &frames);
|
||||
|
||||
// Scan the stack for plausible return addresses. The caller takes ownership
|
||||
// of the returned frame. Return NULL on failure.
|
||||
// of the returned frame. Return NULL on failure.
|
||||
StackFrameARM *GetCallerByStackScan(const vector<StackFrame *> &frames);
|
||||
|
||||
// Stores the CPU context corresponding to the youngest stack frame, to
|
||||
@@ -90,6 +94,10 @@ class StackwalkerARM : public Stackwalker {
|
||||
// CONTEXT_VALID_ALL in real use; it is only changeable for the sake of
|
||||
// unit tests.
|
||||
int context_frame_validity_;
|
||||
|
||||
// The register to use a as frame pointer. The value is -1 if frame pointer
|
||||
// cannot be used.
|
||||
int fp_register_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user