RegisterContextPOSIXProcessMonitor_x86.h revision 263363
1//===-- RegisterContextPOSIXProcessMonitor_x86.h ----------------*- 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#ifndef liblldb_RegisterContextPOSIXProcessMonitor_x86_H_ 11#define liblldb_RegisterContextPOSIXProcessMonitor_x86_H_ 12 13#include "Plugins/Process/POSIX/RegisterContextPOSIX_x86.h" 14 15class RegisterContextPOSIXProcessMonitor_x86_64: 16 public RegisterContextPOSIX_x86, 17 public POSIXBreakpointProtocol 18{ 19public: 20 RegisterContextPOSIXProcessMonitor_x86_64(lldb_private::Thread &thread, 21 uint32_t concrete_frame_idx, 22 RegisterInfoInterface *register_info); 23 24protected: 25 bool 26 ReadGPR(); 27 28 bool 29 ReadFPR(); 30 31 bool 32 WriteGPR(); 33 34 bool 35 WriteFPR(); 36 37 // lldb_private::RegisterContext 38 bool 39 ReadRegister(const unsigned reg, lldb_private::RegisterValue &value); 40 41 bool 42 WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value); 43 44 bool 45 ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value); 46 47 bool 48 WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value); 49 50 bool 51 ReadAllRegisterValues(lldb::DataBufferSP &data_sp); 52 53 bool 54 WriteAllRegisterValues(const lldb::DataBufferSP &data_sp); 55 56 uint32_t 57 SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write); 58 59 bool 60 ClearHardwareWatchpoint(uint32_t hw_index); 61 62 bool 63 HardwareSingleStep(bool enable); 64 65 // POSIXBreakpointProtocol 66 bool 67 UpdateAfterBreakpoint(); 68 69 unsigned 70 GetRegisterIndexFromOffset(unsigned offset); 71 72 bool 73 IsWatchpointHit(uint32_t hw_index); 74 75 bool 76 ClearWatchpointHits(); 77 78 lldb::addr_t 79 GetWatchpointAddress(uint32_t hw_index); 80 81 bool 82 IsWatchpointVacant(uint32_t hw_index); 83 84 bool 85 SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index); 86 87 uint32_t 88 NumSupportedHardwareWatchpoints(); 89 90private: 91 ProcessMonitor & 92 GetMonitor(); 93}; 94 95#endif 96