]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/PluginManager.h
Install the liblzma pkg-config file
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Core / PluginManager.h
1 //===-- PluginManager.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
11 #ifndef liblldb_PluginManager_h_
12 #define liblldb_PluginManager_h_
13
14 #include "lldb/lldb-private.h"
15 #include "lldb/Host/FileSpec.h"
16
17 namespace lldb_private {
18
19 class PluginManager
20 {
21 public:
22     static void
23     Initialize ();
24     
25     static void
26     Terminate ();
27
28     //------------------------------------------------------------------
29     // ABI
30     //------------------------------------------------------------------
31     static bool
32     RegisterPlugin (const ConstString &name,
33                     const char *description,
34                     ABICreateInstance create_callback);
35
36     static bool
37     UnregisterPlugin (ABICreateInstance create_callback);
38
39     static ABICreateInstance
40     GetABICreateCallbackAtIndex (uint32_t idx);
41
42     static ABICreateInstance
43     GetABICreateCallbackForPluginName (const ConstString &name);
44
45
46     //------------------------------------------------------------------
47     // Disassembler
48     //------------------------------------------------------------------
49     static bool
50     RegisterPlugin (const ConstString &name,
51                     const char *description,
52                     DisassemblerCreateInstance create_callback);
53
54     static bool
55     UnregisterPlugin (DisassemblerCreateInstance create_callback);
56
57     static DisassemblerCreateInstance
58     GetDisassemblerCreateCallbackAtIndex (uint32_t idx);
59
60     static DisassemblerCreateInstance
61     GetDisassemblerCreateCallbackForPluginName (const ConstString &name);
62
63
64     //------------------------------------------------------------------
65     // DynamicLoader
66     //------------------------------------------------------------------
67     static bool
68     RegisterPlugin (const ConstString &name,
69                     const char *description,
70                     DynamicLoaderCreateInstance create_callback,
71                     DebuggerInitializeCallback debugger_init_callback = NULL);
72
73     static bool
74     UnregisterPlugin (DynamicLoaderCreateInstance create_callback);
75
76     static DynamicLoaderCreateInstance
77     GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx);
78
79     static DynamicLoaderCreateInstance
80     GetDynamicLoaderCreateCallbackForPluginName (const ConstString &name);
81
82     //------------------------------------------------------------------
83     // JITLoader
84     //------------------------------------------------------------------
85     static bool
86     RegisterPlugin (const ConstString &name,
87                     const char *description,
88                     JITLoaderCreateInstance create_callback,
89                     DebuggerInitializeCallback debugger_init_callback = NULL);
90
91     static bool
92     UnregisterPlugin (JITLoaderCreateInstance create_callback);
93
94     static JITLoaderCreateInstance
95     GetJITLoaderCreateCallbackAtIndex (uint32_t idx);
96
97     static JITLoaderCreateInstance
98     GetJITLoaderCreateCallbackForPluginName (const ConstString &name);
99
100     //------------------------------------------------------------------
101     // EmulateInstruction
102     //------------------------------------------------------------------
103     static bool
104     RegisterPlugin (const ConstString &name,
105                     const char *description,
106                     EmulateInstructionCreateInstance create_callback);
107     
108     static bool
109     UnregisterPlugin (EmulateInstructionCreateInstance create_callback);
110     
111     static EmulateInstructionCreateInstance
112     GetEmulateInstructionCreateCallbackAtIndex (uint32_t idx);
113     
114     static EmulateInstructionCreateInstance
115     GetEmulateInstructionCreateCallbackForPluginName (const ConstString &name);
116
117     //------------------------------------------------------------------
118     // OperatingSystem
119     //------------------------------------------------------------------
120     static bool
121     RegisterPlugin (const ConstString &name,
122                     const char *description,
123                     OperatingSystemCreateInstance create_callback);
124     
125     static bool
126     UnregisterPlugin (OperatingSystemCreateInstance create_callback);
127     
128     static OperatingSystemCreateInstance
129     GetOperatingSystemCreateCallbackAtIndex (uint32_t idx);
130     
131     static OperatingSystemCreateInstance
132     GetOperatingSystemCreateCallbackForPluginName (const ConstString &name);
133
134     //------------------------------------------------------------------
135     // LanguageRuntime
136     //------------------------------------------------------------------
137     static bool
138     RegisterPlugin (const ConstString &name,
139                     const char *description,
140                     LanguageRuntimeCreateInstance create_callback);
141
142     static bool
143     UnregisterPlugin (LanguageRuntimeCreateInstance create_callback);
144
145     static LanguageRuntimeCreateInstance
146     GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx);
147
148     static LanguageRuntimeCreateInstance
149     GetLanguageRuntimeCreateCallbackForPluginName (const ConstString &name);
150
151
152     //------------------------------------------------------------------
153     // SystemRuntime
154     //------------------------------------------------------------------
155     static bool
156     RegisterPlugin (const ConstString &name,
157                     const char *description,
158                     SystemRuntimeCreateInstance create_callback);
159
160     static bool
161     UnregisterPlugin (SystemRuntimeCreateInstance create_callback);
162
163     static SystemRuntimeCreateInstance
164     GetSystemRuntimeCreateCallbackAtIndex (uint32_t idx);
165
166     static SystemRuntimeCreateInstance
167     GetSystemRuntimeCreateCallbackForPluginName (const ConstString &name);
168
169
170     //------------------------------------------------------------------
171     // ObjectFile
172     //------------------------------------------------------------------
173     static bool
174     RegisterPlugin (const ConstString &name,
175                     const char *description,
176                     ObjectFileCreateInstance create_callback,
177                     ObjectFileCreateMemoryInstance create_memory_callback,
178                     ObjectFileGetModuleSpecifications get_module_specifications,
179                     ObjectFileSaveCore save_core = NULL);
180
181     static bool
182     UnregisterPlugin (ObjectFileCreateInstance create_callback);
183
184     static ObjectFileCreateInstance
185     GetObjectFileCreateCallbackAtIndex (uint32_t idx);
186     
187     static ObjectFileCreateMemoryInstance
188     GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx);
189
190     static ObjectFileGetModuleSpecifications
191     GetObjectFileGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
192
193     static ObjectFileCreateInstance
194     GetObjectFileCreateCallbackForPluginName (const ConstString &name);
195
196     static ObjectFileCreateMemoryInstance
197     GetObjectFileCreateMemoryCallbackForPluginName (const ConstString &name);
198
199     static Error
200     SaveCore (const lldb::ProcessSP &process_sp, const FileSpec &outfile);
201
202     //------------------------------------------------------------------
203     // ObjectContainer
204     //------------------------------------------------------------------
205     static bool
206     RegisterPlugin (const ConstString &name,
207                     const char *description,
208                     ObjectContainerCreateInstance create_callback,
209                     ObjectFileGetModuleSpecifications get_module_specifications);
210
211     static bool
212     UnregisterPlugin (ObjectContainerCreateInstance create_callback);
213
214     static ObjectContainerCreateInstance
215     GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
216
217     static ObjectContainerCreateInstance
218     GetObjectContainerCreateCallbackForPluginName (const ConstString &name);
219
220     static ObjectFileGetModuleSpecifications
221     GetObjectContainerGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
222
223     //------------------------------------------------------------------
224     // LogChannel
225     //------------------------------------------------------------------
226     static bool
227     RegisterPlugin (const ConstString &name,
228                     const char *description,
229                     LogChannelCreateInstance create_callback);
230
231     static bool
232     UnregisterPlugin (LogChannelCreateInstance create_callback);
233
234     static LogChannelCreateInstance
235     GetLogChannelCreateCallbackAtIndex (uint32_t idx);
236
237     static LogChannelCreateInstance
238     GetLogChannelCreateCallbackForPluginName (const ConstString &name);
239
240     static const char *
241     GetLogChannelCreateNameAtIndex (uint32_t idx);
242
243     //------------------------------------------------------------------
244     // Platform
245     //------------------------------------------------------------------
246     static bool
247     RegisterPlugin (const ConstString &name,
248                     const char *description,
249                     PlatformCreateInstance create_callback,
250                     DebuggerInitializeCallback debugger_init_callback = NULL);
251
252     static bool
253     UnregisterPlugin (PlatformCreateInstance create_callback);
254
255     static PlatformCreateInstance
256     GetPlatformCreateCallbackAtIndex (uint32_t idx);
257
258     static PlatformCreateInstance
259     GetPlatformCreateCallbackForPluginName (const ConstString &name);
260     
261     static const char *
262     GetPlatformPluginNameAtIndex (uint32_t idx);
263
264     static const char *
265     GetPlatformPluginDescriptionAtIndex (uint32_t idx);
266
267     static size_t
268     AutoCompletePlatformName (const char *partial_name, 
269                               StringList &matches);
270     //------------------------------------------------------------------
271     // Process
272     //------------------------------------------------------------------
273     static bool
274     RegisterPlugin (const ConstString &name,
275                     const char *description,
276                     ProcessCreateInstance create_callback,
277                     DebuggerInitializeCallback debugger_init_callback = NULL);
278     
279     static bool
280     UnregisterPlugin (ProcessCreateInstance create_callback);
281     
282     static ProcessCreateInstance
283     GetProcessCreateCallbackAtIndex (uint32_t idx);
284     
285     static ProcessCreateInstance
286     GetProcessCreateCallbackForPluginName (const ConstString &name);
287     
288     static const char *
289     GetProcessPluginNameAtIndex (uint32_t idx);
290     
291     static const char *
292     GetProcessPluginDescriptionAtIndex (uint32_t idx);
293
294     //------------------------------------------------------------------
295     // SymbolFile
296     //------------------------------------------------------------------
297     static bool
298     RegisterPlugin (const ConstString &name,
299                     const char *description,
300                     SymbolFileCreateInstance create_callback);
301
302     static bool
303     UnregisterPlugin (SymbolFileCreateInstance create_callback);
304
305     static SymbolFileCreateInstance
306     GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
307
308     static SymbolFileCreateInstance
309     GetSymbolFileCreateCallbackForPluginName (const ConstString &name);
310
311
312     //------------------------------------------------------------------
313     // SymbolVendor
314     //------------------------------------------------------------------
315     static bool
316     RegisterPlugin (const ConstString &name,
317                     const char *description,
318                     SymbolVendorCreateInstance create_callback);
319
320     static bool
321     UnregisterPlugin (SymbolVendorCreateInstance create_callback);
322
323     static SymbolVendorCreateInstance
324     GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
325
326     static SymbolVendorCreateInstance
327     GetSymbolVendorCreateCallbackForPluginName (const ConstString &name);
328
329     //------------------------------------------------------------------
330     // UnwindAssembly
331     //------------------------------------------------------------------
332     static bool
333     RegisterPlugin (const ConstString &name,
334                     const char *description,
335                     UnwindAssemblyCreateInstance create_callback);
336
337     static bool
338     UnregisterPlugin (UnwindAssemblyCreateInstance create_callback);
339
340     static UnwindAssemblyCreateInstance
341     GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx);
342
343     static UnwindAssemblyCreateInstance
344     GetUnwindAssemblyCreateCallbackForPluginName (const ConstString &name);
345
346     //------------------------------------------------------------------
347     // Some plug-ins might register a DebuggerInitializeCallback
348     // callback when registering the plug-in. After a new Debugger
349     // instance is created, this DebuggerInitialize function will get
350     // called. This allows plug-ins to install Properties and do any
351     // other initialization that requires a debugger instance.
352     //------------------------------------------------------------------
353     static void
354     DebuggerInitialize (Debugger &debugger);
355     
356     static lldb::OptionValuePropertiesSP
357     GetSettingForDynamicLoaderPlugin (Debugger &debugger,
358                                       const ConstString &setting_name);
359     
360     static bool
361     CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
362                                          const lldb::OptionValuePropertiesSP &properties_sp,
363                                          const ConstString &description,
364                                          bool is_global_property);
365     
366     static lldb::OptionValuePropertiesSP
367     GetSettingForPlatformPlugin (Debugger &debugger,
368                                        const ConstString &setting_name);
369     
370     static bool
371     CreateSettingForPlatformPlugin (Debugger &debugger,
372                                          const lldb::OptionValuePropertiesSP &properties_sp,
373                                          const ConstString &description,
374                                          bool is_global_property);
375
376     static lldb::OptionValuePropertiesSP
377     GetSettingForProcessPlugin (Debugger &debugger,
378                                 const ConstString &setting_name);
379     
380     static bool
381     CreateSettingForProcessPlugin (Debugger &debugger,
382                                    const lldb::OptionValuePropertiesSP &properties_sp,
383                                    const ConstString &description,
384                                    bool is_global_property);
385
386 };
387
388
389 } // namespace lldb_private
390
391 #endif  // liblldb_PluginManager_h_