LLDB mainline
|
#include <RegisterContextMemory.h>
Protected Member Functions | |
void | SetAllRegisterValid (bool b) |
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 | |
lldb_private::DynamicRegisterInfo & | m_reg_infos |
std::vector< bool > | m_reg_valid |
lldb::WritableDataBufferSP | m_data |
lldb_private::DataExtractor | m_reg_data |
lldb::addr_t | m_reg_data_addr |
Protected Attributes inherited from lldb_private::RegisterContext | |
Thread & | m_thread |
uint32_t | m_concrete_frame_idx |
uint32_t | m_stop_id |
Private Member Functions | |
RegisterContextMemory (const RegisterContextMemory &)=delete | |
const RegisterContextMemory & | operator= (const RegisterContextMemory &)=delete |
Definition at line 19 of file RegisterContextMemory.h.
RegisterContextMemory::RegisterContextMemory | ( | lldb_private::Thread & | thread, |
uint32_t | concrete_frame_idx, | ||
lldb_private::DynamicRegisterInfo & | reg_info, | ||
lldb::addr_t | reg_data_addr ) |
Definition at line 21 of file RegisterContextMemory.cpp.
References lldb_private::DynamicRegisterInfo::GetNumRegisters(), lldb_private::DynamicRegisterInfo::GetRegisterDataByteSize(), m_data, m_reg_data, m_reg_data_addr, m_reg_infos, m_reg_valid, and lldb_private::RegisterContext::RegisterContext().
Referenced by operator=(), and RegisterContextMemory().
|
overridedefault |
|
privatedelete |
References RegisterContextMemory().
|
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 70 of file RegisterContextMemory.cpp.
References m_reg_infos.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 54 of file RegisterContextMemory.cpp.
References m_reg_infos.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 58 of file RegisterContextMemory.cpp.
References m_reg_infos.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 66 of file RegisterContextMemory.cpp.
References m_reg_infos.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 62 of file RegisterContextMemory.cpp.
References m_reg_infos.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 43 of file RegisterContextMemory.cpp.
References LLDB_INVALID_ADDRESS, m_reg_data_addr, and SetAllRegisterValid().
|
privatedelete |
References RegisterContextMemory().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 102 of file RegisterContextMemory.cpp.
References lldb_private::RegisterContext::CalculateProcess(), error(), LLDB_INVALID_ADDRESS, m_reg_data_addr, and SetAllRegisterValid().
Referenced by ReadRegister().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 75 of file RegisterContextMemory.cpp.
References lldb_private::RegisterInfo::byte_offset, lldb::eRegisterKindLLDB, lldb_private::RegisterInfo::kinds, m_data, m_reg_data, m_reg_valid, ReadAllRegisterValues(), lldb_private::RegisterValue::SetValueFromData(), and lldb_private::Status::Success().
void RegisterContextMemory::SetAllRegisterData | ( | const lldb::DataBufferSP & | data_sp | ) |
Definition at line 135 of file RegisterContextMemory.cpp.
References m_reg_data, and SetAllRegisterValid().
|
protected |
Definition at line 48 of file RegisterContextMemory.cpp.
References m_reg_valid.
Referenced by InvalidateAllRegisters(), ReadAllRegisterValues(), SetAllRegisterData(), and WriteAllRegisterValues().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 119 of file RegisterContextMemory.cpp.
References lldb_private::RegisterContext::CalculateProcess(), error(), LLDB_INVALID_ADDRESS, m_reg_data_addr, and SetAllRegisterValid().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 89 of file RegisterContextMemory.cpp.
References lldb_private::RegisterInfo::byte_offset, lldb_private::RegisterInfo::byte_size, lldb::eRegisterKindLLDB, error(), lldb_private::RegisterInfo::kinds, LLDB_INVALID_ADDRESS, m_reg_data_addr, m_reg_valid, and lldb_private::RegisterContext::WriteRegisterValueToMemory().
|
protected |
Definition at line 64 of file RegisterContextMemory.h.
Referenced by ReadRegister(), and RegisterContextMemory().
|
protected |
Definition at line 65 of file RegisterContextMemory.h.
Referenced by ReadRegister(), RegisterContextMemory(), and SetAllRegisterData().
|
protected |
Definition at line 66 of file RegisterContextMemory.h.
Referenced by InvalidateAllRegisters(), ReadAllRegisterValues(), RegisterContextMemory(), WriteAllRegisterValues(), and WriteRegister().
|
protected |
Definition at line 62 of file RegisterContextMemory.h.
Referenced by ConvertRegisterKindToRegisterNumber(), GetRegisterCount(), GetRegisterInfoAtIndex(), GetRegisterSet(), GetRegisterSetCount(), and RegisterContextMemory().
|
protected |
Definition at line 63 of file RegisterContextMemory.h.
Referenced by ReadRegister(), RegisterContextMemory(), SetAllRegisterValid(), and WriteRegister().