LLDB mainline
RegisterContextCorePOSIX_arm64 Class Reference

#include <RegisterContextPOSIXCore_arm64.h>

Inheritance diagram for RegisterContextCorePOSIX_arm64:
[legend]

Public Member Functions

 ~RegisterContextCorePOSIX_arm64 () override
bool ReadRegister (const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value) override
bool WriteRegister (const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value) override
bool ReadAllRegisterValues (lldb::WritableDataBufferSP &data_sp) override
bool WriteAllRegisterValues (const lldb::DataBufferSP &data_sp) override
bool HardwareSingleStep (bool enable) override
Public Member Functions inherited from RegisterContextPOSIX_arm64
 RegisterContextPOSIX_arm64 (lldb_private::Thread &thread, std::unique_ptr< RegisterInfoPOSIX_arm64 > register_info)
 ~RegisterContextPOSIX_arm64 () override
void Invalidate ()
void InvalidateAllRegisters () override
size_t GetRegisterCount () override
virtual size_t GetGPRSize ()
virtual unsigned GetRegisterSize (unsigned reg)
virtual unsigned GetRegisterOffset (unsigned reg)
const lldb_private::RegisterInfoGetRegisterInfoAtIndex (size_t reg) override
size_t GetRegisterSetCount () override
const lldb_private::RegisterSetGetRegisterSet (size_t set) override
const char * GetRegisterName (unsigned reg)
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 ()
virtual bool ReadAllRegisterValues (lldb_private::RegisterCheckpoint &reg_checkpoint)
virtual bool WriteAllRegisterValues (const lldb_private::RegisterCheckpoint &reg_checkpoint)
bool CopyFromRegisterContext (lldb::RegisterContextSP context)
virtual uint32_t ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num)
 Convert from a given register numbering scheme to the lldb register numbering scheme.
