27 bool pcs_are_call_addresses)
28 :
Unwind(thread), m_pcs(pcs),
29 m_pcs_are_call_addresses(pcs_are_call_addresses) {}
45 &frame->
GetThread()->GetProcess()->GetTarget());
47 rctx = std::make_shared<RegisterContextHistory>(
49 frame->
GetThread()->GetProcess()->GetAddressByteSize(),
pc);
57 bool &behaves_like_zeroth_frame) {
61 if (frame_idx <
m_pcs.size()) {
65 behaves_like_zeroth_frame =
true;
67 behaves_like_zeroth_frame = (frame_idx == 0);
lldb::addr_t GetLoadAddress(Target *target) const
Get the load address.
bool m_pcs_are_call_addresses
This boolean indicates that the PCs in the non-0 frames are call addresses and not return addresses.
lldb::RegisterContextSP DoCreateRegisterContextForFrame(StackFrame *frame) override
std::vector< lldb::addr_t > m_pcs
uint32_t DoGetFrameCount() override
~HistoryUnwind() override
HistoryUnwind(Thread &thread, std::vector< lldb::addr_t > pcs, bool pcs_are_call_addresses=false)
bool DoGetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, lldb::addr_t &pc, bool &behaves_like_zeroth_frame) override
This base class provides an interface to stack frames.
lldb::ThreadSP GetThread() const
uint32_t GetConcreteFrameIndex() const
Query this frame to find what frame it is in this Thread's StackFrameList, not counting inlined frame...
const Address & GetFrameCodeAddress()
Get an Address for the current pc value in this StackFrame.
std::recursive_mutex m_unwind_mutex
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP