LLDB mainline
lldb_private::UnwindPlan::Row Class Reference

#include <UnwindPlan.h>

Classes

class  AbstractRegisterLocation
class  FAValue

Public Member Functions

 Row ()
bool operator== (const Row &rhs) const
bool GetRegisterInfo (uint32_t reg_num, AbstractRegisterLocation &register_location) const
void SetRegisterInfo (uint32_t reg_num, const AbstractRegisterLocation register_location)
void RemoveRegisterInfo (uint32_t reg_num)
int64_t GetOffset () const
void SetOffset (int64_t offset)
void SlideOffset (int64_t offset)
const FAValueGetCFAValue () const
FAValueGetCFAValue ()
const FAValueGetAFAValue () const
FAValueGetAFAValue ()
bool SetRegisterLocationToAtCFAPlusOffset (uint32_t reg_num, int32_t offset, bool can_replace)
bool SetRegisterLocationToIsCFAPlusOffset (uint32_t reg_num, int32_t offset, bool can_replace)
bool SetRegisterLocationToUndefined (uint32_t reg_num, bool can_replace, bool can_replace_only_if_unspecified)
bool SetRegisterLocationToUnspecified (uint32_t reg_num, bool can_replace)
bool SetRegisterLocationToRegister (uint32_t reg_num, uint32_t other_reg_num, bool can_replace)
bool SetRegisterLocationToSame (uint32_t reg_num, bool must_replace)
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 the Module this UnwindPlan will be registered in.
bool SetRegisterLocationToIsConstant (uint32_t reg_num, uint64_t constant, bool can_replace)
void SetUnspecifiedRegistersAreUndefined (bool unspec_is_undef)
bool GetUnspecifiedRegistersAreUndefined ()
void Clear ()
void Dump (Stream &s, const UnwindPlan *unwind_plan, Thread *thread, lldb::addr_t base_addr) const

Protected Types

typedef std::map< uint32_t, AbstractRegisterLocationcollection

Protected Attributes

int64_t m_offset = 0
FAValue m_cfa_value
FAValue m_afa_value
collection m_register_locations
bool m_unspecified_registers_are_undefined = false

Detailed Description

Definition at line 55 of file UnwindPlan.h.

Member Typedef Documentation

◆ collection

Definition at line 422 of file UnwindPlan.h.

Constructor & Destructor Documentation

◆ Row()

UnwindPlan::Row::Row ( )

Definition at line 259 of file UnwindPlan.cpp.

References m_afa_value, m_cfa_value, and m_register_locations.

Member Function Documentation

◆ Clear()

void UnwindPlan::Row::Clear ( )

◆ Dump()

◆ GetAFAValue() [1/2]

FAValue & lldb_private::UnwindPlan::Row::GetAFAValue ( )
inline

Definition at line 369 of file UnwindPlan.h.

References m_afa_value.

◆ GetAFAValue() [2/2]

◆ GetCFAValue() [1/2]

FAValue & lldb_private::UnwindPlan::Row::GetCFAValue ( )
inline

Definition at line 366 of file UnwindPlan.h.

References m_cfa_value.

◆ GetCFAValue() [2/2]

const FAValue & lldb_private::UnwindPlan::Row::GetCFAValue ( ) const
inline

Definition at line 365 of file UnwindPlan.h.

References m_cfa_value.

