LLDB mainline
lldb_private::NativeRegisterContextDBReg Class Referenceabstract

#include <NativeRegisterContextDBReg.h>

Inheritance diagram for lldb_private::NativeRegisterContextDBReg:
[legend]

Classes

struct  DREG
 Debug register info for hardware breakpoints and watchpoints management. More...
struct  WatchpointDetails

Public Types

enum  DREGType { eDREGTypeWATCH = 0 , eDREGTypeBREAK }

Public Member Functions

 NativeRegisterContextDBReg (uint32_t enable_bit)
uint32_t NumSupportedHardwareBreakpoints () override
uint32_t SetHardwareBreakpoint (lldb::addr_t addr, size_t size) override
bool ClearHardwareBreakpoint (uint32_t hw_idx) override
Status ClearAllHardwareBreakpoints () override
Status GetHardwareBreakHitIndex (uint32_t &bp_index, lldb::addr_t trap_addr) override
uint32_t NumSupportedHardwareWatchpoints () override
uint32_t SetHardwareWatchpoint (lldb::addr_t addr, size_t size, uint32_t watch_flags) override
bool ClearHardwareWatchpoint (uint32_t hw_index) override
Status ClearAllHardwareWatchpoints () override
Status GetWatchpointHitIndex (uint32_t &wp_index, lldb::addr_t trap_addr) override
lldb::addr_t GetWatchpointHitAddress (uint32_t wp_index) override
lldb::addr_t GetWatchpointAddress (uint32_t wp_index) override
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 Status ClearWatchpointHit (uint32_t hw_index)
virtual Status IsWatchpointHit (uint32_t wp_index, bool &is_hit)
virtual Status IsWatchpointVacant (uint32_t wp_index, bool &is_vacant)
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)

Protected Types

using BreakpointDetails = WatchpointDetails

Protected Member Functions

bool WatchpointIsEnabled (uint32_t wp_index)
bool BreakpointIsEnabled (uint32_t bp_index)
virtual bool ValidateBreakpoint (size_t size, lldb::addr_t addr)
virtual std::optional< WatchpointDetailsAdjustWatchpoint (const WatchpointDetails &details)=0
virtual BreakpointDetails AdjustBreakpoint (const BreakpointDetails &details)
virtual uint32_t MakeBreakControlValue (size_t size)=0
virtual uint32_t MakeWatchControlValue (size_t size, uint32_t watch_flags)=0
virtual uint32_t GetWatchpointSize (uint32_t wp_index)=0
virtual llvm::Error ReadHardwareDebugInfo ()=0
virtual llvm::Error WriteHardwareDebugRegs (DREGType hwbType)=0
virtual lldb::addr_t FixWatchpointHitAddress (lldb::addr_t hit_addr)

Protected Attributes

std::array< struct DREG, 16 > m_hbp_regs
std::array< struct DREG, 16 > m_hwp_regs
uint32_t m_max_hbp_supported
uint32_t m_max_hwp_supported
const uint32_t m_hw_dbg_enable_bit
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 22 of file NativeRegisterContextDBReg.h.

Member Typedef Documentation

◆ BreakpointDetails

Member Enumeration Documentation

◆ DREGType

Enumerator
eDREGTypeWATCH 
eDREGTypeBREAK 

Definition at line 56 of file NativeRegisterContextDBReg.h.

Constructor & Destructor Documentation

◆ NativeRegisterContextDBReg()

Member Function Documentation

◆ AdjustBreakpoint()

virtual BreakpointDetails lldb_private::NativeRegisterContextDBReg::AdjustBreakpoint ( const BreakpointDetails & details)
inlineprotectedvirtual

Reimplemented in lldb_private::NativeRegisterContextDBReg_arm.

Definition at line 92 of file NativeRegisterContextDBReg.h.

Referenced by SetHardwareBreakpoint().

◆ AdjustWatchpoint()

