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 44 namespace lldb_private { 45 class CommandInterpreter; 46 class Debugger; 47 class StringList; 48 49 class PluginManager { 50 public: 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 bool IsRegisteredObjectFilePluginName(llvm::StringRef name); 182 183 static ObjectFileCreateInstance 184 GetObjectFileCreateCallbackAtIndex(uint32_t idx); 185 186 static ObjectFileCreateMemoryInstance 187 GetObjectFileCreateMemoryCallbackAtIndex(uint32_t idx); 188 189 static ObjectFileGetModuleSpecifications 190 GetObjectFileGetModuleSpecificationsCallbackAtIndex(uint32_t idx); 191 192 static ObjectFileCreateMemoryInstance 193 GetObjectFileCreateMemoryCallbackForPluginName(llvm::StringRef name); 194 195 static Status SaveCore(const lldb::ProcessSP &process_sp, 196 const lldb_private::SaveCoreOptions &core_options); 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