virtual uint32_t NumSupportedHardwareBreakpoints ()
virtual uint32_t SetHardwareBreakpoint (lldb::addr_t addr, size_t size)
virtual bool ClearHardwareBreakpoint (uint32_t hw_idx)
virtual uint32_t NumSupportedHardwareWatchpoints ()
virtual uint32_t SetHardwareWatchpoint (lldb::addr_t addr, size_t size, bool read, bool write)
virtual bool ClearHardwareWatchpoint (uint32_t hw_index)
virtual Status ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue &reg_value)
virtual Status WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue &reg_value)
virtual lldb::tid_t GetThreadID () const
virtual ThreadGetThread ()
const RegisterInfoGetRegisterInfoByName (llvm::StringRef reg_name, uint32_t start_idx=0)
const RegisterInfoGetRegisterInfo (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

Static Public Member Functions

static std::unique_ptr< RegisterContextCorePOSIX_arm64Create (lldb_private::Thread &thread, const lldb_private::ArchSpec &arch, const lldb_private::DataExtractor &gpregset, llvm::ArrayRef< lldb_private::CoreNote > notes)

Protected Member Functions

 RegisterContextCorePOSIX_arm64 (lldb_private::Thread &thread, std::unique_ptr< RegisterInfoPOSIX_arm64 > register_info, const lldb_private::DataExtractor &gpregset, llvm::ArrayRef< lldb_private::CoreNote > notes)
bool ReadGPR () override
bool ReadFPR () override
bool WriteGPR () override
bool WriteFPR () override
Protected Member Functions inherited from RegisterContextPOSIX_arm64
virtual const lldb_private::RegisterInfoGetRegisterInfo ()
bool IsGPR (unsigned reg)
bool IsFPR (unsigned reg)
size_t GetFPUSize ()
bool IsSVE (unsigned reg) const
bool IsPAuth (unsigned reg) const
bool IsTLS (unsigned reg) const
bool IsSME (unsigned reg) const
bool IsMTE (unsigned reg) const
bool IsFPMR (unsigned reg) const
bool IsGCS (unsigned reg) const
bool IsSVEZ (unsigned reg) const
bool IsSVEP (unsigned reg) const
bool IsSVEVG (unsigned reg) const
bool IsSMEZA (unsigned reg) const
uint32_t GetRegNumSVEZ0 () const
uint32_t GetRegNumSVEFFR () const
uint32_t GetRegNumFPCR () const
uint32_t GetRegNumFPSR () const
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.

Private Member Functions

struct __attribute__ ((packed)) sme_pseudo_regs
const uint8_t * GetSVEBuffer (uint64_t offset=0)
void ConfigureRegisterContext ()
uint32_t CalculateSVEOffset (const lldb_private::RegisterInfo *reg_info)
uint64_t GetSVERegVG ()

Private Attributes

lldb_private::DataExtractor m_gpr_data
lldb_private::DataExtractor m_fpr_data
lldb_private::DataExtractor m_sve_data
lldb_private::DataExtractor m_pac_data
lldb_private::DataExtractor m_tls_data
lldb_private::DataExtractor m_za_data
lldb_private::DataExtractor m_mte_data
lldb_private::DataExtractor m_zt_data
lldb_private::DataExtractor m_fpmr_data
lldb_private::DataExtractor m_gcs_data
SVEState m_sve_state = SVEState::Unknown
uint16_t m_sve_vector_length = 0
struct sme_pseudo_regs m_sme_pseudo_regs
lldb_private::Arm64RegisterFlagsDetector m_register_flags_detector

Additional Inherited Members

Protected Attributes inherited from RegisterContextPOSIX_arm64
std::unique_ptr< RegisterInfoPOSIX_arm64m_register_info_up
Protected Attributes inherited from lldb_private::RegisterContext
Threadm_thread
uint32_t m_concrete_frame_idx
uint32_t m_stop_id

Detailed Description

Definition at line 20 of file RegisterContextPOSIXCore_arm64.h.

Constructor & Destructor Documentation

◆ ~RegisterContextCorePOSIX_arm64()

RegisterContextCorePOSIX_arm64::~RegisterContextCorePOSIX_arm64 ( )
overridedefault

◆ RegisterContextCorePOSIX_arm64()

RegisterContextCorePOSIX_arm64::RegisterContextCorePOSIX_arm64 ( lldb_private::Thread & thread,
std::unique_ptr< RegisterInfoPOSIX_arm64 > register_info,
const lldb_private::DataExtractor & gpregset,
llvm::ArrayRef< lldb_private::CoreNote > notes )
protected

Member Function Documentation

◆ __attribute__()

struct RegisterContextCorePOSIX_arm64::__attribute__ ( (packed) )
inlineprivate

Definition at line 69 of file RegisterContextPOSIXCore_arm64.h.

References __attribute__(), and m_sve_vector_length.

Referenced by __attribute__(), and Create().

◆ CalculateSVEOffset()

◆ ConfigureRegisterContext()

◆ Create()

◆ GetSVEBuffer()

const uint8_t * RegisterContextCorePOSIX_arm64::GetSVEBuffer ( uint64_t offset = 0)
private

Definition at line 175 of file RegisterContextPOSIXCore_arm64.cpp.

References m_sve_data.

Referenced by ReadRegister().

◆ GetSVERegVG()

uint64_t RegisterContextCorePOSIX_arm64::GetSVERegVG ( )
inlineprivate

Definition at line 88 of file RegisterContextPOSIXCore_arm64.h.

References m_sve_vector_length.

Referenced by ReadRegister().

◆ HardwareSingleStep()

bool RegisterContextCorePOSIX_arm64::HardwareSingleStep ( bool enable)
overridevirtual

Reimplemented from lldb_private::RegisterContext.

Definition at line 429 of file RegisterContextPOSIXCore_arm64.cpp.

◆ ReadAllRegisterValues()

bool RegisterContextCorePOSIX_arm64::ReadAllRegisterValues ( lldb::WritableDataBufferSP & data_sp)
overridevirtual

Reimplemented from lldb_private::RegisterContext.

Definition at line 414 of file RegisterContextPOSIXCore_arm64.cpp.

◆ ReadFPR()

bool RegisterContextCorePOSIX_arm64::ReadFPR ( )
overrideprotectedvirtual

Implements RegisterContextPOSIX_arm64.

Definition at line 163 of file RegisterContextPOSIXCore_arm64.cpp.

◆ ReadGPR()

bool RegisterContextCorePOSIX_arm64::ReadGPR ( )
overrideprotectedvirtual

Implements RegisterContextPOSIX_arm64.

Definition at line 161 of file RegisterContextPOSIXCore_arm64.cpp.

◆ ReadRegister()

bool RegisterContextCorePOSIX_arm64::ReadRegister ( const lldb_private::RegisterInfo * reg_info,
lldb_private::RegisterValue & value )
overridevirtual

◆ WriteAllRegisterValues()

bool RegisterContextCorePOSIX_arm64::WriteAllRegisterValues ( const lldb::DataBufferSP & data_sp)
overridevirtual

Reimplemented from lldb_private::RegisterContext.

Definition at line 424 of file RegisterContextPOSIXCore_arm64.cpp.

◆ WriteFPR()

bool RegisterContextCorePOSIX_arm64::WriteFPR ( )
overrideprotectedvirtual

Implements RegisterContextPOSIX_arm64.

Definition at line 170 of file RegisterContextPOSIXCore_arm64.cpp.

◆ WriteGPR()

bool RegisterContextCorePOSIX_arm64::WriteGPR ( )
overrideprotectedvirtual

Implements RegisterContextPOSIX_arm64.

Definition at line 165 of file RegisterContextPOSIXCore_arm64.cpp.

◆ WriteRegister()

bool RegisterContextCorePOSIX_arm64::WriteRegister ( const lldb_private::RegisterInfo * reg_info,
const lldb_private::RegisterValue & value )
overridevirtual

Implements lldb_private::RegisterContext.

Definition at line 419 of file RegisterContextPOSIXCore_arm64.cpp.

Member Data Documentation

◆ m_fpmr_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_fpmr_data
private

◆ m_fpr_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_fpr_data
private

◆ m_gcs_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_gcs_data
private

◆ m_gpr_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_gpr_data
private

◆ m_mte_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_mte_data
private

◆ m_pac_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_pac_data
private

◆ m_register_flags_detector

lldb_private::Arm64RegisterFlagsDetector RegisterContextCorePOSIX_arm64::m_register_flags_detector
private

Definition at line 80 of file RegisterContextPOSIXCore_arm64.h.

Referenced by RegisterContextCorePOSIX_arm64().

◆ m_sme_pseudo_regs

struct sme_pseudo_regs RegisterContextCorePOSIX_arm64::m_sme_pseudo_regs
private

◆ m_sve_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_sve_data
private

◆ m_sve_state

SVEState RegisterContextCorePOSIX_arm64::m_sve_state = SVEState::Unknown
private

◆ m_sve_vector_length

uint16_t RegisterContextCorePOSIX_arm64::m_sve_vector_length = 0
private

◆ m_tls_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_tls_data
private

◆ m_za_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_za_data
private

◆ m_zt_data

lldb_private::DataExtractor RegisterContextCorePOSIX_arm64::m_zt_data
private

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