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 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Target/DynamicLoader.h"
18 #include "lldb/Host/FileSpec.h"
19 #include "lldb/Core/UUID.h"
20 #include "lldb/Target/Process.h"
21 
22 class DynamicLoaderStatic : public lldb_private::DynamicLoader
23 {
24 public:
25     DynamicLoaderStatic(lldb_private::Process *process);
26 
27     ~DynamicLoaderStatic() override;
28 
29     //------------------------------------------------------------------
30     // Static Functions
31     //------------------------------------------------------------------
32     static void
33     Initialize();
34 
35     static void
36     Terminate();
37 
38     static lldb_private::ConstString
39     GetPluginNameStatic();
40 
41     static const char *
42     GetPluginDescriptionStatic();
43 
44     static lldb_private::DynamicLoader *
45     CreateInstance (lldb_private::Process *process, bool force);
46 
47     //------------------------------------------------------------------
48     /// Called after attaching a process.
49     ///
50     /// Allow DynamicLoader plug-ins to execute some code after
51     /// attaching to a process.
52     //------------------------------------------------------------------
53     void
54     DidAttach() override;
55 
56     void
57     DidLaunch() override;
58 
59     lldb::ThreadPlanSP
60     GetStepThroughTrampolinePlan(lldb_private::Thread &thread,
61                                  bool stop_others) override;
62 
63     lldb_private::Error
64     CanLoadImage() override;
65 
66     //------------------------------------------------------------------
67     // PluginInterface protocol
68     //------------------------------------------------------------------
69     lldb_private::ConstString
70     GetPluginName() override;
71 
72     uint32_t
73     GetPluginVersion() override;
74 
75 private:
76     void
77     LoadAllImagesAtFileAddresses ();
78 
79     DISALLOW_COPY_AND_ASSIGN (DynamicLoaderStatic);
80 };
81 
82 #endif // liblldb_DynamicLoaderStatic_h_
83