1 //===-- DynamicLoaderStatic.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_DynamicLoaderStatic_h_
11 #define liblldb_DynamicLoaderStatic_h_
12 
13 #include "lldb/Target/DynamicLoader.h"
14 #include "lldb/Target/Process.h"
15 #include "lldb/Utility/FileSpec.h"
16 #include "lldb/Utility/UUID.h"
17 
18 class DynamicLoaderStatic : public lldb_private::DynamicLoader {
19 public:
20   DynamicLoaderStatic(lldb_private::Process *process);
21 
22   ~DynamicLoaderStatic() override;
23 
24   //------------------------------------------------------------------
25   // Static Functions
26   //------------------------------------------------------------------
27   static void Initialize();
28 
29   static void Terminate();
30 
31   static lldb_private::ConstString GetPluginNameStatic();
32 
33   static const char *GetPluginDescriptionStatic();
34 
35   static lldb_private::DynamicLoader *
36   CreateInstance(lldb_private::Process *process, bool force);
37 
38   //------------------------------------------------------------------
39   /// Called after attaching a process.
40   ///
41   /// Allow DynamicLoader plug-ins to execute some code after
42   /// attaching to a process.
43   //------------------------------------------------------------------
44   void DidAttach() override;
45 
46   void DidLaunch() override;
47 
48   lldb::ThreadPlanSP GetStepThroughTrampolinePlan(lldb_private::Thread &thread,
49                                                   bool stop_others) override;
50 
51   lldb_private::Status CanLoadImage() override;
52 
53   //------------------------------------------------------------------
54   // PluginInterface protocol
55   //------------------------------------------------------------------
56   lldb_private::ConstString GetPluginName() override;
57 
58   uint32_t GetPluginVersion() override;
59 
60 private:
61   void LoadAllImagesAtFileAddresses();
62 
63   DISALLOW_COPY_AND_ASSIGN(DynamicLoaderStatic);
64 };
65 
66 #endif // liblldb_DynamicLoaderStatic_h_
67