LLDB mainline
|
#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 ®ister_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 FAValue & | GetCFAValue () const |
FAValue & | GetCFAValue () |
const FAValue & | GetAFAValue () const |
FAValue & | GetAFAValue () |
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, AbstractRegisterLocation > | collection |
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 |
Definition at line 55 of file UnwindPlan.h.
|
protected |
Definition at line 422 of file UnwindPlan.h.
UnwindPlan::Row::Row | ( | ) |
Definition at line 259 of file UnwindPlan.cpp.
References m_afa_value, m_cfa_value, and m_register_locations.
void UnwindPlan::Row::Clear | ( | ) |
Definition at line 227 of file UnwindPlan.cpp.
References m_afa_value, m_cfa_value, m_offset, m_register_locations, and m_unspecified_registers_are_undefined.
void UnwindPlan::Row::Dump | ( | Stream & | s, |
const UnwindPlan * | unwind_plan, | ||
Thread * | thread, | ||
lldb::addr_t | base_addr ) const |
Definition at line 235 of file UnwindPlan.cpp.
References DumpRegisterName(), GetOffset(), LLDB_INVALID_ADDRESS, m_afa_value, m_cfa_value, m_register_locations, lldb_private::Stream::Printf(), lldb_private::Stream::PutChar(), and lldb_private::UnwindPlan::UnwindPlan().
Referenced by lldb_private::RegisterContextUnwind::GetAbstractRegisterLocation(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), and lldb_private::RegisterContextUnwind::TryAdoptArchitectureUnwindPlan().
|
inline |
Definition at line 369 of file UnwindPlan.h.
References m_afa_value.
|
inline |
Definition at line 368 of file UnwindPlan.h.
References m_afa_value.
Referenced by lldb_private::RegisterContextUnwind::ForceSwitchToFallbackUnwindPlan(), lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), and lldb_private::RegisterContextUnwind::TryFallbackUnwindPlan().
|
inline |
Definition at line 366 of file UnwindPlan.h.
References m_cfa_value.
|
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().
|
inline |
Definition at line 359 of file UnwindPlan.h.
References m_offset.
Referenced by lldb_private::UnwindPlan::AppendRow(), lldb_private::x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite(), UnwindAssembly_x86::AugmentUnwindPlanFromCallSite(), Dump(), lldb_private::UnwindPlan::InsertRow(), RowLess::operator()(), RowLess::operator()(), and lldb_private::DWARFCallFrameInfo::ParseFDE().
bool UnwindPlan::Row::GetRegisterInfo | ( | uint32_t | reg_num, |
AbstractRegisterLocation & | register_location ) const |
Definition at line 261 of file UnwindPlan.cpp.
References m_register_locations, m_unspecified_registers_are_undefined, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetUndefined().
Referenced by UnwindAssembly_x86::AugmentUnwindPlanFromCallSite(), lldb_private::FuncUnwinders::CompareUnwindPlansForIdenticalInitialPCLocation(), lldb_private::RegisterContextUnwind::GetAbstractRegisterLocation(), lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), and lldb_private::ArmUnwindInfo::GetUnwindPlan().
|
inline |
Definition at line 412 of file UnwindPlan.h.
References m_unspecified_registers_are_undefined.
Definition at line 387 of file UnwindPlan.cpp.
References m_afa_value, m_cfa_value, m_offset, m_register_locations, and m_unspecified_registers_are_undefined.
void UnwindPlan::Row::RemoveRegisterInfo | ( | uint32_t | reg_num | ) |
Definition at line 276 of file UnwindPlan.cpp.
References m_register_locations.
Referenced by lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), and lldb_private::DWARFCallFrameInfo::ParseFDE().
|
inline |
Definition at line 361 of file UnwindPlan.h.
References m_offset.
Referenced by lldb_private::x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite(), EHProgramRange::BuildUnwindPlanRow(), ABISysV_x86_64::CreateDefaultUnwindPlan(), ABIWindows_x86_64::CreateDefaultUnwindPlan(), lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), lldb_private::breakpad::SymbolFileBreakpad::ParseCFIUnwindPlan(), and lldb_private::DWARFCallFrameInfo::ParseFDE().
void UnwindPlan::Row::SetRegisterInfo | ( | uint32_t | reg_num, |
const AbstractRegisterLocation | register_location ) |
Definition at line 283 of file UnwindPlan.cpp.
References m_register_locations.
Referenced by lldb_private::x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly(), lldb_private::ArmUnwindInfo::GetUnwindPlan(), lldb_private::DWARFCallFrameInfo::HandleCommonDwarfOpcode(), lldb_private::breakpad::SymbolFileBreakpad::ParseCFIUnwindRow(), lldb_private::DWARFCallFrameInfo::ParseFDE(), and lldb_private::breakpad::SymbolFileBreakpad::ParseWinUnwindPlan().
bool UnwindPlan::Row::SetRegisterLocationToAtCFAPlusOffset | ( | uint32_t | reg_num, |
int32_t | offset, | ||
bool | can_replace ) |
Definition at line 289 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetAtCFAPlusOffset().
Referenced by EHProgramRange::BuildUnwindPlanRow(), ABIAArch64::CreateDefaultUnwindPlan(), ABIMacOSX_arm::CreateDefaultUnwindPlan(), ABIMacOSX_i386::CreateDefaultUnwindPlan(), ABISysV_arm::CreateDefaultUnwindPlan(), ABISysV_hexagon::CreateDefaultUnwindPlan(), ABISysV_i386::CreateDefaultUnwindPlan(), ABISysV_loongarch::CreateDefaultUnwindPlan(), ABISysV_msp430::CreateDefaultUnwindPlan(), ABISysV_ppc64::CreateDefaultUnwindPlan(), ABISysV_ppc::CreateDefaultUnwindPlan(), ABISysV_riscv::CreateDefaultUnwindPlan(), ABISysV_x86_64::CreateDefaultUnwindPlan(), ABIWindows_x86_64::CreateDefaultUnwindPlan(), ABIMacOSX_i386::CreateFunctionEntryUnwindPlan(), ABISysV_i386::CreateFunctionEntryUnwindPlan(), ABISysV_msp430::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(), GetAArch64TrapHandlerUnwindPlan(), lldb_private::ArchitectureArm::GetArchitectureUnwindPlan(), and lldb_private::ArmUnwindInfo::GetUnwindPlan().
bool UnwindPlan::Row::SetRegisterLocationToIsCFAPlusOffset | ( | uint32_t | reg_num, |
int32_t | offset, | ||
bool | can_replace ) |
Definition at line 301 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetIsCFAPlusOffset().
Referenced by EHProgramRange::BuildUnwindPlanRow(), ABIMacOSX_i386::CreateDefaultUnwindPlan(), ABISysV_hexagon::CreateDefaultUnwindPlan(), ABISysV_i386::CreateDefaultUnwindPlan(), ABISysV_msp430::CreateDefaultUnwindPlan(), ABISysV_ppc64::CreateDefaultUnwindPlan(), ABISysV_ppc::CreateDefaultUnwindPlan(), ABISysV_x86_64::CreateDefaultUnwindPlan(), ABIWindows_x86_64::CreateDefaultUnwindPlan(), ABIMacOSX_i386::CreateFunctionEntryUnwindPlan(), ABISysV_i386::CreateFunctionEntryUnwindPlan(), ABISysV_msp430::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(), and lldb_private::ArchitectureArm::GetArchitectureUnwindPlan().
bool UnwindPlan::Row::SetRegisterLocationToIsConstant | ( | uint32_t | reg_num, |
uint64_t | constant, | ||
bool | can_replace ) |
Definition at line 375 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetIsConstant().
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().
bool UnwindPlan::Row::SetRegisterLocationToRegister | ( | uint32_t | reg_num, |
uint32_t | other_reg_num, | ||
bool | can_replace ) |
Definition at line 341 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetInRegister().
Referenced by ABISysV_mips64::CreateDefaultUnwindPlan(), ABISysV_mips::CreateDefaultUnwindPlan(), EmulateInstructionMIPS64::CreateFunctionEntryUnwind(), EmulateInstructionMIPS::CreateFunctionEntryUnwind(), ABIAArch64::CreateFunctionEntryUnwindPlan(), ABIMacOSX_arm::CreateFunctionEntryUnwindPlan(), ABISysV_arc::CreateFunctionEntryUnwindPlan(), ABISysV_arm::CreateFunctionEntryUnwindPlan(), ABISysV_hexagon::CreateFunctionEntryUnwindPlan(), ABISysV_loongarch::CreateFunctionEntryUnwindPlan(), ABISysV_mips64::CreateFunctionEntryUnwindPlan(), ABISysV_mips::CreateFunctionEntryUnwindPlan(), ABISysV_ppc64::CreateFunctionEntryUnwindPlan(), ABISysV_ppc::CreateFunctionEntryUnwindPlan(), ABISysV_riscv::CreateFunctionEntryUnwindPlan(), ABISysV_s390x::CreateFunctionEntryUnwindPlan(), lldb_private::CompactUnwindInfo::CreateUnwindPlan_arm64(), and lldb_private::ArmUnwindInfo::GetUnwindPlan().
Definition at line 353 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetSame().
Referenced by EmulateInstructionARM64::CreateFunctionEntryUnwind().
bool UnwindPlan::Row::SetRegisterLocationToUndefined | ( | uint32_t | reg_num, |
bool | can_replace, | ||
bool | can_replace_only_if_unspecified ) |
Definition at line 313 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetUndefined().
Definition at line 330 of file UnwindPlan.cpp.
References m_register_locations, and lldb_private::UnwindPlan::Row::AbstractRegisterLocation::SetUnspecified().
Referenced by ABISysV_msp430::CreateDefaultUnwindPlan().
|
inline |
Definition at line 408 of file UnwindPlan.h.
References m_unspecified_registers_are_undefined.
Referenced by ABIAArch64::CreateDefaultUnwindPlan(), ABIMacOSX_arm::CreateDefaultUnwindPlan(), ABIMacOSX_i386::CreateDefaultUnwindPlan(), ABISysV_arm::CreateDefaultUnwindPlan(), ABISysV_hexagon::CreateDefaultUnwindPlan(), ABISysV_i386::CreateDefaultUnwindPlan(), ABISysV_mips64::CreateDefaultUnwindPlan(), ABISysV_mips::CreateDefaultUnwindPlan(), ABISysV_ppc64::CreateDefaultUnwindPlan(), ABISysV_ppc::CreateDefaultUnwindPlan(), ABISysV_x86_64::CreateDefaultUnwindPlan(), and ABIWindows_x86_64::CreateDefaultUnwindPlan().
|
inline |
Definition at line 363 of file UnwindPlan.h.
References m_offset.
Referenced by lldb_private::DWARFCallFrameInfo::GetUnwindPlan(), and lldb_private::DWARFCallFrameInfo::ParseFDE().
|
protected |
Definition at line 426 of file UnwindPlan.h.
Referenced by Clear(), Dump(), GetAFAValue(), GetAFAValue(), operator==(), and Row().
|
protected |
Definition at line 425 of file UnwindPlan.h.
Referenced by Clear(), Dump(), GetCFAValue(), GetCFAValue(), operator==(), and Row().
|
protected |
Definition at line 423 of file UnwindPlan.h.
Referenced by Clear(), GetOffset(), operator==(), SetOffset(), and SlideOffset().
|
protected |
Definition at line 427 of file UnwindPlan.h.
Referenced by Clear(), Dump(), GetRegisterInfo(), operator==(), RemoveRegisterInfo(), Row(), SetRegisterInfo(), SetRegisterLocationToAtCFAPlusOffset(), SetRegisterLocationToIsCFAPlusOffset(), SetRegisterLocationToIsConstant(), SetRegisterLocationToIsDWARFExpression(), SetRegisterLocationToRegister(), SetRegisterLocationToSame(), SetRegisterLocationToUndefined(), and SetRegisterLocationToUnspecified().
|
protected |
Definition at line 428 of file UnwindPlan.h.
Referenced by Clear(), GetRegisterInfo(), GetUnspecifiedRegistersAreUndefined(), operator==(), and SetUnspecifiedRegistersAreUndefined().