9#ifndef LLDB_SYMBOL_UNWINDPLAN_H
10#define LLDB_SYMBOL_UNWINDPLAN_H
80 return !(*
this == rhs);
275 return m_value.ra_search_offset;
340 RegisterLocation ®ister_location)
const;
343 const RegisterLocation register_location);
364 bool can_replace_only_if_unspecified);
441 void InsertRow(
const RowSP &row_sp,
bool replace_existing =
false);
463 return m_row_list.front()->GetCFAValue().GetRegisterNumber();
A section + offset based address range class.
void Clear()
Clear the object's state.
A section + offset based address class.
void Clear()
Clear the object's state.
A uniqued constant string class.
void Clear()
Clear this object's state.
A stream class that can stream formatted output to a file.
bool IsRegisterPlusOffset() const
void SetIsDWARFExpression(const uint8_t *opcodes, uint32_t len)
void Dump(Stream &s, const UnwindPlan *unwind_plan, Thread *thread) const
void IncOffset(int32_t delta)
const uint8_t * GetDWARFExpressionBytes()
int32_t GetOffset() const
union lldb_private::UnwindPlan::Row::FAValue::@26 m_value
bool IsRegisterDereferenced() const
bool IsUnspecified() const
bool operator==(const FAValue &rhs) const
struct lldb_private::UnwindPlan::Row::FAValue::@26::@27 reg
int GetDWARFExpressionLength()
void SetIsRegisterDereferenced(uint32_t reg_num)
struct lldb_private::UnwindPlan::Row::FAValue::@26::@28 expr
bool operator!=(const FAValue &rhs) const
void GetDWARFExpr(const uint8_t **opcodes, uint16_t &len) const
void SetOffset(int32_t offset)
ValueType GetValueType() const
void SetRaSearch(int32_t offset)
void SetIsRegisterPlusOffset(uint32_t reg_num, int32_t offset)
bool IsDWARFExpression() const
uint32_t GetRegisterNumber() const
void GetDWARFExpr(const uint8_t **opcodes, uint16_t &len) const
void SetIsAFAPlusOffset(int32_t offset)
bool operator==(const RegisterLocation &rhs) const
bool IsInOtherRegister() const
union lldb_private::UnwindPlan::Row::RegisterLocation::@24 m_location
uint32_t GetRegisterNumber() const
void SetIsConstant(uint64_t value)
struct lldb_private::UnwindPlan::Row::RegisterLocation::@24::@25 expr
bool operator!=(const RegisterLocation &rhs) const
bool IsCFAPlusOffset() const
uint64_t GetConstant() const
bool IsAtCFAPlusOffset() const
RestoreType GetLocationType() const
bool IsAFAPlusOffset() const
void SetAtAFAPlusOffset(int32_t offset)
bool IsUnspecified() const
int32_t GetOffset() const
void SetAtDWARFExpression(const uint8_t *opcodes, uint32_t len)
bool IsAtAFAPlusOffset() const
const uint8_t * GetDWARFExpressionBytes()
void SetInRegister(uint32_t reg_num)
int GetDWARFExpressionLength()
bool IsDWARFExpression() const
void Dump(Stream &s, const UnwindPlan *unwind_plan, const UnwindPlan::Row *row, Thread *thread, bool verbose) const
void SetIsDWARFExpression(const uint8_t *opcodes, uint32_t len)
void SetIsCFAPlusOffset(int32_t offset)
void SetAtCFAPlusOffset(int32_t offset)
bool IsAtDWARFExpression() const
bool SetRegisterLocationToIsConstant(uint32_t reg_num, uint64_t constant, bool can_replace)
bool SetRegisterLocationToIsCFAPlusOffset(uint32_t reg_num, int32_t offset, bool can_replace)
bool SetRegisterLocationToSame(uint32_t reg_num, bool must_replace)
std::map< uint32_t, RegisterLocation > collection
bool SetRegisterLocationToAtCFAPlusOffset(uint32_t reg_num, int32_t offset, bool can_replace)
bool GetUnspecifiedRegistersAreUndefined()
collection m_register_locations
bool m_unspecified_registers_are_undefined
bool SetRegisterLocationToRegister(uint32_t reg_num, uint32_t other_reg_num, bool can_replace)
void Dump(Stream &s, const UnwindPlan *unwind_plan, Thread *thread, lldb::addr_t base_addr) const
bool SetRegisterLocationToUnspecified(uint32_t reg_num, bool can_replace)
void RemoveRegisterInfo(uint32_t reg_num)
lldb::addr_t GetOffset() const
bool operator==(const Row &rhs) const
bool SetRegisterLocationToUndefined(uint32_t reg_num, bool can_replace, bool can_replace_only_if_unspecified)
bool GetRegisterInfo(uint32_t reg_num, RegisterLocation ®ister_location) const
void SlideOffset(lldb::addr_t offset)
void SetOffset(lldb::addr_t offset)
void SetUnspecifiedRegistersAreUndefined(bool unspec_is_undef)
void SetRegisterInfo(uint32_t reg_num, const RegisterLocation register_location)
lldb_private::LazyBool GetUnwindPlanValidAtAllInstructions() const
void SetUnwindPlanForSignalTrap(lldb_private::LazyBool is_for_signal_trap)
void InsertRow(const RowSP &row_sp, bool replace_existing=false)
const UnwindPlan::RowSP GetRowAtIndex(uint32_t idx) const
Address m_personality_func_addr
lldb::RegisterKind m_register_kind
void SetRegisterKind(lldb::RegisterKind kind)
UnwindPlan(const UnwindPlan &rhs)
UnwindPlan(lldb::RegisterKind reg_kind)
uint32_t GetInitialCFARegister() const
const RegisterInfo * GetRegisterInfo(Thread *thread, uint32_t reg_num) const
Address GetPersonalityFunctionPtr() const
lldb_private::LazyBool m_plan_is_for_signal_trap
const UnwindPlan::RowSP GetLastRow() const
void SetPlanValidAddressRange(const AddressRange &range)
void SetReturnAddressRegister(uint32_t regnum)
uint32_t GetReturnAddressRegister()
AddressRange m_plan_valid_address_range
std::vector< RowSP > collection
bool IsValidRowIndex(uint32_t idx) const
uint32_t m_return_addr_register
void SetPersonalityFunctionPtr(Address presonality_func_ptr)
void AppendRow(const RowSP &row_sp)
lldb_private::LazyBool m_plan_is_valid_at_all_instruction_locations
UnwindPlan::RowSP GetRowForFunctionOffset(int offset) const
lldb::RegisterKind GetRegisterKind() const
std::shared_ptr< Row > RowSP
void SetLSDAAddress(Address lsda_addr)
lldb_private::ConstString m_source_name
void SetSourcedFromCompiler(lldb_private::LazyBool from_compiler)
const AddressRange & GetAddressRange() const
bool PlanValidAtAddress(Address addr)
void SetSourceName(const char *)
Address GetLSDAAddress() const
lldb_private::LazyBool GetUnwindPlanForSignalTrap() const
void Dump(Stream &s, Thread *thread, lldb::addr_t base_addr) const
lldb_private::ConstString GetSourceName() const
lldb_private::LazyBool GetSourcedFromCompiler() const
void SetUnwindPlanValidAtAllInstructions(lldb_private::LazyBool valid_at_all_insn)
lldb_private::LazyBool m_plan_is_sourced_from_compiler
#define LLDB_INVALID_REGNUM
A class that represents a running process on the host machine.
RegisterKind
Register numbering types.
@ eRegisterKindDWARF
the register numbers seen DWARF
Every register is described in detail including its name, alternate name (optional),...