xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD.h (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1*be691f3bSpatrick //===-- NativeRegisterContextFreeBSD.h --------------------------*- C++ -*-===//
2*be691f3bSpatrick //
3*be691f3bSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*be691f3bSpatrick // See https://llvm.org/LICENSE.txt for license information.
5*be691f3bSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*be691f3bSpatrick //
7*be691f3bSpatrick //===----------------------------------------------------------------------===//
8*be691f3bSpatrick 
9*be691f3bSpatrick #ifndef lldb_NativeRegisterContextFreeBSD_h
10*be691f3bSpatrick #define lldb_NativeRegisterContextFreeBSD_h
11*be691f3bSpatrick 
12*be691f3bSpatrick #include "lldb/Host/common/NativeThreadProtocol.h"
13*be691f3bSpatrick 
14*be691f3bSpatrick #include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h"
15*be691f3bSpatrick 
16*be691f3bSpatrick namespace lldb_private {
17*be691f3bSpatrick namespace process_freebsd {
18*be691f3bSpatrick 
19*be691f3bSpatrick class NativeProcessFreeBSD;
20*be691f3bSpatrick 
21*be691f3bSpatrick class NativeRegisterContextFreeBSD
22*be691f3bSpatrick     : public virtual NativeRegisterContextRegisterInfo {
23*be691f3bSpatrick public:
24*be691f3bSpatrick   // This function is implemented in the NativeRegisterContextFreeBSD_*
25*be691f3bSpatrick   // subclasses to create a new instance of the host specific
26*be691f3bSpatrick   // NativeRegisterContextFreeBSD. The implementations can't collide as only one
27*be691f3bSpatrick   // NativeRegisterContextFreeBSD_* variant should be compiled into the final
28*be691f3bSpatrick   // executable.
29*be691f3bSpatrick   static NativeRegisterContextFreeBSD *
30*be691f3bSpatrick   CreateHostNativeRegisterContextFreeBSD(const ArchSpec &target_arch,
31*be691f3bSpatrick                                          NativeThreadProtocol &native_thread);
32*be691f3bSpatrick   virtual llvm::Error
33*be691f3bSpatrick   CopyHardwareWatchpointsFrom(NativeRegisterContextFreeBSD &source) = 0;
34*be691f3bSpatrick 
35*be691f3bSpatrick protected:
36*be691f3bSpatrick   virtual NativeProcessFreeBSD &GetProcess();
37*be691f3bSpatrick   virtual ::pid_t GetProcessPid();
38*be691f3bSpatrick };
39*be691f3bSpatrick 
40*be691f3bSpatrick } // namespace process_freebsd
41*be691f3bSpatrick } // namespace lldb_private
42*be691f3bSpatrick 
43*be691f3bSpatrick #endif // #ifndef lldb_NativeRegisterContextFreeBSD_h
44