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