virtual std::optional< WatchpointDetails > lldb_private::NativeRegisterContextDBReg::AdjustWatchpoint ( const WatchpointDetails & details)
protectedpure virtual

◆ BreakpointIsEnabled()

bool NativeRegisterContextDBReg::BreakpointIsEnabled ( uint32_t bp_index)
protected

◆ ClearAllHardwareBreakpoints()

◆ ClearAllHardwareWatchpoints()

◆ ClearHardwareBreakpoint()

bool NativeRegisterContextDBReg::ClearHardwareBreakpoint ( uint32_t hw_idx)
overridevirtual

◆ ClearHardwareWatchpoint()

bool NativeRegisterContextDBReg::ClearHardwareWatchpoint ( uint32_t hw_index)
overridevirtual

◆ FixWatchpointHitAddress()

virtual lldb::addr_t lldb_private::NativeRegisterContextDBReg::FixWatchpointHitAddress ( lldb::addr_t hit_addr)
inlineprotectedvirtual

Definition at line 101 of file NativeRegisterContextDBReg.h.

Referenced by GetWatchpointHitIndex().

◆ GetHardwareBreakHitIndex()

Status NativeRegisterContextDBReg::GetHardwareBreakHitIndex ( uint32_t & bp_index,
lldb::addr_t trap_addr )
overridevirtual

◆ GetWatchpointAddress()

lldb::addr_t NativeRegisterContextDBReg::GetWatchpointAddress ( uint32_t wp_index)
overridevirtual

◆ GetWatchpointHitAddress()

lldb::addr_t NativeRegisterContextDBReg::GetWatchpointHitAddress ( uint32_t wp_index)
overridevirtual

◆ GetWatchpointHitIndex()

◆ GetWatchpointSize()

virtual uint32_t lldb_private::NativeRegisterContextDBReg::GetWatchpointSize ( uint32_t wp_index)
protectedpure virtual

◆ MakeBreakControlValue()

virtual uint32_t lldb_private::NativeRegisterContextDBReg::MakeBreakControlValue ( size_t size)
protectedpure virtual

◆ MakeWatchControlValue()

virtual uint32_t lldb_private::NativeRegisterContextDBReg::MakeWatchControlValue ( size_t size,
uint32_t watch_flags )
protectedpure virtual

◆ NumSupportedHardwareBreakpoints()

uint32_t NativeRegisterContextDBReg::NumSupportedHardwareBreakpoints ( )
overridevirtual

◆ NumSupportedHardwareWatchpoints()

uint32_t NativeRegisterContextDBReg::NumSupportedHardwareWatchpoints ( )
overridevirtual

◆ ReadHardwareDebugInfo()

◆ SetHardwareBreakpoint()

◆ SetHardwareWatchpoint()

◆ ValidateBreakpoint()

virtual bool lldb_private::NativeRegisterContextDBReg::ValidateBreakpoint ( size_t size,
lldb::addr_t addr )
inlineprotectedvirtual

Reimplemented in lldb_private::NativeRegisterContextDBReg_arm.

Definition at line 80 of file NativeRegisterContextDBReg.h.

Referenced by SetHardwareBreakpoint().

◆ WatchpointIsEnabled()

bool NativeRegisterContextDBReg::WatchpointIsEnabled ( uint32_t wp_index)
protected

◆ WriteHardwareDebugRegs()

virtual llvm::Error lldb_private::NativeRegisterContextDBReg::WriteHardwareDebugRegs ( DREGType hwbType)
protectedpure virtual

Member Data Documentation

◆ m_hbp_regs

std::array<struct DREG, 16> lldb_private::NativeRegisterContextDBReg::m_hbp_regs
protected

◆ m_hw_dbg_enable_bit

◆ m_hwp_regs

◆ m_max_hbp_supported

uint32_t lldb_private::NativeRegisterContextDBReg::m_max_hbp_supported
protected

◆ m_max_hwp_supported

uint32_t lldb_private::NativeRegisterContextDBReg::m_max_hwp_supported
protected

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