Referenced by lldb_private::x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite(), UnwindAssembly_x86::AugmentUnwindPlanFromCallSite(), EHProgramRange::BuildUnwindPlanRow(), lldb_private::FuncUnwinders::CompareUnwindPlansForIdenticalInitialPCLocation(), ABIAArch64::CreateDefaultUnwindPlan(), ABIMacOSX_arm::CreateDefaultUnwindPlan(), ABIMacOSX_i386::CreateDefaultUnwindPlan(), ABISysV_arm::CreateDefaultUnwindPlan(), ABISysV_hexagon::CreateDefaultUnwindPlan(), ABISysV_i386::CreateDefaultUnwindPlan(), ABISysV_loongarch::CreateDefaultUnwindPlan(), ABISysV_mips64::CreateDefaultUnwindPlan(), ABISysV_mips::CreateDefaultUnwindPlan(), ABISysV_msp430::CreateDefaultUnwindPlan(), ABISysV_ppc64::CreateDefaultUnwindPlan(), ABISysV_ppc::CreateDefaultUnwindPlan(), ABISysV_riscv::CreateDefaultUnwindPlan(), ABISysV_x86_64::CreateDefaultUnwindPlan(), ABIWindows_x86_64::CreateDefaultUnwindPlan(), EmulateInstructionARM64::CreateFunctionEntryUnwind(), EmulateInstructionMIPS64::CreateFunctionEntryUnwind(), EmulateInstructionMIPS::CreateFunctionEntryUnwind(), lldb_private::EmulateInstructionARM::CreateFunctionEntryUnwind(), lldb_private::EmulateInstructionPPC64::CreateFunctionEntryUnwind(), ABIAArch64::CreateFunctionEntryUnwindPlan(), ABIMacOSX_arm::CreateFunctionEntryUnwindPlan(), ABIMacOSX_i386::CreateFunctionEntryUnwindPlan(), ABISysV_arc::CreateFunctionEntryUnwindPlan(), ABISysV_arm::CreateFunctionEntryUnwindPlan(), ABISysV_hexagon::CreateFunctionEntryUnwindPlan(), ABISysV_i386::CreateFunctionEntryUnwindPlan(), ABISysV_loongarch::CreateFunctionEntryUnwindPlan(), ABISysV_mips64::CreateFunctionEntryUnwindPlan(), ABISysV_mips::CreateFunctionEntryUnwindPlan(), ABISysV_msp430::CreateFunctionEntryUnwindPlan(), ABISysV_ppc64::CreateFunctionEntryUnwindPlan(), ABISysV_ppc::CreateFunctionEntryUnwindPlan(), ABISysV_riscv::CreateFunctionEntryUnwindPlan(), ABISysV_s390x::CreateFunctionEntryUnwindPlan(), ABISysV_x86_64::CreateFunctionEntryUnwindPlan(), ABIWindows_x86_64::CreateFunctionEntryUnwindPlan(), lldb_private::CompactUnwindInfo::CreateUnwindPlan_arm64(), lldb_private::CompactUnwindInfo::CreateUnwindPlan_armv7(), lldb_private::CompactUnwindInfo::CreateUnwindPlan_i386(), lldb_private::CompactUnwindInfo::CreateUnwindPlan_x86_64(), lldb_private::RegisterContextUnwind::ForceSwitchToFallbackUnwindPlan(), GetAArch64TrapHandlerUnwindPlan(), lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), lldb_private::ArmUnwindInfo::GetUnwindPlan(), lldb_private::DWARFCallFrameInfo::HandleCommonDwarfOpcode(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), lldb_private::breakpad::SymbolFileBreakpad::ParseCFIUnwindRow(), lldb_private::breakpad::SymbolFileBreakpad::ParseWinUnwindPlan(), lldb_private::UnwindPlan::PlanValidAtAddress(), and lldb_private::RegisterContextUnwind::TryFallbackUnwindPlan().

◆ GetOffset()

◆ GetRegisterInfo()

◆ GetUnspecifiedRegistersAreUndefined()

bool lldb_private::UnwindPlan::Row::GetUnspecifiedRegistersAreUndefined ( )
inline

Definition at line 412 of file UnwindPlan.h.

References m_unspecified_registers_are_undefined.

◆ operator==()

bool UnwindPlan::Row::operator== ( const Row & rhs) const

◆ RemoveRegisterInfo()

void UnwindPlan::Row::RemoveRegisterInfo ( uint32_t reg_num)

◆ SetOffset()

◆ SetRegisterInfo()

◆ SetRegisterLocationToAtCFAPlusOffset()

bool UnwindPlan::Row::SetRegisterLocationToAtCFAPlusOffset ( uint32_t reg_num,
int32_t offset,
bool can_replace )

◆ SetRegisterLocationToIsCFAPlusOffset()

◆ SetRegisterLocationToIsConstant()

bool UnwindPlan::Row::SetRegisterLocationToIsConstant ( uint32_t reg_num,
uint64_t constant,
bool can_replace )

◆ SetRegisterLocationToIsDWARFExpression()

bool UnwindPlan::Row::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 the Module this UnwindPlan will be registered in.

Definition at line 364 of file UnwindPlan.cpp.

References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetIsDWARFExpression().

◆ SetRegisterLocationToRegister()

◆ SetRegisterLocationToSame()

bool UnwindPlan::Row::SetRegisterLocationToSame ( uint32_t reg_num,
bool must_replace )

◆ SetRegisterLocationToUndefined()

bool UnwindPlan::Row::SetRegisterLocationToUndefined ( uint32_t reg_num,
bool can_replace,
bool can_replace_only_if_unspecified )

◆ SetRegisterLocationToUnspecified()

bool UnwindPlan::Row::SetRegisterLocationToUnspecified ( uint32_t reg_num,
bool can_replace )

◆ SetUnspecifiedRegistersAreUndefined()

◆ SlideOffset()

void lldb_private::UnwindPlan::Row::SlideOffset ( int64_t offset)
inline

Member Data Documentation

◆ m_afa_value

FAValue lldb_private::UnwindPlan::Row::m_afa_value
protected

Definition at line 426 of file UnwindPlan.h.

Referenced by Clear(), Dump(), GetAFAValue(), GetAFAValue(), operator==(), and Row().

◆ m_cfa_value

FAValue lldb_private::UnwindPlan::Row::m_cfa_value
protected

Definition at line 425 of file UnwindPlan.h.

Referenced by Clear(), Dump(), GetCFAValue(), GetCFAValue(), operator==(), and Row().

◆ m_offset

int64_t lldb_private::UnwindPlan::Row::m_offset = 0
protected

Definition at line 423 of file UnwindPlan.h.

Referenced by Clear(), GetOffset(), operator==(), SetOffset(), and SlideOffset().

◆ m_register_locations

◆ m_unspecified_registers_are_undefined

bool lldb_private::UnwindPlan::Row::m_unspecified_registers_are_undefined = false
protected

The documentation for this class was generated from the following files: