LLDB mainline
lldb_private::process_linux::NativeRegisterContextLinux Class Referenceabstract

#include <NativeRegisterContextLinux.h>

Inheritance diagram for lldb_private::process_linux::NativeRegisterContextLinux:
[legend]

Classes

struct  MemoryTaggingDetails
struct  MmapData
struct  SyscallData

Public Member Functions

virtual void InvalidateAllRegisters ()
virtual std::optional< SyscallDataGetSyscallData ()
 Return architecture-specific data needed to make inferior syscalls, if they are supported.
virtual std::optional< MmapDataGetMmapData ()
 Return the architecture-specific data needed to make mmap syscalls, if they are supported.
virtual llvm::Expected< MemoryTaggingDetailsGetMemoryTaggingDetails (int32_t type)
 Return architecture specific data needed to use memory tags, if they are supported.
Public Member Functions inherited from lldb_private::NativeRegisterContextRegisterInfo
 NativeRegisterContextRegisterInfo (NativeThreadProtocol &thread, RegisterInfoInterface *register_info_interface)
 Construct a NativeRegisterContextRegisterInfo, taking ownership of the register_info_interface pointer.
uint32_t GetRegisterCount () const override
uint32_t GetUserRegisterCount () const override
const RegisterInfoGetRegisterInfoAtIndex (uint32_t reg_index) const override
const RegisterInfoInterfaceGetRegisterInfoInterface () const
Public Member Functions inherited from lldb_private::NativeRegisterContext
 NativeRegisterContext (NativeThreadProtocol &thread)
