LLDB mainline
|
#include <RegisterContextThreadMemory.h>
Public Member Functions | |
RegisterContextThreadMemory (Thread &thread, lldb::addr_t register_data_addr) | |
~RegisterContextThreadMemory () override | |
void | InvalidateAllRegisters () override |
size_t | GetRegisterCount () override |
const RegisterInfo * | GetRegisterInfoAtIndex (size_t reg) override |
size_t | GetRegisterSetCount () override |
const RegisterSet * | GetRegisterSet (size_t reg_set) override |
bool | ReadRegister (const RegisterInfo *reg_info, RegisterValue ®_value) override |
bool | WriteRegister (const RegisterInfo *reg_info, const RegisterValue ®_value) override |
bool | ReadAllRegisterValues (lldb::WritableDataBufferSP &data_sp) override |
bool | ReadAllRegisterValues (lldb_private::RegisterCheckpoint ®_checkpoint) override |
bool | WriteAllRegisterValues (const lldb::DataBufferSP &data_sp) override |
bool | WriteAllRegisterValues (const lldb_private::RegisterCheckpoint ®_checkpoint) override |
bool | CopyFromRegisterContext (lldb::RegisterContextSP context) |
uint32_t | ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num) override |
Convert from a given register numbering scheme to the lldb register numbering scheme. | |
uint32_t | NumSupportedHardwareBreakpoints () override |
uint32_t | SetHardwareBreakpoint (lldb::addr_t addr, size_t size) override |
bool | ClearHardwareBreakpoint (uint32_t hw_idx) override |
uint32_t | NumSupportedHardwareWatchpoints () override |
uint32_t | SetHardwareWatchpoint (lldb::addr_t addr, size_t size, bool read, bool write) override |
bool | ClearHardwareWatchpoint (uint32_t hw_index) override |
bool | HardwareSingleStep (bool enable) override |
Status | ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue ®_value) override |
Status | WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue ®_value) override |
Public Member Functions inherited from lldb_private::RegisterContext | |
RegisterContext (Thread &thread, uint32_t concrete_frame_idx) | |
~RegisterContext () override | |
void | InvalidateIfNeeded (bool force) |
virtual lldb::ByteOrder | GetByteOrder () |
virtual bool | RegisterWriteCausesReconfigure (const llvm::StringRef name) |
virtual bool | ReconfigureRegisterInfo () |
bool | CopyFromRegisterContext (lldb::RegisterContextSP context) |
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) |
uint64_t | GetThreadPointer (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) |
Public Member Functions inherited from lldb_private::ExecutionContextScope | |
virtual | ~ExecutionContextScope ()=default |
Protected Member Functions | |
void | UpdateRegisterContext () |
Protected Member Functions inherited from lldb_private::RegisterContext | |
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 | |
lldb::ThreadWP | m_thread_wp |
lldb::RegisterContextSP | m_reg_ctx_sp |
lldb::addr_t | m_register_data_addr |
uint32_t | m_stop_id |
Protected Attributes inherited from lldb_private::RegisterContext | |
Thread & | m_thread |
uint32_t | m_concrete_frame_idx |
uint32_t | m_stop_id |
Private Member Functions | |
RegisterContextThreadMemory (const RegisterContextThreadMemory &)=delete | |
const RegisterContextThreadMemory & | operator= (const RegisterContextThreadMemory &)=delete |
Private Attributes | |
std::mutex | m_update_register_ctx_lock |
Definition at line 20 of file RegisterContextThreadMemory.h.
RegisterContextThreadMemory::RegisterContextThreadMemory | ( | Thread & | thread, |
lldb::addr_t | register_data_addr ) |
Definition at line 20 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, m_register_data_addr, m_stop_id, m_thread_wp, and lldb_private::RegisterContext::RegisterContext().
Referenced by operator=(), and RegisterContextThreadMemory().
|
overridedefault |
|
privatedelete |
References RegisterContextThreadMemory().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 174 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 198 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Convert from a given register numbering scheme to the lldb register numbering scheme.
There may be multiple ways to enumerate the registers for a given architecture. ABI references will specify one to be used with DWARF, the register numberings from process plugin, there may be a variation used for eh_frame unwind instructions (e.g. on Darwin), and so on. Register 5 by itself is meaningless - RegisterKind enumeration tells you what context that number should be translated as.
Inside lldb, register numbers are in the eRegisterKindLLDB scheme; arguments which take a register number should take one in that scheme.
eRegisterKindGeneric is a special numbering scheme which gives us constant values for the pc, frame register, stack register, etc., for use within lldb. They may not be defined for all architectures but it allows generic code to translate these common registers into the lldb numbering scheme.
This method translates a given register kind + register number into the eRegisterKindLLDB register numbering.
[in] | kind | The register numbering scheme (RegisterKind) that the following register number is in. |
[in] | num | A register number in the 'kind' register numbering scheme. |
Reimplemented from lldb_private::RegisterContext.
Definition at line 151 of file RegisterContextThreadMemory.cpp.
References LLDB_INVALID_REGNUM, m_reg_ctx_sp, and UpdateRegisterContext().
bool RegisterContextThreadMemory::CopyFromRegisterContext | ( | lldb::RegisterContextSP | context | ) |
Definition at line 143 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 66 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 74 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 88 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 81 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
Reimplemented from lldb_private::RegisterContext.
Definition at line 205 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 60 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 159 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 181 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
privatedelete |
References RegisterContextThreadMemory().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 111 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 119 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 95 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 212 of file RegisterContextThreadMemory.cpp.
References lldb_private::Status::FromErrorString(), m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 166 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 188 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
protected |
Definition at line 27 of file RegisterContextThreadMemory.cpp.
References lldb_private::OperatingSystem::CreateRegisterContextForThread(), lldb_private::OperatingSystem::IsOperatingSystemPluginThread(), m_reg_ctx_sp, m_register_data_addr, m_stop_id, m_thread_wp, and m_update_register_ctx_lock.
Referenced by ClearHardwareBreakpoint(), ClearHardwareWatchpoint(), ConvertRegisterKindToRegisterNumber(), CopyFromRegisterContext(), GetRegisterCount(), GetRegisterInfoAtIndex(), GetRegisterSet(), GetRegisterSetCount(), HardwareSingleStep(), InvalidateAllRegisters(), NumSupportedHardwareBreakpoints(), NumSupportedHardwareWatchpoints(), ReadAllRegisterValues(), ReadAllRegisterValues(), ReadRegister(), ReadRegisterValueFromMemory(), SetHardwareBreakpoint(), SetHardwareWatchpoint(), WriteAllRegisterValues(), WriteAllRegisterValues(), WriteRegister(), and WriteRegisterValueToMemory().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 127 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 135 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 103 of file RegisterContextThreadMemory.cpp.
References m_reg_ctx_sp, and UpdateRegisterContext().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 222 of file RegisterContextThreadMemory.cpp.
References lldb_private::Status::FromErrorString(), m_reg_ctx_sp, and UpdateRegisterContext().
|
protected |
Definition at line 94 of file RegisterContextThreadMemory.h.
Referenced by ClearHardwareBreakpoint(), ClearHardwareWatchpoint(), ConvertRegisterKindToRegisterNumber(), CopyFromRegisterContext(), GetRegisterCount(), GetRegisterInfoAtIndex(), GetRegisterSet(), GetRegisterSetCount(), HardwareSingleStep(), InvalidateAllRegisters(), NumSupportedHardwareBreakpoints(), NumSupportedHardwareWatchpoints(), ReadAllRegisterValues(), ReadAllRegisterValues(), ReadRegister(), ReadRegisterValueFromMemory(), RegisterContextThreadMemory(), SetHardwareBreakpoint(), SetHardwareWatchpoint(), UpdateRegisterContext(), WriteAllRegisterValues(), WriteAllRegisterValues(), WriteRegister(), and WriteRegisterValueToMemory().
|
protected |
Definition at line 95 of file RegisterContextThreadMemory.h.
Referenced by RegisterContextThreadMemory(), and UpdateRegisterContext().
|
protected |
Definition at line 96 of file RegisterContextThreadMemory.h.
Referenced by RegisterContextThreadMemory(), and UpdateRegisterContext().
|
protected |
Definition at line 93 of file RegisterContextThreadMemory.h.
Referenced by RegisterContextThreadMemory(), and UpdateRegisterContext().
|
private |
Definition at line 103 of file RegisterContextThreadMemory.h.
Referenced by UpdateRegisterContext().