9#ifndef LLDB_HOST_COMMON_NATIVEREGISTERCONTEXT_H
10#define LLDB_HOST_COMMON_NATIVEREGISTERCONTEXT_H
17class NativeThreadProtocol;
22 :
public std::enable_shared_from_this<NativeRegisterContext> {
76 uint32_t watch_flags);
121 virtual std::vector<uint32_t>
127 uint32_t start_idx = 0);
virtual const RegisterSet * GetRegisterSet(uint32_t set_index) const =0
virtual bool ClearHardwareBreakpoint(uint32_t hw_idx)
virtual bool ClearHardwareWatchpoint(uint32_t hw_index)
uint32_t ConvertRegisterKindToRegisterNumber(uint32_t kind, uint32_t num) const
Status SetSP(lldb::addr_t sp)
lldb::addr_t GetSP(lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
virtual Status ClearWatchpointHit(uint32_t hw_index)
lldb::addr_t GetFlags(lldb::addr_t fail_value=0)
virtual Status IsWatchpointHit(uint32_t wp_index, bool &is_hit)
virtual uint32_t GetUserRegisterCount() const =0
virtual NativeThreadProtocol & GetThread()
lldb::addr_t GetFP(lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
lldb::addr_t ReadRegisterAsUnsigned(uint32_t reg, lldb::addr_t fail_value)
const RegisterInfo * GetRegisterInfo(uint32_t reg_kind, uint32_t reg_num)
virtual Status GetWatchpointHitIndex(uint32_t &wp_index, lldb::addr_t trap_addr)
const char * GetRegisterName(uint32_t reg)
Status WriteRegisterFromUnsigned(uint32_t reg, uint64_t uval)
virtual const RegisterInfo * GetRegisterInfoAtIndex(uint32_t reg) const =0
const char * GetRegisterSetNameForRegisterAtIndex(uint32_t reg_index) const
const RegisterInfo * GetRegisterInfoByName(llvm::StringRef reg_name, uint32_t start_idx=0)
virtual uint32_t GetRegisterCount() const =0
virtual uint32_t NumSupportedHardwareWatchpoints()
virtual Status ClearAllHardwareBreakpoints()
virtual bool HardwareSingleStep(bool enable)
virtual Status ReadRegisterValueFromMemory(const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, size_t src_len, RegisterValue ®_value)
virtual Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp)=0
virtual Status ReadRegister(const RegisterInfo *reg_info, RegisterValue ®_value)=0
virtual bool RegisterOffsetIsDynamic() const
virtual lldb::addr_t GetWatchpointAddress(uint32_t wp_index)
lldb::addr_t GetPC(lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
virtual lldb::addr_t GetWatchpointHitAddress(uint32_t wp_index)
virtual Status ClearAllHardwareWatchpoints()
virtual Status ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp)=0
virtual std::vector< uint32_t > GetExpeditedRegisters(ExpeditedRegs expType) const
const NativeRegisterContext & operator=(const NativeRegisterContext &)=delete
Status SetPC(lldb::addr_t pc)
virtual Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant)
NativeRegisterContext(const NativeRegisterContext &)=delete
virtual ~NativeRegisterContext()
virtual lldb::addr_t GetPCfromBreakpointLocation(lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
virtual uint32_t NumSupportedHardwareBreakpoints()
NativeThreadProtocol & m_thread
virtual uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size, uint32_t watch_flags)
Status SetFP(lldb::addr_t fp)
virtual Status WriteRegisterValueToMemory(const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, size_t dst_len, const RegisterValue ®_value)
lldb::addr_t GetReturnAddress(lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
virtual uint32_t GetRegisterSetCount() const =0
virtual Status GetHardwareBreakHitIndex(uint32_t &bp_index, lldb::addr_t trap_addr)
virtual lldb::tid_t GetThreadID() const
virtual uint32_t SetHardwareBreakpoint(lldb::addr_t addr, size_t size)
virtual Status WriteRegister(const RegisterInfo *reg_info, const RegisterValue ®_value)=0
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::DataBuffer > DataBufferSP
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP
Every register is described in detail including its name, alternate name (optional),...
Registers are grouped into register sets.