diff options
Diffstat (limited to 'source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h')
-rw-r--r-- | source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h | 181 |
1 files changed, 75 insertions, 106 deletions
diff --git a/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h b/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h index 0e26c69eb2a9..5b3e04eb588e 100644 --- a/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h +++ b/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h @@ -16,12 +16,12 @@ // Other libraries and framework includes // Project includes -#include "lldb/lldb-private.h" -#include "lldb/lldb-enumerations.h" +#include "Plugins/Process/Utility/DynamicRegisterInfo.h" #include "lldb/Core/ConstString.h" #include "lldb/Core/DataExtractor.h" #include "lldb/Target/RegisterContext.h" -#include "Plugins/Process/Utility/DynamicRegisterInfo.h" +#include "lldb/lldb-enumerations.h" +#include "lldb/lldb-private.h" #include "GDBRemoteCommunicationClient.h" @@ -33,133 +33,102 @@ namespace process_gdb_remote { class ThreadGDBRemote; class ProcessGDBRemote; -class GDBRemoteDynamicRegisterInfo : - public DynamicRegisterInfo -{ +class GDBRemoteDynamicRegisterInfo : public DynamicRegisterInfo { public: - GDBRemoteDynamicRegisterInfo () : - DynamicRegisterInfo() - { - } + GDBRemoteDynamicRegisterInfo() : DynamicRegisterInfo() {} - ~GDBRemoteDynamicRegisterInfo() override = default; + ~GDBRemoteDynamicRegisterInfo() override = default; - void - HardcodeARMRegisters(bool from_scratch); + void HardcodeARMRegisters(bool from_scratch); }; -class GDBRemoteRegisterContext : public RegisterContext -{ +class GDBRemoteRegisterContext : public RegisterContext { public: - GDBRemoteRegisterContext (ThreadGDBRemote &thread, - uint32_t concrete_frame_idx, - GDBRemoteDynamicRegisterInfo ®_info, - bool read_all_at_once); + GDBRemoteRegisterContext(ThreadGDBRemote &thread, uint32_t concrete_frame_idx, + GDBRemoteDynamicRegisterInfo ®_info, + bool read_all_at_once); + + ~GDBRemoteRegisterContext() override; - ~GDBRemoteRegisterContext() override; + void InvalidateAllRegisters() override; - void - InvalidateAllRegisters () override; + size_t GetRegisterCount() override; - size_t - GetRegisterCount () override; + const RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override; - const RegisterInfo * - GetRegisterInfoAtIndex (size_t reg) override; + size_t GetRegisterSetCount() override; - size_t - GetRegisterSetCount () override; + const RegisterSet *GetRegisterSet(size_t reg_set) override; - const RegisterSet * - GetRegisterSet (size_t reg_set) override; + bool ReadRegister(const RegisterInfo *reg_info, + RegisterValue &value) override; - bool - ReadRegister (const RegisterInfo *reg_info, RegisterValue &value) override; + bool WriteRegister(const RegisterInfo *reg_info, + const RegisterValue &value) override; - bool - WriteRegister (const RegisterInfo *reg_info, const RegisterValue &value) override; - - bool - ReadAllRegisterValues (lldb::DataBufferSP &data_sp) override; + bool ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; - bool - WriteAllRegisterValues (const lldb::DataBufferSP &data_sp) override; + bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; - bool - ReadAllRegisterValues (RegisterCheckpoint ®_checkpoint) override; + bool ReadAllRegisterValues(RegisterCheckpoint ®_checkpoint) override; - bool - WriteAllRegisterValues (const RegisterCheckpoint ®_checkpoint) override; + bool + WriteAllRegisterValues(const RegisterCheckpoint ®_checkpoint) override; - uint32_t - ConvertRegisterKindToRegisterNumber (lldb::RegisterKind kind, uint32_t num) override; + uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind, + uint32_t num) override; protected: - friend class ThreadGDBRemote; - - bool - ReadRegisterBytes (const RegisterInfo *reg_info, - DataExtractor &data); - - bool - WriteRegisterBytes (const RegisterInfo *reg_info, - DataExtractor &data, - uint32_t data_offset); - - bool - PrivateSetRegisterValue (uint32_t reg, StringExtractor &response); - - bool - PrivateSetRegisterValue (uint32_t reg, uint64_t val); - - void - SetAllRegisterValid (bool b); - - bool - GetRegisterIsValid (uint32_t reg) const - { -#if defined (LLDB_CONFIGURATION_DEBUG) - assert (reg < m_reg_valid.size()); + friend class ThreadGDBRemote; + + bool ReadRegisterBytes(const RegisterInfo *reg_info, DataExtractor &data); + + bool WriteRegisterBytes(const RegisterInfo *reg_info, DataExtractor &data, + uint32_t data_offset); + + bool PrivateSetRegisterValue(uint32_t reg, llvm::ArrayRef<uint8_t> data); + + bool PrivateSetRegisterValue(uint32_t reg, uint64_t val); + + void SetAllRegisterValid(bool b); + + bool GetRegisterIsValid(uint32_t reg) const { +#if defined(LLDB_CONFIGURATION_DEBUG) + assert(reg < m_reg_valid.size()); #endif - if (reg < m_reg_valid.size()) - return m_reg_valid[reg]; - return false; - } - - void - SetRegisterIsValid (const RegisterInfo *reg_info, bool valid) - { - if (reg_info) - return SetRegisterIsValid (reg_info->kinds[lldb::eRegisterKindLLDB], valid); - } - - void - SetRegisterIsValid (uint32_t reg, bool valid) - { -#if defined (LLDB_CONFIGURATION_DEBUG) - assert (reg < m_reg_valid.size()); + if (reg < m_reg_valid.size()) + return m_reg_valid[reg]; + return false; + } + + void SetRegisterIsValid(const RegisterInfo *reg_info, bool valid) { + if (reg_info) + return SetRegisterIsValid(reg_info->kinds[lldb::eRegisterKindLLDB], + valid); + } + + void SetRegisterIsValid(uint32_t reg, bool valid) { +#if defined(LLDB_CONFIGURATION_DEBUG) + assert(reg < m_reg_valid.size()); #endif - if (reg < m_reg_valid.size()) - m_reg_valid[reg] = valid; - } - - void - SyncThreadState(Process *process); // Assumes the sequence mutex has already been acquired. - - GDBRemoteDynamicRegisterInfo &m_reg_info; - std::vector<bool> m_reg_valid; - DataExtractor m_reg_data; - bool m_read_all_at_once; + if (reg < m_reg_valid.size()) + m_reg_valid[reg] = valid; + } + + GDBRemoteDynamicRegisterInfo &m_reg_info; + std::vector<bool> m_reg_valid; + DataExtractor m_reg_data; + bool m_read_all_at_once; private: - // Helper function for ReadRegisterBytes(). - bool GetPrimordialRegister(const RegisterInfo *reg_info, - GDBRemoteCommunicationClient &gdb_comm); - // Helper function for WriteRegisterBytes(). - bool SetPrimordialRegister(const RegisterInfo *reg_info, - GDBRemoteCommunicationClient &gdb_comm); - - DISALLOW_COPY_AND_ASSIGN (GDBRemoteRegisterContext); + // Helper function for ReadRegisterBytes(). + bool GetPrimordialRegister(const RegisterInfo *reg_info, + GDBRemoteCommunicationClient &gdb_comm); + // Helper function for WriteRegisterBytes(). + bool SetPrimordialRegister(const RegisterInfo *reg_info, + GDBRemoteCommunicationClient &gdb_comm); + + DISALLOW_COPY_AND_ASSIGN(GDBRemoteRegisterContext); }; } // namespace process_gdb_remote |