9#ifndef LLDB_SYMBOL_UNWINDPLAN_H
10#define LLDB_SYMBOL_UNWINDPLAN_H
80 return !(*
this == rhs);
285 return m_value.ra_search_offset;
352 AbstractRegisterLocation ®ister_location)
const;
355 const AbstractRegisterLocation register_location);
378 bool can_replace_only_if_unspecified);
391 const uint8_t *opcodes,
392 uint32_t len,
bool can_replace);
422 typedef std::map<uint32_t, AbstractRegisterLocation>
collection;
473 return m_row_list.front().GetCFAValue().GetRegisterNumber();
A section + offset based address class.
A uniqued constant string class.
A stream class that can stream formatted output to a file.
uint64_t GetConstant() const
void GetDWARFExpr(const uint8_t **opcodes, uint16_t &len) const
bool operator!=(const AbstractRegisterLocation &rhs) const
int GetDWARFExpressionLength() const
uint32_t GetRegisterNumber() const
void SetIsConstant(uint64_t value)
union lldb_private::UnwindPlan::Row::AbstractRegisterLocation::@225201031247227020145212152105175123074115111335 m_location
void SetIsDWARFExpression(const uint8_t *opcodes, uint32_t len)
void SetAtCFAPlusOffset(int32_t offset)
bool IsAtAFAPlusOffset() const
const uint8_t * GetDWARFExpressionBytes() const
bool IsAtCFAPlusOffset() const
bool IsAFAPlusOffset() const
bool IsAtDWARFExpression() const
void Dump(Stream &s, const UnwindPlan *unwind_plan, const UnwindPlan::Row *row, Thread *thread, bool verbose) const
bool IsInOtherRegister() const
void SetIsAFAPlusOffset(int32_t offset)
RestoreType GetLocationType() const
bool IsCFAPlusOffset() const
int32_t GetOffset() const
struct lldb_private::UnwindPlan::Row::AbstractRegisterLocation::@225201031247227020145212152105175123074115111335::@274041013243136340101366216255135217113225313354 expr
void SetInRegister(uint32_t reg_num)
void SetAtAFAPlusOffset(int32_t offset)
bool IsUnspecified() const
bool operator==(const AbstractRegisterLocation &rhs) const
AbstractRegisterLocation()
void SetIsCFAPlusOffset(int32_t offset)
void SetAtDWARFExpression(const uint8_t *opcodes, uint32_t len)
bool IsDWARFExpression() const
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)
int GetDWARFExpressionLength() const
const uint8_t * GetDWARFExpressionBytes() const
int32_t GetOffset() const
bool IsRegisterDereferenced() const
bool IsUnspecified() const
bool operator==(const FAValue &rhs) const
void SetIsRegisterDereferenced(uint32_t reg_num)
union lldb_private::UnwindPlan::Row::FAValue::@131017011041341220266230364377327125216211117206 m_value
struct lldb_private::UnwindPlan::Row::FAValue::@131017011041341220266230364377327125216211117206::@302167274322137005337330072303015152064264174351 expr
void SetIsConstant(uint64_t constant)
bool operator!=(const FAValue &rhs) const
struct lldb_private::UnwindPlan::Row::FAValue::@131017011041341220266230364377327125216211117206::@224067032354375070144176053364000367340265231113 reg
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
uint64_t GetConstant() const
uint32_t GetRegisterNumber() const
const FAValue & GetAFAValue() 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)
void SlideOffset(int64_t offset)
void SetOffset(int64_t offset)
bool SetRegisterLocationToIsDWARFExpression(uint32_t reg_num, const uint8_t *opcodes, uint32_t len, bool can_replace)
This method does not make a copy of the opcodes memory, it is assumed to have the same lifetime as th...
bool SetRegisterLocationToAtCFAPlusOffset(uint32_t reg_num, int32_t offset, bool can_replace)
int64_t GetOffset() const
const FAValue & GetCFAValue() const
bool GetUnspecifiedRegistersAreUndefined()
collection m_register_locations
bool m_unspecified_registers_are_undefined
bool GetRegisterInfo(uint32_t reg_num, AbstractRegisterLocation ®ister_location) const
std::map< uint32_t, AbstractRegisterLocation > collection
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)
bool operator==(const Row &rhs) const
bool SetRegisterLocationToUndefined(uint32_t reg_num, bool can_replace, bool can_replace_only_if_unspecified)
void SetUnspecifiedRegistersAreUndefined(bool unspec_is_undef)
void SetRegisterInfo(uint32_t reg_num, const AbstractRegisterLocation register_location)
lldb_private::LazyBool GetUnwindPlanValidAtAllInstructions() const
std::vector< Row > m_row_list
void SetUnwindPlanForSignalTrap(lldb_private::LazyBool is_for_signal_trap)
UnwindPlan & operator=(UnwindPlan &&)=default
lldb::RegisterKind m_register_kind
void SetRegisterKind(lldb::RegisterKind kind)
UnwindPlan(const UnwindPlan &rhs)=default
UnwindPlan(lldb::RegisterKind reg_kind)
uint32_t GetInitialCFARegister() const
uint32_t GetReturnAddressRegister() const
const RegisterInfo * GetRegisterInfo(Thread *thread, uint32_t reg_num) const
lldb_private::LazyBool m_plan_is_for_signal_trap
void SetReturnAddressRegister(uint32_t regnum)
UnwindPlan(UnwindPlan &&rhs)=default
bool IsValidRowIndex(uint32_t idx) const
UnwindPlan & operator=(const UnwindPlan &rhs)=default
uint32_t m_return_addr_register
void InsertRow(Row row, bool replace_existing=false)
lldb_private::LazyBool m_plan_is_valid_at_all_instruction_locations
lldb::RegisterKind GetRegisterKind() const
std::vector< AddressRange > m_plan_valid_ranges
const UnwindPlan::Row * GetRowForFunctionOffset(std::optional< int64_t > offset) const
bool PlanValidAtAddress(Address addr) const
lldb_private::ConstString m_source_name
void SetSourcedFromCompiler(lldb_private::LazyBool from_compiler)
const UnwindPlan::Row * GetLastRow() const
void SetSourceName(const char *)
void SetPlanValidAddressRanges(std::vector< AddressRange > ranges)
lldb_private::LazyBool GetUnwindPlanForSignalTrap() const
void Dump(Stream &s, Thread *thread, lldb::addr_t base_addr) const
lldb_private::ConstString GetSourceName() const
const UnwindPlan::Row * GetRowAtIndex(uint32_t idx) 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),...