23 m_reg_ctx_sp(), m_register_data_addr(register_data_addr), m_stop_id(0) {}
30 ProcessSP process_sp(thread_sp->GetProcess());
33 const uint32_t stop_id = process_sp->GetModID().GetStopID();
39 ThreadSP backing_thread_sp(thread_sp->GetBackingThread());
40 if (backing_thread_sp) {
105 return m_reg_ctx_sp->WriteRegister(reg_info, reg_value);
129 return m_reg_ctx_sp->CopyFromRegisterContext(reg_ctx_sp);
137 return m_reg_ctx_sp->ConvertRegisterKindToRegisterNumber(kind, num);
176 return m_reg_ctx_sp->SetHardwareWatchpoint(addr, size, read, write);
199 return m_reg_ctx_sp->ReadRegisterValueFromMemory(reg_info, src_addr,
202 error.SetErrorString(
"invalid register context");
211 return m_reg_ctx_sp->WriteRegisterValueToMemory(reg_info, dst_addr, dst_len,
214 error.SetErrorString(
"invalid register context");
static llvm::raw_ostream & error(Stream &strm)
A plug-in interface definition class for halted OS helpers.
virtual lldb::RegisterContextSP CreateRegisterContextForThread(Thread *thread, lldb::addr_t reg_data_addr)=0
virtual bool IsOperatingSystemPluginThread(const lldb::ThreadSP &thread_sp)
bool WriteRegister(const RegisterInfo *reg_info, const RegisterValue ®_value) override
const RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
lldb::addr_t m_register_data_addr
void InvalidateAllRegisters() override
bool ClearHardwareWatchpoint(uint32_t hw_index) override
bool ClearHardwareBreakpoint(uint32_t hw_idx) override
lldb::ThreadWP m_thread_wp
bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override
lldb::RegisterContextSP m_reg_ctx_sp
~RegisterContextThreadMemory() override
uint32_t NumSupportedHardwareWatchpoints() override
uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write) override
Status ReadRegisterValueFromMemory(const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue ®_value) override
size_t GetRegisterSetCount() override
bool CopyFromRegisterContext(lldb::RegisterContextSP context)
bool ReadRegister(const RegisterInfo *reg_info, RegisterValue ®_value) override
bool HardwareSingleStep(bool enable) override
RegisterContextThreadMemory(Thread &thread, lldb::addr_t register_data_addr)
uint32_t SetHardwareBreakpoint(lldb::addr_t addr, size_t size) override
size_t GetRegisterCount() override
uint32_t NumSupportedHardwareBreakpoints() override
void UpdateRegisterContext()
Status WriteRegisterValueToMemory(const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue ®_value) override
const RegisterSet * GetRegisterSet(size_t reg_set) override
bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override
uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind, uint32_t num) override
Convert from a given register numbering scheme to the lldb register numbering scheme.
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::Process > ProcessSP
std::shared_ptr< lldb_private::DataBuffer > DataBufferSP
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP
RegisterKind
Register numbering types.
Every register is described in detail including its name, alternate name (optional),...
Registers are grouped into register sets.