aboutsummaryrefslogtreecommitdiff
path: root/src/processor/stackwalker_arm64.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/processor/stackwalker_arm64.h')
-rw-r--r--src/processor/stackwalker_arm64.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/processor/stackwalker_arm64.h b/src/processor/stackwalker_arm64.h
index 241383ea..39735c67 100644
--- a/src/processor/stackwalker_arm64.h
+++ b/src/processor/stackwalker_arm64.h
@@ -90,6 +90,13 @@ class StackwalkerARM64 : public Stackwalker {
// of the returned frame. Return NULL on failure.
StackFrameARM64* GetCallerByStackScan(const vector<StackFrame*> &frames);
+ // GetCallerByFramePointer() depends on the previous frame having recovered
+ // x30($LR) which may not have been done when using CFI.
+ // This function recovers $LR in the previous frame by using the frame-pointer
+ // two frames back to read it from the stack.
+ void CorrectRegLRByFramePointer(const vector<StackFrame*>& frames,
+ StackFrameARM64* last_frame);
+
// Stores the CPU context corresponding to the youngest stack frame, to
// be returned by GetContextFrame.
const MDRawContextARM64* context_;