1//===-- RegisterContextCorePOSIX_x86_64.cpp ---------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Core/DataExtractor.h" 11#include "lldb/Core/RegisterValue.h" 12#include "lldb/Target/Thread.h" 13#include "RegisterContextPOSIX.h" 14#include "RegisterContextPOSIXCore_x86_64.h" 15 16using namespace lldb_private; 17 18RegisterContextCorePOSIX_x86_64::RegisterContextCorePOSIX_x86_64(Thread &thread, 19 RegisterInfoInterface *register_info, 20 const DataExtractor &gpregset, 21 const DataExtractor &fpregset) 22 : RegisterContextPOSIX_x86 (thread, 0, register_info) 23{ 24 size_t size, len; 25 26 size = GetGPRSize(); 27 m_gpregset = new uint8_t[size]; 28 len = gpregset.ExtractBytes (0, size, lldb::eByteOrderLittle, m_gpregset); 29 assert(len == size); 30} 31 32RegisterContextCorePOSIX_x86_64::~RegisterContextCorePOSIX_x86_64() 33{ 34 delete [] m_gpregset; 35} 36 37bool 38RegisterContextCorePOSIX_x86_64::ReadGPR() 39{ 40 return m_gpregset != NULL; 41} 42 43bool 44RegisterContextCorePOSIX_x86_64::ReadFPR() 45{ 46 return false; 47} 48 49bool 50RegisterContextCorePOSIX_x86_64::WriteGPR() 51{ 52 assert(0); 53 return false; 54} 55 56bool 57RegisterContextCorePOSIX_x86_64::WriteFPR() 58{ 59 assert(0); 60 return false; 61} 62 63bool 64RegisterContextCorePOSIX_x86_64::ReadRegister(const RegisterInfo *reg_info, RegisterValue &value) 65{ 66 switch (reg_info->byte_size) 67 { 68 case 4: 69 value = *(uint32_t *)(m_gpregset + reg_info->byte_offset); 70 return true; 71 case 8: 72 value = *(uint64_t *)(m_gpregset + reg_info->byte_offset); 73 return true; 74 } 75 return false; 76} 77 78bool 79RegisterContextCorePOSIX_x86_64::ReadAllRegisterValues(lldb::DataBufferSP &data_sp) 80{ 81 return false; 82} 83 84bool 85RegisterContextCorePOSIX_x86_64::WriteRegister(const RegisterInfo *reg_info, const RegisterValue &value) 86{ 87 return false; 88} 89 90bool 91RegisterContextCorePOSIX_x86_64::WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) 92{ 93 return false; 94} 95 96bool 97RegisterContextCorePOSIX_x86_64::HardwareSingleStep(bool enable) 98{ 99 return false; 100} 101