LLDB mainline
|
#include <RegisterContextPOSIX_x86.h>
Classes | |
struct | RegInfo |
Public Types | |
enum | FPRType { eNotValid = 0 , eFSAVE , eFXSAVE , eSOFT , eXSAVE } |
Public Member Functions | |
RegisterContextPOSIX_x86 (lldb_private::Thread &thread, uint32_t concrete_frame_idx, lldb_private::RegisterInfoInterface *register_info) | |
~RegisterContextPOSIX_x86 () override | |
void | Invalidate () |
void | InvalidateAllRegisters () override |
size_t | GetRegisterCount () override |
virtual size_t | GetGPRSize () |
virtual size_t | GetFXSAVEOffset () |
virtual unsigned | GetRegisterSize (unsigned reg) |
virtual unsigned | GetRegisterOffset (unsigned reg) |
const lldb_private::RegisterInfo * | GetRegisterInfoAtIndex (size_t reg) override |
size_t | GetRegisterSetCount () override |
const lldb_private::RegisterSet * | GetRegisterSet (size_t set) override |
const char * | GetRegisterName (unsigned reg) |
![]() | |
RegisterContext (Thread &thread, uint32_t concrete_frame_idx) | |
~RegisterContext () override | |
void | InvalidateIfNeeded (bool force) |
virtual void | InvalidateAllRegisters ()=0 |
virtual size_t | GetRegisterCount ()=0 |
virtual const RegisterInfo * | GetRegisterInfoAtIndex (size_t reg)=0 |
virtual size_t | GetRegisterSetCount ()=0 |
virtual const RegisterSet * | GetRegisterSet (size_t reg_set)=0 |
virtual lldb::ByteOrder | GetByteOrder () |
virtual bool | ReadRegister (const RegisterInfo *reg_info, RegisterValue ®_value)=0 |
virtual bool | WriteRegister (const RegisterInfo *reg_info, const RegisterValue ®_value)=0 |
virtual bool | ReadAllRegisterValues (lldb::WritableDataBufferSP &data_sp) |
virtual bool | WriteAllRegisterValues (const lldb::DataBufferSP &data_sp) |
virtual bool | ReadAllRegisterValues (lldb_private::RegisterCheckpoint ®_checkpoint) |
virtual bool | WriteAllRegisterValues (const lldb_private::RegisterCheckpoint ®_checkpoint) |
bool | CopyFromRegisterContext (lldb::RegisterContextSP context) |
virtual uint32_t | ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num) |
Convert from a given register numbering scheme to the lldb register numbering scheme. | |
virtual uint32_t | NumSupportedHardwareBreakpoints () |
virtual uint32_t | SetHardwareBreakpoint (lldb::addr_t addr, size_t size) |
virtual bool | ClearHardwareBreakpoint (uint32_t hw_idx) |
virtual uint32_t | NumSupportedHardwareWatchpoints () |
virtual uint32_t | SetHardwareWatchpoint (lldb::addr_t addr, size_t size, bool read, bool write) |
virtual bool | ClearHardwareWatchpoint (uint32_t hw_index) |
virtual bool | HardwareSingleStep (bool enable) |
virtual Status | ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue ®_value) |
virtual Status | WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue ®_value) |
virtual lldb::tid_t | GetThreadID () const |
virtual Thread & | GetThread () |
const RegisterInfo * | GetRegisterInfoByName (llvm::StringRef reg_name, uint32_t start_idx=0) |
const RegisterInfo * | GetRegisterInfo (lldb::RegisterKind reg_kind, uint32_t reg_num) |
uint64_t | GetPC (uint64_t fail_value=LLDB_INVALID_ADDRESS) |
bool | GetPCForSymbolication (Address &address) |
Get an address suitable for symbolication. | |
bool | SetPC (uint64_t pc) |
bool | SetPC (Address addr) |
uint64_t | GetSP (uint64_t fail_value=LLDB_INVALID_ADDRESS) |
bool | SetSP (uint64_t sp) |
uint64_t | GetFP (uint64_t fail_value=LLDB_INVALID_ADDRESS) |
bool | SetFP (uint64_t fp) |
const char * | GetRegisterName (uint32_t reg) |
uint64_t | GetReturnAddress (uint64_t fail_value=LLDB_INVALID_ADDRESS) |
uint64_t | GetFlags (uint64_t fail_value=0) |
uint64_t | ReadRegisterAsUnsigned (uint32_t reg, uint64_t fail_value) |
uint64_t | ReadRegisterAsUnsigned (const RegisterInfo *reg_info, uint64_t fail_value) |
bool | WriteRegisterFromUnsigned (uint32_t reg, uint64_t uval) |
bool | WriteRegisterFromUnsigned (const RegisterInfo *reg_info, uint64_t uval) |
bool | ConvertBetweenRegisterKinds (lldb::RegisterKind source_rk, uint32_t source_regnum, lldb::RegisterKind target_rk, uint32_t &target_regnum) |
lldb::TargetSP | CalculateTarget () override |
lldb::ProcessSP | CalculateProcess () override |
lldb::ThreadSP | CalculateThread () override |
lldb::StackFrameSP | CalculateStackFrame () override |
void | CalculateExecutionContext (ExecutionContext &exe_ctx) override |
Reconstruct the object's execution context into sc. | |
uint32_t | GetStopID () const |
void | SetStopID (uint32_t stop_id) |
![]() | |
virtual | ~ExecutionContextScope ()=default |
virtual lldb::TargetSP | CalculateTarget ()=0 |
virtual lldb::ProcessSP | CalculateProcess ()=0 |
virtual lldb::ThreadSP | CalculateThread ()=0 |
virtual lldb::StackFrameSP | CalculateStackFrame ()=0 |
virtual void | CalculateExecutionContext (ExecutionContext &exe_ctx)=0 |
Reconstruct the object's execution context into sc. | |
Protected Member Functions | |
virtual bool | IsRegisterSetAvailable (size_t set_index) |
virtual const lldb_private::RegisterInfo * | GetRegisterInfo () |
bool | IsGPR (unsigned reg) |
bool | IsFPR (unsigned reg) |
bool | IsAVX (unsigned reg) |
bool | CopyXSTATEtoYMM (uint32_t reg, lldb::ByteOrder byte_order) |
bool | CopyYMMtoXSTATE (uint32_t reg, lldb::ByteOrder byte_order) |
bool | IsFPR (unsigned reg, FPRType fpr_type) |
FPRType | GetFPRType () |
virtual bool | ReadGPR ()=0 |
virtual bool | ReadFPR ()=0 |
virtual bool | WriteGPR ()=0 |
virtual bool | WriteFPR ()=0 |
![]() | |
virtual bool | BehavesLikeZerothFrame () const |
Indicates that this frame is currently executing code, that the PC value is not a return-pc but an actual executing instruction. | |
Protected Attributes | |
uint64_t | m_gpr_x86_64 [lldb_private::k_num_gpr_registers_x86_64] |
RegInfo | m_reg_info |
FPRType | m_fpr_type |
lldb_private::FPR | m_fpr |
lldb_private::YMM | m_ymm_set |
std::unique_ptr< lldb_private::RegisterInfoInterface > | m_register_info_up |
![]() | |
Thread & | m_thread |
uint32_t | m_concrete_frame_idx |
uint32_t | m_stop_id |
Definition at line 18 of file RegisterContextPOSIX_x86.h.
Enumerator | |
---|---|
eNotValid | |
eFSAVE | |
eFXSAVE | |
eSOFT | |
eXSAVE |
Definition at line 49 of file RegisterContextPOSIX_x86.h.
RegisterContextPOSIX_x86::RegisterContextPOSIX_x86 | ( | lldb_private::Thread & | thread, |
uint32_t | concrete_frame_idx, | ||
lldb_private::RegisterInfoInterface * | register_info | ||
) |
Definition at line 396 of file RegisterContextPOSIX_x86.cpp.
References eNotValid, RegisterContextPOSIX_x86::RegInfo::first_dr, RegisterContextPOSIX_x86::RegInfo::first_fpr, RegisterContextPOSIX_x86::RegInfo::first_mm, RegisterContextPOSIX_x86::RegInfo::first_st, RegisterContextPOSIX_x86::RegInfo::first_xmm, RegisterContextPOSIX_x86::RegInfo::first_ymm, lldb_private::ArchSpec::GetMachine(), lldb_private::RegisterInfoInterface::GetTargetArchitecture(), RegisterContextPOSIX_x86::RegInfo::gpr_flags, lldb_private::k_first_fpr_i386, lldb_private::k_first_fpr_x86_64, lldb_private::k_last_fpr_i386, lldb_private::k_last_fpr_x86_64, lldb_private::k_last_gpr_i386, lldb_private::k_last_gpr_x86_64, lldb_private::k_num_avx_registers_i386, lldb_private::k_num_avx_registers_x86_64, lldb_private::k_num_fpr_registers_i386, lldb_private::k_num_fpr_registers_x86_64, lldb_private::k_num_gpr_registers_i386, lldb_private::k_num_gpr_registers_x86_64, lldb_private::k_num_registers_i386, lldb_private::k_num_registers_x86_64, RegisterContextPOSIX_x86::RegInfo::last_fpr, RegisterContextPOSIX_x86::RegInfo::last_gpr, RegisterContextPOSIX_x86::RegInfo::last_mm, RegisterContextPOSIX_x86::RegInfo::last_st, RegisterContextPOSIX_x86::RegInfo::last_xmm, RegisterContextPOSIX_x86::RegInfo::last_ymm, lldb_private::lldb_dr0_i386, lldb_private::lldb_dr0_x86_64, lldb_private::lldb_eflags_i386, lldb_private::lldb_mm0_i386, lldb_private::lldb_mm0_x86_64, lldb_private::lldb_mm7_i386, lldb_private::lldb_mm7_x86_64, lldb_private::lldb_rflags_x86_64, lldb_private::lldb_st0_i386, lldb_private::lldb_st0_x86_64, lldb_private::lldb_st7_i386, lldb_private::lldb_st7_x86_64, lldb_private::lldb_xmm0_i386, lldb_private::lldb_xmm0_x86_64, lldb_private::lldb_xmm15_x86_64, lldb_private::lldb_xmm7_i386, lldb_private::lldb_ymm0_i386, lldb_private::lldb_ymm0_x86_64, lldb_private::lldb_ymm15_x86_64, lldb_private::lldb_ymm7_i386, m_fpr, m_fpr_type, m_reg_info, m_register_info_up, m_ymm_set, RegisterContextPOSIX_x86::RegInfo::num_avx_registers, RegisterContextPOSIX_x86::RegInfo::num_fpr_registers, RegisterContextPOSIX_x86::RegInfo::num_gpr_registers, and RegisterContextPOSIX_x86::RegInfo::num_registers.
|
overridedefault |
|
protected |
Definition at line 557 of file RegisterContextPOSIX_x86.cpp.
References lldb_private::XMMReg::bytes, lldb_private::YMMHReg::bytes, lldb::eByteOrderLittle, RegisterContextPOSIX_x86::RegInfo::first_ymm, lldb_private::FPR::fxsave, IsAVX(), m_fpr, m_reg_info, m_ymm_set, lldb_private::FXSAVE::xmm, lldb_private::FPR::xsave, lldb_private::XStateToYMM(), lldb_private::YMM::ymm, and lldb_private::XSAVE::ymmh.
|
protected |
Definition at line 540 of file RegisterContextPOSIX_x86.cpp.
References lldb_private::XMMReg::bytes, lldb_private::YMMHReg::bytes, lldb::eByteOrderLittle, RegisterContextPOSIX_x86::RegInfo::first_ymm, lldb_private::FPR::fxsave, IsAVX(), m_fpr, m_reg_info, m_ymm_set, lldb_private::FXSAVE::xmm, lldb_private::FPR::xsave, lldb_private::YMM::ymm, lldb_private::XSAVE::ymmh, and lldb_private::YMMToXState().
|
protected |
Definition at line 454 of file RegisterContextPOSIX_x86.cpp.
References eFXSAVE, eNotValid, eXSAVE, m_fpr_type, and ReadFPR().
Referenced by GetRegisterCount(), and IsRegisterSetAvailable().
|
virtual |
Definition at line 490 of file RegisterContextPOSIX_x86.cpp.
References RegisterContextPOSIX_x86::RegInfo::first_fpr, GetRegisterInfo(), and m_reg_info.
Referenced by RegisterContextCorePOSIX_x86_64::ReadRegister().
|
virtual |
Definition at line 486 of file RegisterContextPOSIX_x86.cpp.
References m_register_info_up.
Referenced by RegisterContextCorePOSIX_x86_64::ReadRegister(), and RegisterContextCorePOSIX_x86_64::RegisterContextCorePOSIX_x86_64().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 478 of file RegisterContextPOSIX_x86.cpp.
References eXSAVE, GetFPRType(), m_reg_info, RegisterContextPOSIX_x86::RegInfo::num_avx_registers, RegisterContextPOSIX_x86::RegInfo::num_fpr_registers, and RegisterContextPOSIX_x86::RegInfo::num_gpr_registers.
|
protectedvirtual |
Definition at line 494 of file RegisterContextPOSIX_x86.cpp.
References m_register_info_up.
Referenced by GetFXSAVEOffset(), GetRegisterInfoAtIndex(), GetRegisterName(), GetRegisterOffset(), and GetRegisterSize().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 502 of file RegisterContextPOSIX_x86.cpp.
References GetRegisterInfo(), m_reg_info, and RegisterContextPOSIX_x86::RegInfo::num_registers.
const char * RegisterContextPOSIX_x86::GetRegisterName | ( | unsigned | reg | ) |
Definition at line 534 of file RegisterContextPOSIX_x86.cpp.
References GetRegisterInfo(), m_reg_info, and RegisterContextPOSIX_x86::RegInfo::num_registers.
|
virtual |
Definition at line 468 of file RegisterContextPOSIX_x86.cpp.
References GetRegisterInfo(), m_reg_info, and RegisterContextPOSIX_x86::RegInfo::num_registers.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 519 of file RegisterContextPOSIX_x86.cpp.
References g_reg_sets_i386, g_reg_sets_x86_64, IsRegisterSetAvailable(), and m_register_info_up.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 509 of file RegisterContextPOSIX_x86.cpp.
References IsRegisterSetAvailable(), and k_num_register_sets.
|
virtual |
Definition at line 473 of file RegisterContextPOSIX_x86.cpp.
References GetRegisterInfo(), m_reg_info, and RegisterContextPOSIX_x86::RegInfo::num_registers.
void RegisterContextPOSIX_x86::Invalidate | ( | ) |
Definition at line 464 of file RegisterContextPOSIX_x86.cpp.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 466 of file RegisterContextPOSIX_x86.cpp.
|
protected |
Definition at line 384 of file RegisterContextPOSIX_x86.cpp.
References RegisterContextPOSIX_x86::RegInfo::first_ymm, RegisterContextPOSIX_x86::RegInfo::last_ymm, and m_reg_info.
Referenced by CopyXSTATEtoYMM(), CopyYMMtoXSTATE(), and IsFPR().
|
protected |
Definition at line 380 of file RegisterContextPOSIX_x86.cpp.
References RegisterContextPOSIX_x86::RegInfo::first_fpr, RegisterContextPOSIX_x86::RegInfo::last_fpr, and m_reg_info.
Referenced by IsFPR().
|
protected |
Definition at line 388 of file RegisterContextPOSIX_x86.cpp.
|
protected |
Definition at line 376 of file RegisterContextPOSIX_x86.cpp.
References RegisterContextPOSIX_x86::RegInfo::last_gpr, and m_reg_info.
|
protectedvirtual |
Definition at line 573 of file RegisterContextPOSIX_x86.cpp.
References eXSAVE, GetFPRType(), k_num_extended_register_sets, and k_num_register_sets.
Referenced by GetRegisterSet(), and GetRegisterSetCount().
|
protectedpure virtual |
Implemented in RegisterContextCorePOSIX_x86_64, RegisterContextFreeBSDKernel_i386, and RegisterContextFreeBSDKernel_x86_64.
Referenced by GetFPRType().
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
static |
Definition at line 57 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 63 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 58 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 59 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 61 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 60 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 62 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 64 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 110 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 109 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 85 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 86 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 87 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 88 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 89 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 90 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 83 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 84 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 75 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 81 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 76 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 77 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 79 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 78 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 80 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 82 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 115 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 133 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 116 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 134 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 117 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 135 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 118 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 136 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 119 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 137 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 120 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 138 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 121 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 139 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 122 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 140 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 66 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 72 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 67 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 68 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 70 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 69 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 71 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 73 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 113 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 112 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 102 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 103 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 104 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 105 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 106 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 107 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 100 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 101 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 92 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 98 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 93 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 94 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 96 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 95 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 97 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 99 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 124 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 142 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 125 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 143 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 126 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 144 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 127 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 145 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 128 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 146 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 129 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 147 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 130 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 148 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 131 of file RegisterContextPOSIX_x86.h.
|
static |
Definition at line 149 of file RegisterContextPOSIX_x86.h.
|
protected |
Definition at line 182 of file RegisterContextPOSIX_x86.h.
Referenced by CopyXSTATEtoYMM(), CopyYMMtoXSTATE(), and RegisterContextPOSIX_x86().
|
protected |
Definition at line 181 of file RegisterContextPOSIX_x86.h.
Referenced by GetFPRType(), and RegisterContextPOSIX_x86().
|
protected |
Definition at line 175 of file RegisterContextPOSIX_x86.h.
|
protected |
Definition at line 179 of file RegisterContextPOSIX_x86.h.
Referenced by CopyXSTATEtoYMM(), CopyYMMtoXSTATE(), GetFXSAVEOffset(), GetRegisterCount(), GetRegisterInfoAtIndex(), GetRegisterName(), GetRegisterOffset(), GetRegisterSize(), IsAVX(), IsFPR(), IsGPR(), and RegisterContextPOSIX_x86().
|
protected |
Definition at line 186 of file RegisterContextPOSIX_x86.h.
Referenced by GetGPRSize(), GetRegisterInfo(), GetRegisterSet(), and RegisterContextPOSIX_x86().
|
protected |
Definition at line 184 of file RegisterContextPOSIX_x86.h.
Referenced by CopyXSTATEtoYMM(), CopyYMMtoXSTATE(), and RegisterContextPOSIX_x86().