1//===-- PluginManager.h -----------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_CORE_PLUGINMANAGER_H
10#define LLDB_CORE_PLUGINMANAGER_H
11
12#include "lldb/Core/Architecture.h"
13#include "lldb/Symbol/TypeSystem.h"
14#include "lldb/Utility/CompletionRequest.h"
15#include "lldb/Utility/FileSpec.h"
16#include "lldb/Utility/Status.h"
17#include "lldb/lldb-enumerations.h"
18#include "lldb/lldb-forward.h"
19#include "lldb/lldb-private-interfaces.h"
20#include "llvm/ADT/StringRef.h"
21
22#include <cstddef>
23#include <cstdint>
24
25#define LLDB_PLUGIN_DEFINE_ADV(ClassName, PluginName) \
26 namespace lldb_private { \
27 void lldb_initialize_##PluginName() { ClassName::Initialize(); } \
28 void lldb_terminate_##PluginName() { ClassName::Terminate(); } \
29 }
30
31#define LLDB_PLUGIN_DEFINE(PluginName) \
32 LLDB_PLUGIN_DEFINE_ADV(PluginName, PluginName)
33
34// FIXME: Generate me with CMake
35#define LLDB_PLUGIN_DECLARE(PluginName) \
36 namespace lldb_private { \
37 extern void lldb_initialize_##PluginName(); \
38 extern void lldb_terminate_##PluginName(); \
39 }
40
41#define LLDB_PLUGIN_INITIALIZE(PluginName) lldb_initialize_##PluginName()
42#define LLDB_PLUGIN_TERMINATE(PluginName) lldb_terminate_##PluginName()
43
44namespace lldb_private {
45class CommandInterpreter;
46class Debugger;
47class StringList;
48
49class PluginManager {
50public:
51 static void Initialize();
52
53 static void Terminate();
54
55 // ABI
56 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
57 ABICreateInstance create_callback);
58
59 static bool UnregisterPlugin(ABICreateInstance create_callback);
60
61 static ABICreateInstance GetABICreateCallbackAtIndex(uint32_t idx);
62
63 // Architecture
64 static void RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
65 ArchitectureCreateInstance create_callback);
66
67 static void UnregisterPlugin(ArchitectureCreateInstance create_callback);
68
69 static std::unique_ptr<Architecture>
70 CreateArchitectureInstance(const ArchSpec &arch);
71
72 // Disassembler
73 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
74 DisassemblerCreateInstance create_callback);
75
76 static bool UnregisterPlugin(DisassemblerCreateInstance create_callback);
77
78 static DisassemblerCreateInstance
79 GetDisassemblerCreateCallbackAtIndex(uint32_t idx);
80
81 static DisassemblerCreateInstance
82 GetDisassemblerCreateCallbackForPluginName(llvm::StringRef name);
83
84 // DynamicLoader
85 static bool
86 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
87 DynamicLoaderCreateInstance create_callback,
88 DebuggerInitializeCallback debugger_init_callback = nullptr);
89
90 static bool UnregisterPlugin(DynamicLoaderCreateInstance create_callback);
91
92 static DynamicLoaderCreateInstance
93 GetDynamicLoaderCreateCallbackAtIndex(uint32_t idx);
94
95 static DynamicLoaderCreateInstance
96 GetDynamicLoaderCreateCallbackForPluginName(llvm::StringRef name);
97
98 // JITLoader
99 static bool
100 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
101 JITLoaderCreateInstance create_callback,
102 DebuggerInitializeCallback debugger_init_callback = nullptr);
103
104 static bool UnregisterPlugin(JITLoaderCreateInstance create_callback);
105
106 static JITLoaderCreateInstance
107 GetJITLoaderCreateCallbackAtIndex(uint32_t idx);
108
109 // EmulateInstruction
110 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
111 EmulateInstructionCreateInstance create_callback);
112
113 static bool
114 UnregisterPlugin(EmulateInstructionCreateInstance create_callback);
115
116 static EmulateInstructionCreateInstance
117 GetEmulateInstructionCreateCallbackAtIndex(uint32_t idx);
118
119 static EmulateInstructionCreateInstance
120 GetEmulateInstructionCreateCallbackForPluginName(llvm::StringRef name);
121
122 // OperatingSystem
123 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
124 OperatingSystemCreateInstance create_callback,
125 DebuggerInitializeCallback debugger_init_callback);
126
127 static bool UnregisterPlugin(OperatingSystemCreateInstance create_callback);
128
129 static OperatingSystemCreateInstance
130 GetOperatingSystemCreateCallbackAtIndex(uint32_t idx);
131
132 static OperatingSystemCreateInstance
133 GetOperatingSystemCreateCallbackForPluginName(llvm::StringRef name);
134
135 // Language
136 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
137 LanguageCreateInstance create_callback);
138
139 static bool UnregisterPlugin(LanguageCreateInstance create_callback);
140
141 static LanguageCreateInstance GetLanguageCreateCallbackAtIndex(uint32_t idx);
142
143 // LanguageRuntime
144 static bool RegisterPlugin(
145 llvm::StringRef name, llvm::StringRef description,
146 LanguageRuntimeCreateInstance create_callback,
147 LanguageRuntimeGetCommandObject command_callback = nullptr,
148 LanguageRuntimeGetExceptionPrecondition precondition_callback = nullptr);
149
150 static bool UnregisterPlugin(LanguageRuntimeCreateInstance create_callback);
151
152 static LanguageRuntimeCreateInstance
153 GetLanguageRuntimeCreateCallbackAtIndex(uint32_t idx);
154
155 static LanguageRuntimeGetCommandObject
156 GetLanguageRuntimeGetCommandObjectAtIndex(uint32_t idx);
157
158 static LanguageRuntimeGetExceptionPrecondition
159 GetLanguageRuntimeGetExceptionPreconditionAtIndex(uint32_t idx);
160
161 // SystemRuntime
162 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
163 SystemRuntimeCreateInstance create_callback);
164
165 static bool UnregisterPlugin(SystemRuntimeCreateInstance create_callback);
166
167 static SystemRuntimeCreateInstance
168 GetSystemRuntimeCreateCallbackAtIndex(uint32_t idx);
169
170 // ObjectFile
171 static bool
172 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
173 ObjectFileCreateInstance create_callback,
174 ObjectFileCreateMemoryInstance create_memory_callback,
175 ObjectFileGetModuleSpecifications get_module_specifications,
176 ObjectFileSaveCore save_core = nullptr,
177 DebuggerInitializeCallback debugger_init_callback = nullptr);
178
179 static bool UnregisterPlugin(ObjectFileCreateInstance create_callback);
180
181 static ObjectFileCreateInstance
182 GetObjectFileCreateCallbackAtIndex(uint32_t idx);
183
184 static ObjectFileCreateMemoryInstance
185 GetObjectFileCreateMemoryCallbackAtIndex(uint32_t idx);
186
187 static ObjectFileGetModuleSpecifications
188 GetObjectFileGetModuleSpecificationsCallbackAtIndex(uint32_t idx);
189
190 static ObjectFileCreateMemoryInstance
191 GetObjectFileCreateMemoryCallbackForPluginName(llvm::StringRef name);
192
193 static Status SaveCore(const lldb::ProcessSP &process_sp,
194 const FileSpec &outfile,
195 lldb::SaveCoreStyle &core_style,
196 llvm::StringRef plugin_name);
197
198 // ObjectContainer
199 static bool RegisterPlugin(
200 llvm::StringRef name, llvm::StringRef description,
201 ObjectContainerCreateInstance create_callback,
202 ObjectFileGetModuleSpecifications get_module_specifications,
203 ObjectContainerCreateMemoryInstance create_memory_callback = nullptr);
204
205 static bool UnregisterPlugin(ObjectContainerCreateInstance create_callback);
206
207 static ObjectContainerCreateInstance
208 GetObjectContainerCreateCallbackAtIndex(uint32_t idx);
209
210 static ObjectContainerCreateMemoryInstance
211 GetObjectContainerCreateMemoryCallbackAtIndex(uint32_t idx);
212
213 static ObjectFileGetModuleSpecifications
214 GetObjectContainerGetModuleSpecificationsCallbackAtIndex(uint32_t idx);
215
216 // Platform
217 static bool
218 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
219 PlatformCreateInstance create_callback,
220 DebuggerInitializeCallback debugger_init_callback = nullptr);
221
222 static bool UnregisterPlugin(PlatformCreateInstance create_callback);
223
224 static PlatformCreateInstance GetPlatformCreateCallbackAtIndex(uint32_t idx);
225
226 static PlatformCreateInstance
227 GetPlatformCreateCallbackForPluginName(llvm::StringRef name);
228
229 static llvm::StringRef GetPlatformPluginNameAtIndex(uint32_t idx);
230
231 static llvm::StringRef GetPlatformPluginDescriptionAtIndex(uint32_t idx);
232
233 static void AutoCompletePlatformName(llvm::StringRef partial_name,
234 CompletionRequest &request);
235 // Process
236 static bool
237 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
238 ProcessCreateInstance create_callback,
239 DebuggerInitializeCallback debugger_init_callback = nullptr);
240
241 static bool UnregisterPlugin(ProcessCreateInstance create_callback);
242
243 static ProcessCreateInstance GetProcessCreateCallbackAtIndex(uint32_t idx);
244
245 static ProcessCreateInstance
246 GetProcessCreateCallbackForPluginName(llvm::StringRef name);
247
248 static llvm::StringRef GetProcessPluginNameAtIndex(uint32_t idx);
249
250 static llvm::StringRef GetProcessPluginDescriptionAtIndex(uint32_t idx);
251
252 static void AutoCompleteProcessName(llvm::StringRef partial_name,
253 CompletionRequest &request);
254
255 // Register Type Provider
256 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
257 RegisterTypeBuilderCreateInstance create_callback);
258
259 static bool
260 UnregisterPlugin(RegisterTypeBuilderCreateInstance create_callback);
261
262 static lldb::RegisterTypeBuilderSP GetRegisterTypeBuilder(Target &target);
263
264 // ScriptInterpreter
265 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
266 lldb::ScriptLanguage script_lang,
267 ScriptInterpreterCreateInstance create_callback);
268
269 static bool UnregisterPlugin(ScriptInterpreterCreateInstance create_callback);
270
271 static ScriptInterpreterCreateInstance
272 GetScriptInterpreterCreateCallbackAtIndex(uint32_t idx);
273
274 static lldb::ScriptInterpreterSP
275 GetScriptInterpreterForLanguage(lldb::ScriptLanguage script_lang,
276 Debugger &debugger);
277
278 // StructuredDataPlugin
279
280 /// Register a StructuredDataPlugin class along with optional
281 /// callbacks for debugger initialization and Process launch info
282 /// filtering and manipulation.
283 ///
284 /// \param[in] name
285 /// The name of the plugin.
286 ///
287 /// \param[in] description
288 /// A description string for the plugin.
289 ///
290 /// \param[in] create_callback
291 /// The callback that will be invoked to create an instance of
292 /// the callback. This may not be nullptr.
293 ///
294 /// \param[in] debugger_init_callback
295 /// An optional callback that will be made when a Debugger
296 /// instance is initialized.
297 ///
298 /// \param[in] filter_callback
299 /// An optional callback that will be invoked before LLDB
300 /// launches a process for debugging. The callback must
301 /// do the following:
302 /// 1. Only do something if the plugin's behavior is enabled.
303 /// 2. Only make changes for processes that are relevant to the
304 /// plugin. The callback gets a pointer to the Target, which
305 /// can be inspected as needed. The ProcessLaunchInfo is
306 /// provided in read-write mode, and may be modified by the
307 /// plugin if, for instance, additional environment variables
308 /// are needed to support the feature when enabled.
309 ///
310 /// \return
311 /// Returns true upon success; otherwise, false.
312 static bool
313 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
314 StructuredDataPluginCreateInstance create_callback,
315 DebuggerInitializeCallback debugger_init_callback = nullptr,
316 StructuredDataFilterLaunchInfo filter_callback = nullptr);
317
318 static bool
319 UnregisterPlugin(StructuredDataPluginCreateInstance create_callback);
320
321 static StructuredDataPluginCreateInstance
322 GetStructuredDataPluginCreateCallbackAtIndex(uint32_t idx);
323
324 static StructuredDataFilterLaunchInfo
325 GetStructuredDataFilterCallbackAtIndex(uint32_t idx,
326 bool &iteration_complete);
327
328 // SymbolFile
329 static bool
330 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
331 SymbolFileCreateInstance create_callback,
332 DebuggerInitializeCallback debugger_init_callback = nullptr);
333
334 static bool UnregisterPlugin(SymbolFileCreateInstance create_callback);
335
336 static SymbolFileCreateInstance
337 GetSymbolFileCreateCallbackAtIndex(uint32_t idx);
338
339 // SymbolVendor
340 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
341 SymbolVendorCreateInstance create_callback);
342
343 static bool UnregisterPlugin(SymbolVendorCreateInstance create_callback);
344
345 static SymbolVendorCreateInstance
346 GetSymbolVendorCreateCallbackAtIndex(uint32_t idx);
347
348 // SymbolLocator
349 static bool RegisterPlugin(
350 llvm::StringRef name, llvm::StringRef description,
351 SymbolLocatorCreateInstance create_callback,
352 SymbolLocatorLocateExecutableObjectFile locate_executable_object_file =
353 nullptr,
354 SymbolLocatorLocateExecutableSymbolFile locate_executable_symbol_file =
355 nullptr,
356 SymbolLocatorDownloadObjectAndSymbolFile download_object_symbol_file =
357 nullptr,
358 SymbolLocatorFindSymbolFileInBundle find_symbol_file_in_bundle = nullptr,
359 DebuggerInitializeCallback debugger_init_callback = nullptr);
360
361 static bool UnregisterPlugin(SymbolLocatorCreateInstance create_callback);
362
363 static SymbolLocatorCreateInstance
364 GetSymbolLocatorCreateCallbackAtIndex(uint32_t idx);
365
366 static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec);
367
368 static FileSpec
369 LocateExecutableSymbolFile(const ModuleSpec &module_spec,
370 const FileSpecList &default_search_paths);
371
372 static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec,
373 Status &error,
374 bool force_lookup = true,
375 bool copy_executable = true);
376
377 static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec,
378 const UUID *uuid,
379 const ArchSpec *arch);
380
381 // Trace
382 static bool RegisterPlugin(
383 llvm::StringRef name, llvm::StringRef description,
384 TraceCreateInstanceFromBundle create_callback_from_bundle,
385 TraceCreateInstanceForLiveProcess create_callback_for_live_process,
386 llvm::StringRef schema,
387 DebuggerInitializeCallback debugger_init_callback);
388
389 static bool
390 UnregisterPlugin(TraceCreateInstanceFromBundle create_callback);
391
392 static TraceCreateInstanceFromBundle
393 GetTraceCreateCallback(llvm::StringRef plugin_name);
394
395 static TraceCreateInstanceForLiveProcess
396 GetTraceCreateCallbackForLiveProcess(llvm::StringRef plugin_name);
397
398 /// Get the JSON schema for a trace bundle description file corresponding to
399 /// the given plugin.
400 ///
401 /// \param[in] plugin_name
402 /// The name of the plugin.
403 ///
404 /// \return
405 /// An empty \a StringRef if no plugin was found with that plugin name,
406 /// otherwise the actual schema is returned.
407 static llvm::StringRef GetTraceSchema(llvm::StringRef plugin_name);
408
409 /// Get the JSON schema for a trace bundle description file corresponding to
410 /// the plugin given by its index.
411 ///
412 /// \param[in] index
413 /// The index of the plugin to get the schema of.
414 ///
415 /// \return
416 /// An empty \a StringRef if the index is greater than or equal to the
417 /// number plugins, otherwise the actual schema is returned.
418 static llvm::StringRef GetTraceSchema(size_t index);
419
420 // TraceExporter
421
422 /// \param[in] create_thread_trace_export_command
423 /// This callback is used to create a CommandObject that will be listed
424 /// under "thread trace export". Can be \b null.
425 static bool RegisterPlugin(
426 llvm::StringRef name, llvm::StringRef description,
427 TraceExporterCreateInstance create_callback,
428 ThreadTraceExportCommandCreator create_thread_trace_export_command);
429
430 static TraceExporterCreateInstance
431 GetTraceExporterCreateCallback(llvm::StringRef plugin_name);
432
433 static bool UnregisterPlugin(TraceExporterCreateInstance create_callback);
434
435 static llvm::StringRef GetTraceExporterPluginNameAtIndex(uint32_t index);
436
437 /// Return the callback used to create the CommandObject that will be listed
438 /// under "thread trace export". Can be \b null.
439 static ThreadTraceExportCommandCreator
440 GetThreadTraceExportCommandCreatorAtIndex(uint32_t index);
441
442 // UnwindAssembly
443 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
444 UnwindAssemblyCreateInstance create_callback);
445
446 static bool UnregisterPlugin(UnwindAssemblyCreateInstance create_callback);
447
448 static UnwindAssemblyCreateInstance
449 GetUnwindAssemblyCreateCallbackAtIndex(uint32_t idx);
450
451 // MemoryHistory
452 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
453 MemoryHistoryCreateInstance create_callback);
454
455 static bool UnregisterPlugin(MemoryHistoryCreateInstance create_callback);
456
457 static MemoryHistoryCreateInstance
458 GetMemoryHistoryCreateCallbackAtIndex(uint32_t idx);
459
460 // InstrumentationRuntime
461 static bool
462 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
463 InstrumentationRuntimeCreateInstance create_callback,
464 InstrumentationRuntimeGetType get_type_callback);
465
466 static bool
467 UnregisterPlugin(InstrumentationRuntimeCreateInstance create_callback);
468
469 static InstrumentationRuntimeGetType
470 GetInstrumentationRuntimeGetTypeCallbackAtIndex(uint32_t idx);
471
472 static InstrumentationRuntimeCreateInstance
473 GetInstrumentationRuntimeCreateCallbackAtIndex(uint32_t idx);
474
475 // TypeSystem
476 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
477 TypeSystemCreateInstance create_callback,
478 LanguageSet supported_languages_for_types,
479 LanguageSet supported_languages_for_expressions);
480
481 static bool UnregisterPlugin(TypeSystemCreateInstance create_callback);
482
483 static TypeSystemCreateInstance
484 GetTypeSystemCreateCallbackAtIndex(uint32_t idx);
485
486 static LanguageSet GetAllTypeSystemSupportedLanguagesForTypes();
487
488 static LanguageSet GetAllTypeSystemSupportedLanguagesForExpressions();
489
490 // REPL
491 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
492 REPLCreateInstance create_callback,
493 LanguageSet supported_languages);
494
495 static bool UnregisterPlugin(REPLCreateInstance create_callback);
496
497 static REPLCreateInstance GetREPLCreateCallbackAtIndex(uint32_t idx);
498
499 static LanguageSet GetREPLSupportedLanguagesAtIndex(uint32_t idx);
500
501 static LanguageSet GetREPLAllTypeSystemSupportedLanguages();
502
503 // Some plug-ins might register a DebuggerInitializeCallback callback when
504 // registering the plug-in. After a new Debugger instance is created, this
505 // DebuggerInitialize function will get called. This allows plug-ins to
506 // install Properties and do any other initialization that requires a
507 // debugger instance.
508 static void DebuggerInitialize(Debugger &debugger);
509
510 static lldb::OptionValuePropertiesSP
511 GetSettingForDynamicLoaderPlugin(Debugger &debugger,
512 llvm::StringRef setting_name);
513
514 static bool CreateSettingForDynamicLoaderPlugin(
515 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
516 llvm::StringRef description, bool is_global_property);
517
518 static lldb::OptionValuePropertiesSP
519 GetSettingForPlatformPlugin(Debugger &debugger, llvm::StringRef setting_name);
520
521 static bool CreateSettingForPlatformPlugin(
522 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
523 llvm::StringRef description, bool is_global_property);
524
525 static lldb::OptionValuePropertiesSP
526 GetSettingForProcessPlugin(Debugger &debugger, llvm::StringRef setting_name);
527
528 static bool CreateSettingForProcessPlugin(
529 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
530 llvm::StringRef description, bool is_global_property);
531
532 static lldb::OptionValuePropertiesSP
533 GetSettingForSymbolLocatorPlugin(Debugger &debugger,
534 llvm::StringRef setting_name);
535
536 static bool CreateSettingForSymbolLocatorPlugin(
537 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
538 llvm::StringRef description, bool is_global_property);
539
540 static bool CreateSettingForTracePlugin(
541 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
542 llvm::StringRef description, bool is_global_property);
543
544 static lldb::OptionValuePropertiesSP
545 GetSettingForObjectFilePlugin(Debugger &debugger,
546 llvm::StringRef setting_name);
547
548 static bool CreateSettingForObjectFilePlugin(
549 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
550 llvm::StringRef description, bool is_global_property);
551
552 static lldb::OptionValuePropertiesSP
553 GetSettingForSymbolFilePlugin(Debugger &debugger,
554 llvm::StringRef setting_name);
555
556 static bool CreateSettingForSymbolFilePlugin(
557 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
558 llvm::StringRef description, bool is_global_property);
559
560 static lldb::OptionValuePropertiesSP
561 GetSettingForJITLoaderPlugin(Debugger &debugger,
562 llvm::StringRef setting_name);
563
564 static bool CreateSettingForJITLoaderPlugin(
565 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
566 llvm::StringRef description, bool is_global_property);
567
568 static lldb::OptionValuePropertiesSP
569 GetSettingForOperatingSystemPlugin(Debugger &debugger,
570 llvm::StringRef setting_name);
571
572 static bool CreateSettingForOperatingSystemPlugin(
573 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
574 llvm::StringRef description, bool is_global_property);
575
576 static lldb::OptionValuePropertiesSP
577 GetSettingForStructuredDataPlugin(Debugger &debugger,
578 llvm::StringRef setting_name);
579
580 static bool CreateSettingForStructuredDataPlugin(
581 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
582 llvm::StringRef description, bool is_global_property);
583};
584
585} // namespace lldb_private
586
587#endif // LLDB_CORE_PLUGINMANAGER_H
588

source code of lldb/include/lldb/Core/PluginManager.h