diff options
Diffstat (limited to 'include/lldb/Target/Unwind.h')
-rw-r--r-- | include/lldb/Target/Unwind.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/include/lldb/Target/Unwind.h b/include/lldb/Target/Unwind.h index a648e063e34b2..652918ddad43b 100644 --- a/include/lldb/Target/Unwind.h +++ b/include/lldb/Target/Unwind.h @@ -37,9 +37,10 @@ public: lldb::addr_t cfa; lldb::addr_t pc; uint32_t idx; + bool behaves_like_zeroth_frame = (end_idx == 0); for (idx = 0; idx < end_idx; idx++) { - if (!DoGetFrameInfoAtIndex(idx, cfa, pc)) { + if (!DoGetFrameInfoAtIndex(idx, cfa, pc, behaves_like_zeroth_frame)) { break; } } @@ -47,9 +48,9 @@ public: } bool GetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, - lldb::addr_t &pc) { + lldb::addr_t &pc, bool &behaves_like_zeroth_frame) { std::lock_guard<std::recursive_mutex> guard(m_unwind_mutex); - return DoGetFrameInfoAtIndex(frame_idx, cfa, pc); + return DoGetFrameInfoAtIndex(frame_idx, cfa, pc, behaves_like_zeroth_frame); } lldb::RegisterContextSP CreateRegisterContextForFrame(StackFrame *frame) { @@ -66,7 +67,8 @@ protected: virtual uint32_t DoGetFrameCount() = 0; virtual bool DoGetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, - lldb::addr_t &pc) = 0; + lldb::addr_t &pc, + bool &behaves_like_zeroth_frame) = 0; virtual lldb::RegisterContextSP DoCreateRegisterContextForFrame(StackFrame *frame) = 0; |