xref: /freebsd/contrib/llvm-project/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
1 //===-- ProcessFreeBSDKernel.h ----------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
10 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
11 
12 #include "lldb/Target/PostMortemProcess.h"
13 
14 class ProcessFreeBSDKernel : public lldb_private::PostMortemProcess {
15 public:
16   ProcessFreeBSDKernel(lldb::TargetSP target_sp, lldb::ListenerSP listener,
17                        const lldb_private::FileSpec &core_file);
18 
19   static lldb::ProcessSP
20   CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener,
21                  const lldb_private::FileSpec *crash_file_path,
22                  bool can_connect);
23 
24   static void Initialize();
25 
26   static void Terminate();
27 
28   static llvm::StringRef GetPluginNameStatic() { return "freebsd-kernel"; }
29 
30   static llvm::StringRef GetPluginDescriptionStatic() {
31     return "FreeBSD kernel vmcore debugging plug-in.";
32   }
33 
34   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
35 
36   lldb_private::Status DoDestroy() override;
37 
38   bool CanDebug(lldb::TargetSP target_sp,
39                 bool plugin_specified_by_name) override;
40 
41   void RefreshStateAfterStop() override;
42 
43   lldb_private::Status DoLoadCore() override;
44 
45   lldb_private::DynamicLoader *GetDynamicLoader() override;
46 
47 protected:
48   bool DoUpdateThreadList(lldb_private::ThreadList &old_thread_list,
49                           lldb_private::ThreadList &new_thread_list) override;
50 
51   lldb::addr_t FindSymbol(const char* name);
52 };
53 
54 #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
55