virtual ~NativeRegisterContext ()
const char * GetRegisterSetNameForRegisterAtIndex (uint32_t reg_index) const
virtual uint32_t GetRegisterSetCount () const =0
virtual const RegisterSetGetRegisterSet (uint32_t set_index) const =0
virtual Status ReadRegister (const RegisterInfo *reg_info, RegisterValue &reg_value)=0
virtual Status WriteRegister (const RegisterInfo *reg_info, const RegisterValue &reg_value)=0
virtual Status ReadAllRegisterValues (lldb::WritableDataBufferSP &data_sp)=0
virtual Status WriteAllRegisterValues (const lldb::DataBufferSP &data_sp)=0
uint32_t ConvertRegisterKindToRegisterNumber (uint32_t kind, uint32_t num) const
virtual uint32_t NumSupportedHardwareBreakpoints ()
virtual uint32_t SetHardwareBreakpoint (lldb::addr_t addr, size_t size)
virtual bool ClearHardwareBreakpoint (uint32_t hw_idx)
virtual Status ClearAllHardwareBreakpoints ()
virtual Status GetHardwareBreakHitIndex (uint32_t &bp_index, lldb::addr_t trap_addr)
virtual uint32_t NumSupportedHardwareWatchpoints ()
virtual uint32_t SetHardwareWatchpoint (lldb::addr_t addr, size_t size, uint32_t watch_flags)
virtual bool ClearHardwareWatchpoint (uint32_t hw_index)
virtual Status ClearWatchpointHit (uint32_t hw_index)
virtual Status ClearAllHardwareWatchpoints ()
virtual Status IsWatchpointHit (uint32_t wp_index, bool &is_hit)
virtual Status GetWatchpointHitIndex (uint32_t &wp_index, lldb::addr_t trap_addr)
virtual Status IsWatchpointVacant (uint32_t wp_index, bool &is_vacant)
virtual lldb::addr_t GetWatchpointAddress (uint32_t wp_index)
virtual lldb::addr_t GetWatchpointHitAddress (uint32_t wp_index)
virtual bool HardwareSingleStep (bool enable)
virtual Status ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, size_t src_len, RegisterValue &reg_value)
virtual Status WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, size_t dst_len, const RegisterValue &reg_value)
virtual lldb::tid_t GetThreadID () const
virtual NativeThreadProtocolGetThread ()
virtual std::vector< uint32_t > GetExpeditedRegisters (ExpeditedRegs expType) const
virtual bool RegisterOffsetIsDynamic () const
const RegisterInfoGetRegisterInfoByName (llvm::StringRef reg_name, uint32_t start_idx=0)
const RegisterInfoGetRegisterInfo (uint32_t reg_kind, uint32_t reg_num)
lldb::addr_t GetPC (lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
virtual lldb::addr_t GetPCfromBreakpointLocation (lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
Status SetPC (lldb::addr_t pc)
lldb::addr_t GetSP (lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
Status SetSP (lldb::addr_t sp)
lldb::addr_t GetFP (lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
Status SetFP (lldb::addr_t fp)
const char * GetRegisterName (uint32_t reg)
lldb::addr_t GetReturnAddress (lldb::addr_t fail_value=LLDB_INVALID_ADDRESS)
lldb::addr_t GetFlags (lldb::addr_t fail_value=0)
lldb::addr_t ReadRegisterAsUnsigned (uint32_t reg, lldb::addr_t fail_value)
lldb::addr_t ReadRegisterAsUnsigned (const RegisterInfo *reg_info, lldb::addr_t fail_value)
Status WriteRegisterFromUnsigned (uint32_t reg, uint64_t uval)
Status WriteRegisterFromUnsigned (const RegisterInfo *reg_info, uint64_t uval)

Static Public Member Functions

static std::unique_ptr< NativeRegisterContextLinuxCreateHostNativeRegisterContextLinux (const ArchSpec &target_arch, NativeThreadLinux &native_thread)
static llvm::Expected< ArchSpecDetermineArchitecture (lldb::tid_t tid)

Protected Member Functions

 NativeRegisterContextLinux (NativeThreadProtocol &thread)
lldb::ByteOrder GetByteOrder () const
virtual Status ReadRegisterRaw (uint32_t reg_index, RegisterValue &reg_value)
virtual Status WriteRegisterRaw (uint32_t reg_index, const RegisterValue &reg_value)
virtual Status ReadRegisterSet (void *buf, size_t buf_size, unsigned int regset)
virtual Status WriteRegisterSet (void *buf, size_t buf_size, unsigned int regset)
virtual Status ReadGPR ()
virtual Status WriteGPR ()
virtual Status ReadFPR ()
virtual Status WriteFPR ()
virtual void * GetGPRBuffer ()=0
virtual size_t GetGPRSize () const
virtual void * GetFPRBuffer ()=0
virtual size_t GetFPRSize ()=0
virtual uint32_t GetPtraceOffset (uint32_t reg_index)
virtual Status DoReadRegisterValue (uint32_t offset, const char *reg_name, uint32_t size, RegisterValue &value)
virtual Status DoWriteRegisterValue (uint32_t offset, const char *reg_name, const RegisterValue &value)

Static Protected Member Functions

static llvm::Expected< ArchSpecDetermineArchitectureViaGPR (lldb::tid_t tid, size_t gpr64_size)

Additional Inherited Members

Protected Attributes inherited from lldb_private::NativeRegisterContextRegisterInfo
std::unique_ptr< RegisterInfoInterfacem_register_info_interface_up
Protected Attributes inherited from lldb_private::NativeRegisterContext
NativeThreadProtocolm_thread

Detailed Description

Definition at line 23 of file NativeRegisterContextLinux.h.

Constructor & Destructor Documentation

◆ NativeRegisterContextLinux()

lldb_private::process_linux::NativeRegisterContextLinux::NativeRegisterContextLinux ( NativeThreadProtocol & thread)
inlineprotected

Member Function Documentation

◆ CreateHostNativeRegisterContextLinux()

std::unique_ptr< NativeRegisterContextLinux > lldb_private::process_linux::NativeRegisterContextLinux::CreateHostNativeRegisterContextLinux ( const ArchSpec & target_arch,
NativeThreadLinux & native_thread )
static

◆ DetermineArchitecture()

llvm::Expected< ArchSpec > lldb_private::process_linux::NativeRegisterContextLinux::DetermineArchitecture ( lldb::tid_t tid)
static

◆ DetermineArchitectureViaGPR()

llvm::Expected< ArchSpec > NativeRegisterContextLinux::DetermineArchitectureViaGPR ( lldb::tid_t tid,
size_t gpr64_size )
staticprotected

◆ DoReadRegisterValue()

Status NativeRegisterContextLinux::DoReadRegisterValue ( uint32_t offset,
const char * reg_name,
uint32_t size,
RegisterValue & value )
protectedvirtual

◆ DoWriteRegisterValue()

Status NativeRegisterContextLinux::DoWriteRegisterValue ( uint32_t offset,
const char * reg_name,
const RegisterValue & value )
protectedvirtual

◆ GetByteOrder()

lldb::ByteOrder NativeRegisterContextLinux::GetByteOrder ( ) const
protected

◆ GetFPRBuffer()

virtual void * lldb_private::process_linux::NativeRegisterContextLinux::GetFPRBuffer ( )
protectedpure virtual

Referenced by ReadFPR(), and WriteFPR().

◆ GetFPRSize()

virtual size_t lldb_private::process_linux::NativeRegisterContextLinux::GetFPRSize ( )
protectedpure virtual

Referenced by ReadFPR(), and WriteFPR().

◆ GetGPRBuffer()

virtual void * lldb_private::process_linux::NativeRegisterContextLinux::GetGPRBuffer ( )
protectedpure virtual

Referenced by ReadGPR(), and WriteGPR().

◆ GetGPRSize()

virtual size_t lldb_private::process_linux::NativeRegisterContextLinux::GetGPRSize ( ) const
inlineprotectedvirtual

◆ GetMemoryTaggingDetails()

virtual llvm::Expected< MemoryTaggingDetails > lldb_private::process_linux::NativeRegisterContextLinux::GetMemoryTaggingDetails ( int32_t type)
inlinevirtual

◆ GetMmapData()

virtual std::optional< MmapData > lldb_private::process_linux::NativeRegisterContextLinux::GetMmapData ( )
inlinevirtual

Return the architecture-specific data needed to make mmap syscalls, if they are supported.

Definition at line 67 of file NativeRegisterContextLinux.h.

Referenced by lldb_private::process_linux::NativeProcessLinux::AllocateMemory(), and lldb_private::process_linux::NativeProcessLinux::DeallocateMemory().

◆ GetPtraceOffset()

virtual uint32_t lldb_private::process_linux::NativeRegisterContextLinux::GetPtraceOffset ( uint32_t reg_index)
inlineprotectedvirtual

◆ GetSyscallData()

virtual std::optional< SyscallData > lldb_private::process_linux::NativeRegisterContextLinux::GetSyscallData ( )
inlinevirtual

Return architecture-specific data needed to make inferior syscalls, if they are supported.

Definition at line 57 of file NativeRegisterContextLinux.h.

Referenced by lldb_private::process_linux::NativeProcessLinux::Syscall().

◆ InvalidateAllRegisters()

virtual void lldb_private::process_linux::NativeRegisterContextLinux::InvalidateAllRegisters ( )
inlinevirtual

◆ ReadFPR()

◆ ReadGPR()

◆ ReadRegisterRaw()

◆ ReadRegisterSet()

Status NativeRegisterContextLinux::ReadRegisterSet ( void * buf,
size_t buf_size,
unsigned int regset )
protectedvirtual

◆ WriteFPR()

◆ WriteGPR()

◆ WriteRegisterRaw()

◆ WriteRegisterSet()

Status NativeRegisterContextLinux::WriteRegisterSet ( void * buf,
size_t buf_size,
unsigned int regset )
protectedvirtual

The documentation for this class was generated from the following files: