GDBRemoteRegisterContext.h revision b344843f75ef893762c93fd0a22d2d45712ce74d
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- GDBRemoteRegisterContext.h ------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef lldb_GDBRemoteRegisterContext_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define lldb_GDBRemoteRegisterContext_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <vector> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 203a4ea24572fad1e22525f8efb718d49d41e30398Jason Molenda#include "lldb/lldb-enumerations.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/ConstString.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/DataExtractor.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/RegisterContext.h" 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ThreadGDBRemote; 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ProcessGDBRemote; 28a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Claytonclass StringExtractor; 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass GDBRemoteDynamicRegisterInfo 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GDBRemoteDynamicRegisterInfo () : 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_regs (), 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sets (), 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_reg_nums (), 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_names (), 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_alt_names (), 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_names (), 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_data_byte_size (0) 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~GDBRemoteDynamicRegisterInfo () 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 49b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton AddRegister (lldb_private::RegisterInfo ®_info, 50b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton lldb_private::ConstString ®_name, 51b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton lldb_private::ConstString ®_alt_name, 52b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton lldb_private::ConstString &set_name) 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const uint32_t reg_num = m_regs.size(); 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_names.push_back (reg_name); 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_alt_names.push_back (reg_alt_name); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner reg_info.name = reg_name.AsCString(); 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner assert (reg_info.name); 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner reg_info.alt_name = reg_alt_name.AsCString(NULL); 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_regs.push_back (reg_info); 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t set = GetRegisterSetIndexByName (set_name, true); 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner assert (set < m_sets.size()); 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner assert (set < m_set_reg_nums.size()); 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner assert (set < m_set_names.size()); 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_reg_nums[set].push_back(reg_num); 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t end_reg_offset = reg_info.byte_offset + reg_info.byte_size; 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (m_reg_data_byte_size < end_reg_offset) 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_data_byte_size = end_reg_offset; 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Finalize () 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (uint32_t set = 0; set < m_sets.size(); ++set) 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner assert (m_sets.size() == m_set_reg_nums.size()); 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sets[set].num_registers = m_set_reg_nums[set].size(); 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sets[set].registers = &m_set_reg_nums[set][0]; 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumRegisters() const 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_regs.size(); 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumRegisterSets() const 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_sets.size(); 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterDataByteSize() const 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_reg_data_byte_size; 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 100b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton const lldb_private::RegisterInfo * 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterInfoAtIndex (uint32_t i) const 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (i < m_regs.size()) 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return &m_regs[i]; 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 108b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton const lldb_private::RegisterSet * 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterSet (uint32_t i) const 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (i < m_sets.size()) 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return &m_sets[i]; 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterSetIndexByName (lldb_private::ConstString &set_name, bool can_create) 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner name_collection::iterator pos, end = m_set_names.end(); 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (pos = m_set_names.begin(); pos != end; ++pos) 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (*pos == set_name) 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return std::distance (m_set_names.begin(), pos); 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_names.push_back(set_name); 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_reg_nums.resize(m_set_reg_nums.size()+1); 128b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton lldb_private::RegisterSet new_set = { set_name.AsCString(), NULL, 0, NULL }; 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sets.push_back (new_set); 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_sets.size() - 1; 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ConvertRegisterKindToRegisterNumber (uint32_t kind, uint32_t num) const 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner reg_collection::const_iterator pos, end = m_regs.end(); 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (pos = m_regs.begin(); pos != end; ++pos) 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (pos->kinds[kind] == num) 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return std::distance (m_regs.begin(), pos); 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return LLDB_INVALID_REGNUM; 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Clear() 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_regs.clear(); 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sets.clear(); 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_reg_nums.clear(); 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_names.clear(); 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_reg_alt_names.clear(); 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_set_names.clear(); 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HardcodeARMRegisters(); 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Classes that inherit from GDBRemoteRegisterContext can see and modify these 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 163b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton typedef std::vector <lldb_private::RegisterInfo> reg_collection; 164b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton typedef std::vector <lldb_private::RegisterSet> set_collection; 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector <uint32_t> reg_num_collection; 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector <reg_num_collection> set_reg_num_collection; 16724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector <lldb_private::ConstString> name_collection; 16824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner reg_collection m_regs; 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner set_collection m_sets; 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner set_reg_num_collection m_set_reg_nums; 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner name_collection m_reg_names; 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner name_collection m_reg_alt_names; 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner name_collection m_set_names; 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t m_reg_data_byte_size; // The number of bytes required to store all registers 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass GDBRemoteRegisterContext : public lldb_private::RegisterContext 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Constructors and Destructors 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GDBRemoteRegisterContext (ThreadGDBRemote &thread, 18508d7d3ae16110aa68ed40c161eac8571aeb94cd9Greg Clayton uint32_t concrete_frame_idx, 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GDBRemoteDynamicRegisterInfo ®_info, 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool read_all_at_once); 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~GDBRemoteRegisterContext (); 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Subclasses must override these functions 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 196a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Clayton InvalidateAllRegisters (); 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterCount (); 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 201b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton virtual const lldb_private::RegisterInfo * 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterInfoAtIndex (uint32_t reg); 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterSetCount (); 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 207b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton virtual const lldb_private::RegisterSet * 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetRegisterSet (uint32_t reg_set); 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ReadRegisterValue (uint32_t reg, lldb_private::Scalar &value); 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ReadRegisterBytes (uint32_t reg, lldb_private::DataExtractor &data); 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ReadAllRegisterValues (lldb::DataBufferSP &data_sp); 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WriteRegisterValue (uint32_t reg, const lldb_private::Scalar &value); 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WriteRegisterBytes (uint32_t reg, lldb_private::DataExtractor &data, uint32_t data_offset); 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WriteAllRegisterValues (const lldb::DataBufferSP &data_sp); 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ConvertRegisterKindToRegisterNumber (uint32_t kind, uint32_t num); 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 232a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Clayton friend class ThreadGDBRemote; 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 234c3c4661c6a7527580e605dbb69bef7634971fe13Greg Clayton bool 235a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Clayton PrivateSetRegisterValue (uint32_t reg, StringExtractor &response); 236a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Clayton 237a875b64ab8d258b28959d05eea37cb5dfdd72730Greg Clayton void 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetAllRegisterValid (bool b); 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ProcessGDBRemote & 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetGDBProcess(); 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ThreadGDBRemote & 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetGDBThread(); 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GDBRemoteDynamicRegisterInfo &m_reg_info; 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::vector<bool> m_reg_valid; 24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_reg_data; 24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool m_read_all_at_once; 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // For GDBRemoteRegisterContext only 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (GDBRemoteRegisterContext); 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // lldb_GDBRemoteRegisterContext_h_ 259