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,
141 LanguageRuntimeGetCommandObject command_callback = nullptr);
144 UnregisterPlugin (LanguageRuntimeCreateInstance create_callback);
146 static LanguageRuntimeCreateInstance
147 GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx);
149 static LanguageRuntimeGetCommandObject
150 GetLanguageRuntimeGetCommandObjectAtIndex (uint32_t idx);
152 static LanguageRuntimeCreateInstance
153 GetLanguageRuntimeCreateCallbackForPluginName (const ConstString &name);
156 //------------------------------------------------------------------
158 //------------------------------------------------------------------
160 RegisterPlugin (const ConstString &name,
161 const char *description,
162 SystemRuntimeCreateInstance create_callback);
165 UnregisterPlugin (SystemRuntimeCreateInstance create_callback);
167 static SystemRuntimeCreateInstance
168 GetSystemRuntimeCreateCallbackAtIndex (uint32_t idx);
170 static SystemRuntimeCreateInstance
171 GetSystemRuntimeCreateCallbackForPluginName (const ConstString &name);
174 //------------------------------------------------------------------
176 //------------------------------------------------------------------
178 RegisterPlugin (const ConstString &name,
179 const char *description,
180 ObjectFileCreateInstance create_callback,
181 ObjectFileCreateMemoryInstance create_memory_callback,
182 ObjectFileGetModuleSpecifications get_module_specifications,
183 ObjectFileSaveCore save_core = NULL);
186 UnregisterPlugin (ObjectFileCreateInstance create_callback);
188 static ObjectFileCreateInstance
189 GetObjectFileCreateCallbackAtIndex (uint32_t idx);
191 static ObjectFileCreateMemoryInstance
192 GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx);
194 static ObjectFileGetModuleSpecifications
195 GetObjectFileGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
197 static ObjectFileCreateInstance
198 GetObjectFileCreateCallbackForPluginName (const ConstString &name);
200 static ObjectFileCreateMemoryInstance
201 GetObjectFileCreateMemoryCallbackForPluginName (const ConstString &name);
204 SaveCore (const lldb::ProcessSP &process_sp, const FileSpec &outfile);
206 //------------------------------------------------------------------
208 //------------------------------------------------------------------
210 RegisterPlugin (const ConstString &name,
211 const char *description,
212 ObjectContainerCreateInstance create_callback,
213 ObjectFileGetModuleSpecifications get_module_specifications);
216 UnregisterPlugin (ObjectContainerCreateInstance create_callback);
218 static ObjectContainerCreateInstance
219 GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
221 static ObjectContainerCreateInstance
222 GetObjectContainerCreateCallbackForPluginName (const ConstString &name);
224 static ObjectFileGetModuleSpecifications
225 GetObjectContainerGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
227 //------------------------------------------------------------------
229 //------------------------------------------------------------------
231 RegisterPlugin (const ConstString &name,
232 const char *description,
233 LogChannelCreateInstance create_callback);
236 UnregisterPlugin (LogChannelCreateInstance create_callback);
238 static LogChannelCreateInstance
239 GetLogChannelCreateCallbackAtIndex (uint32_t idx);
241 static LogChannelCreateInstance
242 GetLogChannelCreateCallbackForPluginName (const ConstString &name);
245 GetLogChannelCreateNameAtIndex (uint32_t idx);
247 //------------------------------------------------------------------
249 //------------------------------------------------------------------
251 RegisterPlugin (const ConstString &name,
252 const char *description,
253 PlatformCreateInstance create_callback,
254 DebuggerInitializeCallback debugger_init_callback = NULL);
257 UnregisterPlugin (PlatformCreateInstance create_callback);
259 static PlatformCreateInstance
260 GetPlatformCreateCallbackAtIndex (uint32_t idx);
262 static PlatformCreateInstance
263 GetPlatformCreateCallbackForPluginName (const ConstString &name);
266 GetPlatformPluginNameAtIndex (uint32_t idx);
269 GetPlatformPluginDescriptionAtIndex (uint32_t idx);
272 AutoCompletePlatformName (const char *partial_name,
273 StringList &matches);
274 //------------------------------------------------------------------
276 //------------------------------------------------------------------
278 RegisterPlugin (const ConstString &name,
279 const char *description,
280 ProcessCreateInstance create_callback,
281 DebuggerInitializeCallback debugger_init_callback = NULL);
284 UnregisterPlugin (ProcessCreateInstance create_callback);
286 static ProcessCreateInstance
287 GetProcessCreateCallbackAtIndex (uint32_t idx);
289 static ProcessCreateInstance
290 GetProcessCreateCallbackForPluginName (const ConstString &name);
293 GetProcessPluginNameAtIndex (uint32_t idx);
296 GetProcessPluginDescriptionAtIndex (uint32_t idx);
298 //------------------------------------------------------------------
300 //------------------------------------------------------------------
302 RegisterPlugin (const ConstString &name,
303 const char *description,
304 SymbolFileCreateInstance create_callback);
307 UnregisterPlugin (SymbolFileCreateInstance create_callback);
309 static SymbolFileCreateInstance
310 GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
312 static SymbolFileCreateInstance
313 GetSymbolFileCreateCallbackForPluginName (const ConstString &name);
316 //------------------------------------------------------------------
318 //------------------------------------------------------------------
320 RegisterPlugin (const ConstString &name,
321 const char *description,
322 SymbolVendorCreateInstance create_callback);
325 UnregisterPlugin (SymbolVendorCreateInstance create_callback);
327 static SymbolVendorCreateInstance
328 GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
330 static SymbolVendorCreateInstance
331 GetSymbolVendorCreateCallbackForPluginName (const ConstString &name);
333 //------------------------------------------------------------------
335 //------------------------------------------------------------------
337 RegisterPlugin (const ConstString &name,
338 const char *description,
339 UnwindAssemblyCreateInstance create_callback);
342 UnregisterPlugin (UnwindAssemblyCreateInstance create_callback);
344 static UnwindAssemblyCreateInstance
345 GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx);
347 static UnwindAssemblyCreateInstance
348 GetUnwindAssemblyCreateCallbackForPluginName (const ConstString &name);
350 //------------------------------------------------------------------
352 //------------------------------------------------------------------
354 RegisterPlugin (const ConstString &name,
355 const char *description,
356 MemoryHistoryCreateInstance create_callback);
359 UnregisterPlugin (MemoryHistoryCreateInstance create_callback);
361 static MemoryHistoryCreateInstance
362 GetMemoryHistoryCreateCallbackAtIndex (uint32_t idx);
364 static MemoryHistoryCreateInstance
365 GetMemoryHistoryCreateCallbackForPluginName (const ConstString &name);
367 //------------------------------------------------------------------
368 // InstrumentationRuntime
369 //------------------------------------------------------------------
371 RegisterPlugin (const ConstString &name,
372 const char *description,
373 InstrumentationRuntimeCreateInstance create_callback,
374 InstrumentationRuntimeGetType get_type_callback);
377 UnregisterPlugin (InstrumentationRuntimeCreateInstance create_callback);
379 static InstrumentationRuntimeGetType
380 GetInstrumentationRuntimeGetTypeCallbackAtIndex (uint32_t idx);
382 static InstrumentationRuntimeCreateInstance
383 GetInstrumentationRuntimeCreateCallbackAtIndex (uint32_t idx);
385 static InstrumentationRuntimeCreateInstance
386 GetInstrumentationRuntimeCreateCallbackForPluginName (const ConstString &name);
389 //------------------------------------------------------------------
390 // Some plug-ins might register a DebuggerInitializeCallback
391 // callback when registering the plug-in. After a new Debugger
392 // instance is created, this DebuggerInitialize function will get
393 // called. This allows plug-ins to install Properties and do any
394 // other initialization that requires a debugger instance.
395 //------------------------------------------------------------------
397 DebuggerInitialize (Debugger &debugger);
399 static lldb::OptionValuePropertiesSP
400 GetSettingForDynamicLoaderPlugin (Debugger &debugger,
401 const ConstString &setting_name);
404 CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
405 const lldb::OptionValuePropertiesSP &properties_sp,
406 const ConstString &description,
407 bool is_global_property);
409 static lldb::OptionValuePropertiesSP
410 GetSettingForPlatformPlugin (Debugger &debugger,
411 const ConstString &setting_name);
414 CreateSettingForPlatformPlugin (Debugger &debugger,
415 const lldb::OptionValuePropertiesSP &properties_sp,
416 const ConstString &description,
417 bool is_global_property);
419 static lldb::OptionValuePropertiesSP
420 GetSettingForProcessPlugin (Debugger &debugger,
421 const ConstString &setting_name);
424 CreateSettingForProcessPlugin (Debugger &debugger,
425 const lldb::OptionValuePropertiesSP &properties_sp,
426 const ConstString &description,
427 bool is_global_property);
432 } // namespace lldb_private
434 #endif // liblldb_PluginManager_h_