1 //===-- PluginManager.h -----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 #ifndef liblldb_PluginManager_h_
12 #define liblldb_PluginManager_h_
14 #include "lldb/lldb-private.h"
15 #include "lldb/Host/FileSpec.h"
17 namespace lldb_private {
28 //------------------------------------------------------------------
30 //------------------------------------------------------------------
32 RegisterPlugin (const ConstString &name,
33 const char *description,
34 ABICreateInstance create_callback);
37 UnregisterPlugin (ABICreateInstance create_callback);
39 static ABICreateInstance
40 GetABICreateCallbackAtIndex (uint32_t idx);
42 static ABICreateInstance
43 GetABICreateCallbackForPluginName (const ConstString &name);
46 //------------------------------------------------------------------
48 //------------------------------------------------------------------
50 RegisterPlugin (const ConstString &name,
51 const char *description,
52 DisassemblerCreateInstance create_callback);
55 UnregisterPlugin (DisassemblerCreateInstance create_callback);
57 static DisassemblerCreateInstance
58 GetDisassemblerCreateCallbackAtIndex (uint32_t idx);
60 static DisassemblerCreateInstance
61 GetDisassemblerCreateCallbackForPluginName (const ConstString &name);
64 //------------------------------------------------------------------
66 //------------------------------------------------------------------
68 RegisterPlugin (const ConstString &name,
69 const char *description,
70 DynamicLoaderCreateInstance create_callback,
71 DebuggerInitializeCallback debugger_init_callback = NULL);
74 UnregisterPlugin (DynamicLoaderCreateInstance create_callback);
76 static DynamicLoaderCreateInstance
77 GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx);
79 static DynamicLoaderCreateInstance
80 GetDynamicLoaderCreateCallbackForPluginName (const ConstString &name);
82 //------------------------------------------------------------------
84 //------------------------------------------------------------------
86 RegisterPlugin (const ConstString &name,
87 const char *description,
88 JITLoaderCreateInstance create_callback,
89 DebuggerInitializeCallback debugger_init_callback = NULL);
92 UnregisterPlugin (JITLoaderCreateInstance create_callback);
94 static JITLoaderCreateInstance
95 GetJITLoaderCreateCallbackAtIndex (uint32_t idx);
97 static JITLoaderCreateInstance
98 GetJITLoaderCreateCallbackForPluginName (const ConstString &name);
100 //------------------------------------------------------------------
101 // EmulateInstruction
102 //------------------------------------------------------------------
104 RegisterPlugin (const ConstString &name,
105 const char *description,
106 EmulateInstructionCreateInstance create_callback);
109 UnregisterPlugin (EmulateInstructionCreateInstance create_callback);
111 static EmulateInstructionCreateInstance
112 GetEmulateInstructionCreateCallbackAtIndex (uint32_t idx);
114 static EmulateInstructionCreateInstance
115 GetEmulateInstructionCreateCallbackForPluginName (const ConstString &name);
117 //------------------------------------------------------------------
119 //------------------------------------------------------------------
121 RegisterPlugin (const ConstString &name,
122 const char *description,
123 OperatingSystemCreateInstance create_callback);
126 UnregisterPlugin (OperatingSystemCreateInstance create_callback);
128 static OperatingSystemCreateInstance
129 GetOperatingSystemCreateCallbackAtIndex (uint32_t idx);
131 static OperatingSystemCreateInstance
132 GetOperatingSystemCreateCallbackForPluginName (const ConstString &name);
134 //------------------------------------------------------------------
136 //------------------------------------------------------------------
138 RegisterPlugin (const ConstString &name,
139 const char *description,
140 LanguageRuntimeCreateInstance create_callback);
143 UnregisterPlugin (LanguageRuntimeCreateInstance create_callback);
145 static LanguageRuntimeCreateInstance
146 GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx);
148 static LanguageRuntimeCreateInstance
149 GetLanguageRuntimeCreateCallbackForPluginName (const ConstString &name);
152 //------------------------------------------------------------------
154 //------------------------------------------------------------------
156 RegisterPlugin (const ConstString &name,
157 const char *description,
158 SystemRuntimeCreateInstance create_callback);
161 UnregisterPlugin (SystemRuntimeCreateInstance create_callback);
163 static SystemRuntimeCreateInstance
164 GetSystemRuntimeCreateCallbackAtIndex (uint32_t idx);
166 static SystemRuntimeCreateInstance
167 GetSystemRuntimeCreateCallbackForPluginName (const ConstString &name);
170 //------------------------------------------------------------------
172 //------------------------------------------------------------------
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);
182 UnregisterPlugin (ObjectFileCreateInstance create_callback);
184 static ObjectFileCreateInstance
185 GetObjectFileCreateCallbackAtIndex (uint32_t idx);
187 static ObjectFileCreateMemoryInstance
188 GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx);
190 static ObjectFileGetModuleSpecifications
191 GetObjectFileGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
193 static ObjectFileCreateInstance
194 GetObjectFileCreateCallbackForPluginName (const ConstString &name);
196 static ObjectFileCreateMemoryInstance
197 GetObjectFileCreateMemoryCallbackForPluginName (const ConstString &name);
200 SaveCore (const lldb::ProcessSP &process_sp, const FileSpec &outfile);
202 //------------------------------------------------------------------
204 //------------------------------------------------------------------
206 RegisterPlugin (const ConstString &name,
207 const char *description,
208 ObjectContainerCreateInstance create_callback,
209 ObjectFileGetModuleSpecifications get_module_specifications);
212 UnregisterPlugin (ObjectContainerCreateInstance create_callback);
214 static ObjectContainerCreateInstance
215 GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
217 static ObjectContainerCreateInstance
218 GetObjectContainerCreateCallbackForPluginName (const ConstString &name);
220 static ObjectFileGetModuleSpecifications
221 GetObjectContainerGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
223 //------------------------------------------------------------------
225 //------------------------------------------------------------------
227 RegisterPlugin (const ConstString &name,
228 const char *description,
229 LogChannelCreateInstance create_callback);
232 UnregisterPlugin (LogChannelCreateInstance create_callback);
234 static LogChannelCreateInstance
235 GetLogChannelCreateCallbackAtIndex (uint32_t idx);
237 static LogChannelCreateInstance
238 GetLogChannelCreateCallbackForPluginName (const ConstString &name);
241 GetLogChannelCreateNameAtIndex (uint32_t idx);
243 //------------------------------------------------------------------
245 //------------------------------------------------------------------
247 RegisterPlugin (const ConstString &name,
248 const char *description,
249 PlatformCreateInstance create_callback,
250 DebuggerInitializeCallback debugger_init_callback = NULL);
253 UnregisterPlugin (PlatformCreateInstance create_callback);
255 static PlatformCreateInstance
256 GetPlatformCreateCallbackAtIndex (uint32_t idx);
258 static PlatformCreateInstance
259 GetPlatformCreateCallbackForPluginName (const ConstString &name);
262 GetPlatformPluginNameAtIndex (uint32_t idx);
265 GetPlatformPluginDescriptionAtIndex (uint32_t idx);
268 AutoCompletePlatformName (const char *partial_name,
269 StringList &matches);
270 //------------------------------------------------------------------
272 //------------------------------------------------------------------
274 RegisterPlugin (const ConstString &name,
275 const char *description,
276 ProcessCreateInstance create_callback,
277 DebuggerInitializeCallback debugger_init_callback = NULL);
280 UnregisterPlugin (ProcessCreateInstance create_callback);
282 static ProcessCreateInstance
283 GetProcessCreateCallbackAtIndex (uint32_t idx);
285 static ProcessCreateInstance
286 GetProcessCreateCallbackForPluginName (const ConstString &name);
289 GetProcessPluginNameAtIndex (uint32_t idx);
292 GetProcessPluginDescriptionAtIndex (uint32_t idx);
294 //------------------------------------------------------------------
296 //------------------------------------------------------------------
298 RegisterPlugin (const ConstString &name,
299 const char *description,
300 SymbolFileCreateInstance create_callback);
303 UnregisterPlugin (SymbolFileCreateInstance create_callback);
305 static SymbolFileCreateInstance
306 GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
308 static SymbolFileCreateInstance
309 GetSymbolFileCreateCallbackForPluginName (const ConstString &name);
312 //------------------------------------------------------------------
314 //------------------------------------------------------------------
316 RegisterPlugin (const ConstString &name,
317 const char *description,
318 SymbolVendorCreateInstance create_callback);
321 UnregisterPlugin (SymbolVendorCreateInstance create_callback);
323 static SymbolVendorCreateInstance
324 GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
326 static SymbolVendorCreateInstance
327 GetSymbolVendorCreateCallbackForPluginName (const ConstString &name);
329 //------------------------------------------------------------------
331 //------------------------------------------------------------------
333 RegisterPlugin (const ConstString &name,
334 const char *description,
335 UnwindAssemblyCreateInstance create_callback);
338 UnregisterPlugin (UnwindAssemblyCreateInstance create_callback);
340 static UnwindAssemblyCreateInstance
341 GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx);
343 static UnwindAssemblyCreateInstance
344 GetUnwindAssemblyCreateCallbackForPluginName (const ConstString &name);
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 //------------------------------------------------------------------
354 DebuggerInitialize (Debugger &debugger);
356 static lldb::OptionValuePropertiesSP
357 GetSettingForDynamicLoaderPlugin (Debugger &debugger,
358 const ConstString &setting_name);
361 CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
362 const lldb::OptionValuePropertiesSP &properties_sp,
363 const ConstString &description,
364 bool is_global_property);
366 static lldb::OptionValuePropertiesSP
367 GetSettingForPlatformPlugin (Debugger &debugger,
368 const ConstString &setting_name);
371 CreateSettingForPlatformPlugin (Debugger &debugger,
372 const lldb::OptionValuePropertiesSP &properties_sp,
373 const ConstString &description,
374 bool is_global_property);
376 static lldb::OptionValuePropertiesSP
377 GetSettingForProcessPlugin (Debugger &debugger,
378 const ConstString &setting_name);
381 CreateSettingForProcessPlugin (Debugger &debugger,
382 const lldb::OptionValuePropertiesSP &properties_sp,
383 const ConstString &description,
384 bool is_global_property);
389 } // namespace lldb_private
391 #endif // liblldb_PluginManager_h_