1 //===-- NativeRegisterContextOpenBSD.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 lldb_NativeRegisterContextOpenBSD_h 11 #define lldb_NativeRegisterContextOpenBSD_h 12 13 #include "lldb/Host/common/NativeThreadProtocol.h" 14 15 #include "Plugins/Process/OpenBSD/NativeProcessOpenBSD.h" 16 #include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h" 17 18 namespace lldb_private { 19 namespace process_openbsd { 20 21 class NativeRegisterContextOpenBSD : public NativeRegisterContextRegisterInfo { 22 public: 23 NativeRegisterContextOpenBSD(NativeThreadProtocol &native_thread, 24 RegisterInfoInterface *reg_info_interface_p); 25 26 // This function is implemented in the NativeRegisterContextOpenBSD_* 27 // subclasses to create a new instance of the host specific 28 // NativeRegisterContextOpenBSD. The implementations can't collide as only one 29 // NativeRegisterContextOpenBSD_* variant should be compiled into the final 30 // executable. 31 static std::unique_ptr<NativeRegisterContextOpenBSD> 32 CreateHostNativeRegisterContextOpenBSD(const ArchSpec &target_arch, 33 NativeThreadProtocol &native_thread); 34 35 protected: 36 virtual Status ReadGPR(); 37 virtual Status WriteGPR(); 38 39 virtual Status ReadFPR(); 40 virtual Status WriteFPR(); 41 GetGPRBuffer()42 virtual void *GetGPRBuffer() { return nullptr; } GetGPRSize()43 virtual size_t GetGPRSize() { 44 return GetRegisterInfoInterface().GetGPRSize(); 45 } 46 GetFPRBuffer()47 virtual void *GetFPRBuffer() { return nullptr; } GetFPRSize()48 virtual size_t GetFPRSize() { return 0; } 49 50 virtual Status DoReadGPR(void *buf); 51 virtual Status DoWriteGPR(void *buf); 52 53 virtual Status DoReadFPR(void *buf); 54 virtual Status DoWriteFPR(void *buf); 55 56 virtual NativeProcessOpenBSD &GetProcess(); 57 virtual ::pid_t GetProcessPid(); 58 }; 59 60 } // namespace process_openbsd 61 } // namespace lldb_private 62 63 #endif // #ifndef lldb_NativeRegisterContextOpenBSD_h 64