LLDB mainline
|
#include <RegisterContextPOSIX_mips64.h>
Public Types | |
enum | Register_count { gpr_registers_count = 0 , fpr_registers_count , msa_registers_count , register_set_count } |
Public Member Functions | |
RegisterContextPOSIX_mips64 (lldb_private::Thread &thread, uint32_t concrete_frame_idx, lldb_private::RegisterInfoInterface *register_info) | |
~RegisterContextPOSIX_mips64 () 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::RegisterInfo * | GetRegisterInfoAtIndex (size_t reg) override |
size_t | GetRegisterSetCount () override |
const lldb_private::RegisterSet * | GetRegisterSet (size_t set) override |
const char * | GetRegisterName (unsigned reg) |
uint32_t | ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num) override |
Convert from a given register numbering scheme to the lldb register numbering scheme. | |
Public Member Functions inherited from lldb_private::RegisterContext | |
RegisterContext (Thread &thread, uint32_t concrete_frame_idx) | |
~RegisterContext () override | |
void | InvalidateIfNeeded (bool force) |
virtual void | InvalidateAllRegisters ()=0 |
virtual size_t | GetRegisterCount ()=0 |
virtual const RegisterInfo * | GetRegisterInfoAtIndex (size_t reg)=0 |
virtual size_t | GetRegisterSetCount ()=0 |
virtual const RegisterSet * | GetRegisterSet (size_t reg_set)=0 |
virtual lldb::ByteOrder | GetByteOrder () |
virtual bool | ReadRegister (const RegisterInfo *reg_info, RegisterValue ®_value)=0 |
virtual bool | WriteRegister (const RegisterInfo *reg_info, const RegisterValue ®_value)=0 |
virtual bool | ReadAllRegisterValues (lldb::WritableDataBufferSP &data_sp) |
virtual bool | WriteAllRegisterValues (const lldb::DataBufferSP &data_sp) |
virtual bool | RegisterWriteCausesReconfigure (const llvm::StringRef name) |
virtual bool | ReconfigureRegisterInfo () |
virtual bool | ReadAllRegisterValues (lldb_private::RegisterCheckpoint ®_checkpoint) |
virtual bool | WriteAllRegisterValues (const lldb_private::RegisterCheckpoint ®_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 bool | HardwareSingleStep (bool enable) |
virtual Status | ReadRegisterValueFromMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t src_addr, uint32_t src_len, RegisterValue ®_value) |
virtual Status | WriteRegisterValueToMemory (const lldb_private::RegisterInfo *reg_info, lldb::addr_t dst_addr, uint32_t dst_len, const RegisterValue ®_value) |
virtual lldb::tid_t | GetThreadID () const |
virtual Thread & | GetThread () |
const RegisterInfo * | GetRegisterInfoByName (llvm::StringRef reg_name, uint32_t start_idx=0) |
const RegisterInfo * | GetRegisterInfo (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 |
virtual lldb::TargetSP | CalculateTarget ()=0 |
virtual lldb::ProcessSP | CalculateProcess ()=0 |
virtual lldb::ThreadSP | CalculateThread ()=0 |
virtual lldb::StackFrameSP | CalculateStackFrame ()=0 |
virtual void | CalculateExecutionContext (ExecutionContext &exe_ctx)=0 |
Reconstruct the object's execution context into sc. | |
Protected Member Functions | |
virtual bool | IsRegisterSetAvailable (size_t set_index) |
virtual const lldb_private::RegisterInfo * | GetRegisterInfo () |
bool | IsGPR (unsigned reg) |
bool | IsFPR (unsigned reg) |
virtual bool | ReadGPR ()=0 |
virtual bool | ReadFPR ()=0 |
virtual bool | WriteGPR ()=0 |
virtual bool | WriteFPR ()=0 |
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. | |
Protected Attributes | |
uint32_t | m_num_registers |
uint8_t | m_registers_count [register_set_count] |
std::unique_ptr< lldb_private::RegisterInfoInterface > | m_register_info_up |
Protected Attributes inherited from lldb_private::RegisterContext | |
Thread & | m_thread |
uint32_t | m_concrete_frame_idx |
uint32_t | m_stop_id |
Definition at line 17 of file RegisterContextPOSIX_mips64.h.
Enumerator | |
---|---|
gpr_registers_count | |
fpr_registers_count | |
msa_registers_count | |
register_set_count |
Definition at line 20 of file RegisterContextPOSIX_mips64.h.
RegisterContextPOSIX_mips64::RegisterContextPOSIX_mips64 | ( | lldb_private::Thread & | thread, |
uint32_t | concrete_frame_idx, | ||
lldb_private::RegisterInfoInterface * | register_info | ||
) |
Definition at line 41 of file RegisterContextPOSIX_mips64.cpp.
References fpr_registers_count, GetRegisterCount(), GetRegisterSet(), GetRegisterSetCount(), gpr_registers_count, m_num_registers, m_register_info_up, m_registers_count, msa_registers_count, and lldb_private::RegisterSet::num_registers.
|
overridedefault |
|
overridevirtual |
Convert from a given register numbering scheme to the lldb register numbering scheme.
There may be multiple ways to enumerate the registers for a given architecture. ABI references will specify one to be used with DWARF, the register numberings from process plugin, there may be a variation used for eh_frame unwind instructions (e.g. on Darwin), and so on. Register 5 by itself is meaningless - RegisterKind enumeration tells you what context that number should be translated as.
Inside lldb, register numbers are in the eRegisterKindLLDB scheme; arguments which take a register number should take one in that scheme.
eRegisterKindGeneric is a special numbering scheme which gives us constant values for the pc, frame register, stack register, etc., for use within lldb. They may not be defined for all architectures but it allows generic code to translate these common registers into the lldb numbering scheme.
This method translates a given register kind + register number into the eRegisterKindLLDB register numbering.
[in] | kind | The register numbering scheme (RegisterKind) that the following register number is in. |
[in] | num | A register number in the 'kind' register numbering scheme. |
Reimplemented from lldb_private::RegisterContext.
Definition at line 125 of file RegisterContextPOSIX_mips64.cpp.
References GetRegisterInfoAtIndex(), lldb_private::RegisterInfo::kinds, lldb::kNumRegisterKinds, LLDB_INVALID_REGNUM, and m_num_registers.
|
virtual |
Definition at line 81 of file RegisterContextPOSIX_mips64.cpp.
References m_register_info_up.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 77 of file RegisterContextPOSIX_mips64.cpp.
References m_register_info_up.
Referenced by RegisterContextPOSIX_mips64().
|
protectedvirtual |
Definition at line 85 of file RegisterContextPOSIX_mips64.cpp.
References m_register_info_up.
Referenced by GetRegisterInfoAtIndex(), GetRegisterName(), GetRegisterOffset(), and GetRegisterSize().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 93 of file RegisterContextPOSIX_mips64.cpp.
References GetRegisterInfo(), and m_num_registers.
Referenced by ConvertRegisterKindToRegisterNumber().
const char * RegisterContextPOSIX_mips64::GetRegisterName | ( | unsigned | reg | ) |
Definition at line 112 of file RegisterContextPOSIX_mips64.cpp.
References GetRegisterInfo(), m_num_registers, and lldb_private::RegisterInfo::name.
|
virtual |
Definition at line 67 of file RegisterContextPOSIX_mips64.cpp.
References lldb_private::RegisterInfo::byte_offset, GetRegisterInfo(), and m_num_registers.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 106 of file RegisterContextPOSIX_mips64.cpp.
References RegisterContextFreeBSD_mips64::GetRegisterSet(), and m_register_info_up.
Referenced by RegisterContextPOSIX_mips64().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 100 of file RegisterContextPOSIX_mips64.cpp.
References RegisterContextFreeBSD_mips64::GetRegisterSetCount(), and m_register_info_up.
Referenced by IsFPR(), IsRegisterSetAvailable(), and RegisterContextPOSIX_mips64().
|
virtual |
Definition at line 72 of file RegisterContextPOSIX_mips64.cpp.
References lldb_private::RegisterInfo::byte_size, GetRegisterInfo(), and m_num_registers.
void RegisterContextPOSIX_mips64::Invalidate | ( | ) |
Definition at line 63 of file RegisterContextPOSIX_mips64.cpp.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 65 of file RegisterContextPOSIX_mips64.cpp.
|
protected |
Definition at line 33 of file RegisterContextPOSIX_mips64.cpp.
References fpr_registers_count, GetRegisterSetCount(), gpr_registers_count, and m_registers_count.
Referenced by RegisterContextCorePOSIX_mips64::ReadRegister().
|
protected |
Definition at line 29 of file RegisterContextPOSIX_mips64.cpp.
References gpr_registers_count, and m_registers_count.
Referenced by RegisterContextCorePOSIX_mips64::ReadRegister().
|
protectedvirtual |
Definition at line 117 of file RegisterContextPOSIX_mips64.cpp.
References GetRegisterSetCount().
|
protectedpure virtual |
Implemented in RegisterContextCorePOSIX_mips64.
|
protectedpure virtual |
Implemented in RegisterContextCorePOSIX_mips64.
|
protectedpure virtual |
Implemented in RegisterContextCorePOSIX_mips64.
|
protectedpure virtual |
Implemented in RegisterContextCorePOSIX_mips64.
|
protected |
Definition at line 57 of file RegisterContextPOSIX_mips64.h.
Referenced by ConvertRegisterKindToRegisterNumber(), GetRegisterInfoAtIndex(), GetRegisterName(), GetRegisterOffset(), GetRegisterSize(), and RegisterContextPOSIX_mips64().
|
protected |
Definition at line 60 of file RegisterContextPOSIX_mips64.h.
Referenced by GetGPRSize(), GetRegisterCount(), GetRegisterInfo(), GetRegisterSet(), GetRegisterSetCount(), RegisterContextCorePOSIX_mips64::ReadRegister(), and RegisterContextPOSIX_mips64().
|
protected |
Definition at line 58 of file RegisterContextPOSIX_mips64.h.
Referenced by IsFPR(), IsGPR(), and RegisterContextPOSIX_mips64().