LLDB mainline
PluginManager.h
Go to the documentation of this file.
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
18#include "lldb/Utility/Status.h"
20#include "lldb/lldb-forward.h"
22#include "llvm/ADT/ArrayRef.h"
23#include "llvm/ADT/STLFunctionalExtras.h"
24#include "llvm/ADT/SmallVector.h"
25#include "llvm/ADT/StringRef.h"
26#include "llvm/Support/Error.h"
27#include "llvm/Support/JSON.h"
28
29#include <cstddef>
30#include <cstdint>
31#include <functional>
32#include <variant>
33#include <vector>
34
35// Match the PluginInitCallback and PluginTermCallback signature. The generated
36// initializer always succeeds.
37#define LLDB_PLUGIN_DEFINE_ADV(ClassName, PluginName) \
38 extern "C" { \
39 bool lldb_initialize_##PluginName() { \
40 ClassName::Initialize(); \
41 return true; \
42 } \
43 void lldb_terminate_##PluginName() { ClassName::Terminate(); } \
44 }
45
46#define LLDB_PLUGIN_DEFINE(PluginName) \
47 LLDB_PLUGIN_DEFINE_ADV(PluginName, PluginName)
48
49// FIXME: Generate me with CMake
50#define LLDB_PLUGIN_DECLARE(PluginName) \
51 extern "C" { \
52 extern bool lldb_initialize_##PluginName(); \
53 extern void lldb_terminate_##PluginName(); \
54 }
55
56#define LLDB_PLUGIN_INITIALIZE(PluginName) lldb_initialize_##PluginName()
57#define LLDB_PLUGIN_TERMINATE(PluginName) lldb_terminate_##PluginName()
58
59namespace lldb_private {
60class CommandInterpreter;
61class Debugger;
62class StringList;
63
65 llvm::StringRef name = "";
66 llvm::StringRef description = "";
67 bool enabled = false;
68};
69
70// Define some data structures to describe known plugin "namespaces".
71// The PluginManager is organized into a series of static functions
72// that operate on different types of plugins. For example SystemRuntime
73// and ObjectFile plugins.
74//
75// The namespace name is used a prefix when matching plugin names. For example,
76// if we have an "macosx" plugin in the "system-runtime" namespace then we will
77// match a plugin name pattern against the "system-runtime.macosx" name.
78//
79// The plugin namespace here is used so we can operate on all the plugins
80// of a given type so it is easy to enable or disable them as a group.
81using GetPluginInfo = std::function<llvm::SmallVector<RegisteredPluginInfo>()>;
82using SetPluginEnabledGlobalDomain = std::function<bool(llvm::StringRef, bool)>;
83using SetPluginEnabledAllDomains = std::function<llvm::Error(
84 llvm::StringRef, bool, Debugger &, lldb::PluginDomainKind)>;
86public:
87 static constexpr uint8_t kAllDomains = lldb::ePluginDomainKindGlobal |
90
91 /// Plugin that only supports enable/disable in the global domain
95 supported_domains(lldb::ePluginDomainKindGlobal),
96 set_enabled_fn(set_enabled) {}
97
98 /// Plugin that supports enable/disable in all domains.
103
104 std::optional<SetPluginEnabledGlobalDomain> GetSetEnabledGlobalFn() const {
106 return std::get<SetPluginEnabledGlobalDomain>(set_enabled_fn);
107 return std::nullopt;
108 }
109
110 std::optional<SetPluginEnabledAllDomains> GetSetEnabledAllDomainsFn() const {
112 return std::get<SetPluginEnabledAllDomains>(set_enabled_fn);
113 return std::nullopt;
114 }
115
117 assert(llvm::has_single_bit(static_cast<uint8_t>(domain)));
118 return supported_domains & domain;
119 }
120
122 assert(llvm::has_single_bit(static_cast<uint8_t>(domain)));
123 return supported_domains == domain;
124 }
125
126 llvm::StringRef name;
128
129private:
131 std::variant<SetPluginEnabledGlobalDomain, SetPluginEnabledAllDomains>
133};
134
139
145
152
158
163
168
174
175template <typename Callback> struct PluginInstance {
176 typedef Callback CallbackType;
177
178 PluginInstance() = default;
185
186 llvm::StringRef name;
187 llvm::StringRef description;
191};
192
208
210public:
211 static void Initialize();
212
213 static void Terminate();
214
215 // Support for enabling and disabling plugins.
216
217 // Return the plugins that can be enabled or disabled by the user.
218 static llvm::ArrayRef<PluginNamespace> GetPluginNamespaces();
219
220 // Generate a json object that describes the plugins that are available.
221 // This is a json representation of the plugin info returned by
222 // GetPluginNamespaces().
223 //
224 // {
225 // <plugin-namespace>: [
226 // {
227 // "enabled": <bool>,
228 // "name": <plugin-name>,
229 // },
230 // ...
231 // ],
232 // ...
233 // }
234 //
235 // If pattern is given it will be used to filter the plugins that are
236 // are returned. The pattern filters the plugin names using the
237 // PluginManager::MatchPluginName() function.
238 static llvm::json::Object GetJSON(llvm::StringRef pattern = "");
239
240 // Return true if the pattern matches the plugin name.
241 //
242 // The pattern matches the name if it is exactly equal to the namespace name
243 // or if it is equal to the qualified name, which is the namespace name
244 // followed by a dot and the plugin name (e.g. "system-runtime.foo").
245 //
246 // An empty pattern matches all plugins.
247 static bool MatchPluginName(llvm::StringRef pattern,
248 const PluginNamespace &plugin_ns,
250
251 // ABI
252 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
253 ABICreateInstance create_callback);
254
255 static bool UnregisterPlugin(ABICreateInstance create_callback);
256
257 static llvm::SmallVector<ABICreateInstance> GetABICreateCallbacks();
258
259 // Architecture
260 static void RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
261 ArchitectureCreateInstance create_callback);
262
263 static void UnregisterPlugin(ArchitectureCreateInstance create_callback);
264
265 static std::unique_ptr<Architecture>
267
268 // BugReporter
269 static void RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
270 BugReporterCreateInstance create_callback);
271
272 static void UnregisterPlugin(BugReporterCreateInstance create_callback);
273
274 static std::unique_ptr<BugReporter>
275 CreateBugReporterInstance(llvm::StringRef name = {});
276
277 // Disassembler
278 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
279 DisassemblerCreateInstance create_callback);
280
281 static bool UnregisterPlugin(DisassemblerCreateInstance create_callback);
282
283 static llvm::SmallVector<DisassemblerCreateInstance>
285
287 GetDisassemblerCreateCallbackForPluginName(llvm::StringRef name);
288
289 // DynamicLoader
290 static bool
291 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
292 DynamicLoaderCreateInstance create_callback,
293 DebuggerInitializeCallback debugger_init_callback = nullptr);
294
295 static bool UnregisterPlugin(DynamicLoaderCreateInstance create_callback);
296
297 static llvm::SmallVector<DynamicLoaderCreateInstance>
299
302
303 // JITLoader
304 static bool
305 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
306 JITLoaderCreateInstance create_callback,
307 DebuggerInitializeCallback debugger_init_callback = nullptr);
308
309 static bool UnregisterPlugin(JITLoaderCreateInstance create_callback);
310
311 static llvm::SmallVector<JITLoaderCreateInstance>
313
314 // EmulateInstruction
315 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
316 EmulateInstructionCreateInstance create_callback);
317
318 static bool
320
321 static llvm::SmallVector<EmulateInstructionCreateInstance>
323
326
327 // OperatingSystem
328 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
329 OperatingSystemCreateInstance create_callback,
330 DebuggerInitializeCallback debugger_init_callback);
331
332 static bool UnregisterPlugin(OperatingSystemCreateInstance create_callback);
333
334 static llvm::SmallVector<OperatingSystemCreateInstance>
336
339
340 // Language
341 static bool
342 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
343 LanguageCreateInstance create_callback,
344 DebuggerInitializeCallback debugger_init_callback = nullptr);
345
346 static bool UnregisterPlugin(LanguageCreateInstance create_callback);
347
348 static llvm::SmallVector<LanguageCreateInstance> GetLanguageCreateCallbacks();
349
350 // LanguageRuntime
351 static bool RegisterPlugin(
352 llvm::StringRef name, llvm::StringRef description,
353 LanguageRuntimeCreateInstance create_callback,
354 LanguageRuntimeGetCommandObject command_callback = nullptr,
355 LanguageRuntimeGetExceptionPrecondition precondition_callback = nullptr);
356
357 static bool UnregisterPlugin(LanguageRuntimeCreateInstance create_callback);
358
359 static llvm::SmallVector<LanguageRuntimeCallbacks>
361
362 // SystemRuntime
363 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
364 SystemRuntimeCreateInstance create_callback);
365
366 static bool UnregisterPlugin(SystemRuntimeCreateInstance create_callback);
367
368 static llvm::SmallVector<SystemRuntimeCreateInstance>
370
371 // ObjectFile
372 static bool
373 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
374 ObjectFileCreateInstance create_callback,
375 ObjectFileCreateMemoryInstance create_memory_callback,
376 ObjectFileGetModuleSpecifications get_module_specifications,
377 ObjectFileSaveCore save_core = nullptr,
378 DebuggerInitializeCallback debugger_init_callback = nullptr);
379
380 static bool UnregisterPlugin(ObjectFileCreateInstance create_callback);
381
382 static bool IsRegisteredObjectFilePluginName(llvm::StringRef name);
383
384 static llvm::SmallVector<ObjectFileCallbacks> GetObjectFileCallbacks();
385
388
389 static Status SaveCore(lldb_private::SaveCoreOptions &core_options);
390
391 static llvm::SmallVector<llvm::StringRef> GetSaveCorePluginNames();
392
393 // ObjectContainer
394 static bool RegisterPlugin(
395 llvm::StringRef name, llvm::StringRef description,
396 ObjectContainerCreateInstance create_callback,
397 ObjectFileGetModuleSpecifications get_module_specifications,
398 ObjectContainerCreateMemoryInstance create_memory_callback = nullptr);
399
400 static bool UnregisterPlugin(ObjectContainerCreateInstance create_callback);
401
402 static llvm::SmallVector<ObjectContainerCallbacks>
404
405 // Platform
406 static bool
407 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
408 PlatformCreateInstance create_callback,
409 DebuggerInitializeCallback debugger_init_callback = nullptr);
410
411 static bool UnregisterPlugin(PlatformCreateInstance create_callback);
412
413 static llvm::SmallVector<PlatformCreateInstance> GetPlatformCreateCallbacks();
414
416 GetPlatformCreateCallbackForPluginName(llvm::StringRef name);
417
418 static llvm::StringRef GetPlatformPluginNameAtIndex(uint32_t idx);
419
420 static llvm::StringRef GetPlatformPluginDescriptionAtIndex(uint32_t idx);
421
422 static void AutoCompletePlatformName(llvm::StringRef partial_name,
423 CompletionRequest &request);
424 // Process
425 static bool
426 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
427 ProcessCreateInstance create_callback,
428 DebuggerInitializeCallback debugger_init_callback = nullptr);
429
430 static bool UnregisterPlugin(ProcessCreateInstance create_callback);
431
432 static llvm::SmallVector<ProcessCreateInstance> GetProcessCreateCallbacks();
433
435 GetProcessCreateCallbackForPluginName(llvm::StringRef name);
436
437 static llvm::StringRef GetProcessPluginNameAtIndex(uint32_t idx);
438
439 static llvm::StringRef GetProcessPluginDescriptionAtIndex(uint32_t idx);
440
441 static void AutoCompleteProcessName(llvm::StringRef partial_name,
442 CompletionRequest &request);
443
444 // Protocol
445 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
446 ProtocolServerCreateInstance create_callback);
447
448 static bool UnregisterPlugin(ProtocolServerCreateInstance create_callback);
449
450 static llvm::StringRef GetProtocolServerPluginNameAtIndex(uint32_t idx);
451
453 GetProtocolCreateCallbackForPluginName(llvm::StringRef name);
454
455 // Register Type Provider
456 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
457 RegisterTypeBuilderCreateInstance create_callback);
458
459 static bool
461
463
464 // ScriptInterpreter
465 static bool
466 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
467 lldb::ScriptLanguage script_lang,
468 ScriptInterpreterCreateInstance create_callback,
469 ScriptInterpreterGetPath get_path_callback = nullptr);
470
471 static bool UnregisterPlugin(ScriptInterpreterCreateInstance create_callback);
472
473 static llvm::SmallVector<ScriptInterpreterCreateInstance>
475
478 Debugger &debugger);
479
480 static FileSpec
482
483 // SyntheticFrameProvider
484 static bool
485 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
486 SyntheticFrameProviderCreateInstance create_native_callback,
487 ScriptedFrameProviderCreateInstance create_scripted_callback);
488
489 static bool
491
492 static bool
494
497
498 static llvm::SmallVector<ScriptedFrameProviderCreateInstance>
500
501 // StructuredDataPlugin
502
503 /// Register a StructuredDataPlugin class along with optional
504 /// callbacks for debugger initialization and Process launch info
505 /// filtering and manipulation.
506 ///
507 /// \param[in] name
508 /// The name of the plugin.
509 ///
510 /// \param[in] description
511 /// A description string for the plugin.
512 ///
513 /// \param[in] create_callback
514 /// The callback that will be invoked to create an instance of
515 /// the callback. This may not be nullptr.
516 ///
517 /// \param[in] debugger_init_callback
518 /// An optional callback that will be made when a Debugger
519 /// instance is initialized.
520 ///
521 /// \param[in] filter_callback
522 /// An optional callback that will be invoked before LLDB
523 /// launches a process for debugging. The callback must
524 /// do the following:
525 /// 1. Only do something if the plugin's behavior is enabled.
526 /// 2. Only make changes for processes that are relevant to the
527 /// plugin. The callback gets a pointer to the Target, which
528 /// can be inspected as needed. The ProcessLaunchInfo is
529 /// provided in read-write mode, and may be modified by the
530 /// plugin if, for instance, additional environment variables
531 /// are needed to support the feature when enabled.
532 ///
533 /// \return
534 /// Returns true upon success; otherwise, false.
535 static bool
536 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
538 DebuggerInitializeCallback debugger_init_callback = nullptr,
539 StructuredDataFilterLaunchInfo filter_callback = nullptr);
540
541 static bool
543
544 static llvm::SmallVector<StructuredDataPluginCallbacks>
546
547 // SymbolFile
548 static bool
549 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
550 SymbolFileCreateInstance create_callback,
551 DebuggerInitializeCallback debugger_init_callback = nullptr);
552
553 static bool UnregisterPlugin(SymbolFileCreateInstance create_callback);
554
555 static llvm::SmallVector<SymbolFileCreateInstance>
557
558 // SymbolVendor
559 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
560 SymbolVendorCreateInstance create_callback);
561
562 static bool UnregisterPlugin(SymbolVendorCreateInstance create_callback);
563
564 static llvm::SmallVector<SymbolVendorCreateInstance>
566
567 // SymbolLocator
568 static bool RegisterPlugin(
569 llvm::StringRef name, llvm::StringRef description,
570 SymbolLocatorCreateInstance create_callback,
571 SymbolLocatorLocateExecutableObjectFile locate_executable_object_file =
572 nullptr,
573 SymbolLocatorLocateExecutableSymbolFile locate_executable_symbol_file =
574 nullptr,
575 SymbolLocatorDownloadObjectAndSymbolFile download_object_symbol_file =
576 nullptr,
577 SymbolLocatorFindSymbolFileInBundle find_symbol_file_in_bundle = nullptr,
578 DebuggerInitializeCallback debugger_init_callback = nullptr);
579
580 static bool UnregisterPlugin(SymbolLocatorCreateInstance create_callback);
581
582 static llvm::SmallVector<SymbolLocatorCreateInstance>
584
585 static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec,
586 StatisticsMap &map);
587
588 static FileSpec
589 LocateExecutableSymbolFile(const ModuleSpec &module_spec,
590 const FileSpecList &default_search_paths,
591 StatisticsMap &map);
592
593 static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec,
594 Status &error,
595 bool force_lookup = true,
596 bool copy_executable = true);
597
598 static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec,
599 const UUID *uuid,
600 const ArchSpec *arch);
601
602 // Trace
603 static bool RegisterPlugin(
604 llvm::StringRef name, llvm::StringRef description,
605 TraceCreateInstanceFromBundle create_callback_from_bundle,
606 TraceCreateInstanceForLiveProcess create_callback_for_live_process,
607 llvm::StringRef schema,
608 DebuggerInitializeCallback debugger_init_callback);
609
610 static bool UnregisterPlugin(TraceCreateInstanceFromBundle create_callback);
611
613 GetTraceCreateCallback(llvm::StringRef plugin_name);
614
616 GetTraceCreateCallbackForLiveProcess(llvm::StringRef plugin_name);
617
618 /// Get the JSON schema for a trace bundle description file corresponding to
619 /// the given plugin.
620 ///
621 /// \param[in] plugin_name
622 /// The name of the plugin.
623 ///
624 /// \return
625 /// An empty \a StringRef if no plugin was found with that plugin name,
626 /// otherwise the actual schema is returned.
627 static llvm::StringRef GetTraceSchema(llvm::StringRef plugin_name);
628
629 /// Get the JSON schema for a trace bundle description file corresponding to
630 /// the plugin given by its index.
631 ///
632 /// \param[in] index
633 /// The index of the plugin to get the schema of.
634 ///
635 /// \return
636 /// An empty \a StringRef if the index is greater than or equal to the
637 /// number plugins, otherwise the actual schema is returned.
638 static llvm::StringRef GetTraceSchema(size_t index);
639
640 // TraceExporter
641
642 /// \param[in] create_thread_trace_export_command
643 /// This callback is used to create a CommandObject that will be listed
644 /// under "thread trace export". Can be \b null.
645 static bool RegisterPlugin(
646 llvm::StringRef name, llvm::StringRef description,
647 TraceExporterCreateInstance create_callback,
648 ThreadTraceExportCommandCreator create_thread_trace_export_command);
649
651 GetTraceExporterCreateCallback(llvm::StringRef plugin_name);
652
653 static bool UnregisterPlugin(TraceExporterCreateInstance create_callback);
654
655 static llvm::SmallVector<TraceExporterCallbacks> GetTraceExporterCallbacks();
656
657 // UnwindAssembly
658 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
659 UnwindAssemblyCreateInstance create_callback);
660
661 static bool UnregisterPlugin(UnwindAssemblyCreateInstance create_callback);
662
663 static llvm::SmallVector<UnwindAssemblyCreateInstance>
665
666 // MemoryHistory
667 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
668 MemoryHistoryCreateInstance create_callback);
669
670 static bool UnregisterPlugin(MemoryHistoryCreateInstance create_callback);
671
672 static llvm::SmallVector<MemoryHistoryCreateInstance>
674
675 // InstrumentationRuntime
676 static bool
677 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
679 InstrumentationRuntimeGetType get_type_callback);
680
681 static bool
683
684 static llvm::SmallVector<InstrumentationRuntimeCallbacks>
685 GetInstrumentationRuntimeCallbacks(bool enabled_only = true);
686
687 // TypeSystem
688 static bool
689 RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
690 TypeSystemCreateInstance create_callback,
691 LanguageSet supported_languages_for_types,
692 LanguageSet supported_languages_for_expressions,
693 DebuggerInitializeCallback debugger_init_callback = nullptr);
694
695 static bool UnregisterPlugin(TypeSystemCreateInstance create_callback);
696
697 static llvm::SmallVector<TypeSystemCreateInstance>
699
701
703
704 // Scripted Interface
705 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
706 ScriptedInterfaceCreateInstance create_callback,
707 lldb::ScriptedExtension extension,
708 lldb::ScriptLanguage language,
710
711 static bool UnregisterPlugin(ScriptedInterfaceCreateInstance create_callback);
712
713 static size_t GetNumScriptedInterfaces();
714
715 static llvm::StringRef GetScriptedInterfaceNameAtIndex(uint32_t idx);
716
717 static llvm::StringRef GetScriptedInterfaceDescriptionAtIndex(uint32_t idx);
718
721
723
726
727 /// Invoke \p callback once per registered scripted extension, passing the
728 /// first interface registered for it. An extension backed by several
729 /// languages is only reported once. When \p language is not
730 /// `eScriptLanguageUnknown`, only interfaces for that language count.
731 static void ForEachScriptedExtension(
732 llvm::function_ref<void(const ScriptedInterfaceInstance &)> callback,
734
736 llvm::StringRef partial_name, CompletionRequest &request,
738
739 // REPL
740 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
741 REPLCreateInstance create_callback,
742 LanguageSet supported_languages);
743
744 static bool UnregisterPlugin(REPLCreateInstance create_callback);
745
746 static llvm::SmallVector<REPLCallbacks> GetREPLCallbacks();
747
749
750 // Higlhighter
751 static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
752 HighlighterCreateInstance create_callback);
753
754 static bool UnregisterPlugin(HighlighterCreateInstance create_callback);
755
756 static llvm::SmallVector<HighlighterCreateInstance>
758
759 // Some plug-ins might register a DebuggerInitializeCallback callback when
760 // registering the plug-in. After a new Debugger instance is created, this
761 // DebuggerInitialize function will get called. This allows plug-ins to
762 // install Properties and do any other initialization that requires a
763 // debugger instance.
764 static void DebuggerInitialize(Debugger &debugger);
765
768 llvm::StringRef setting_name);
769
771 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
772 llvm::StringRef description, bool is_global_property);
773
775 GetSettingForPlatformPlugin(Debugger &debugger, llvm::StringRef setting_name);
776
778 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
779 llvm::StringRef description, bool is_global_property);
780
782 GetSettingForProcessPlugin(Debugger &debugger, llvm::StringRef setting_name);
783
785 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
786 llvm::StringRef description, bool is_global_property);
787
790 llvm::StringRef setting_name);
791
793 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
794 llvm::StringRef description, bool is_global_property);
795
796 static bool CreateSettingForTracePlugin(
797 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
798 llvm::StringRef description, bool is_global_property);
799
802 llvm::StringRef setting_name);
803
805 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
806 llvm::StringRef description, bool is_global_property);
807
810 llvm::StringRef setting_name);
811
813 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
814 llvm::StringRef description, bool is_global_property);
815
818 llvm::StringRef setting_name);
819
821 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
822 llvm::StringRef description, bool is_global_property);
823
826 llvm::StringRef setting_name);
827
829 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
830 llvm::StringRef description, bool is_global_property);
831
834 llvm::StringRef setting_name);
835
837 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
838 llvm::StringRef description, bool is_global_property);
839
842 llvm::StringRef setting_name);
843
845 Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
846 llvm::StringRef description, bool is_global_property);
847
848 //
849 // Plugin Info+Enable Declarations
850 //
851 static llvm::SmallVector<RegisteredPluginInfo> GetABIPluginInfo();
852 static bool SetABIPluginEnabled(llvm::StringRef name, bool enable);
853
854 static llvm::SmallVector<RegisteredPluginInfo> GetArchitecturePluginInfo();
855 static bool SetArchitecturePluginEnabled(llvm::StringRef name, bool enable);
856
857 static llvm::SmallVector<RegisteredPluginInfo> GetBugReporterPluginInfo();
858 static bool SetBugReporterPluginEnabled(llvm::StringRef name, bool enable);
859
860 static llvm::SmallVector<RegisteredPluginInfo> GetDisassemblerPluginInfo();
861 static bool SetDisassemblerPluginEnabled(llvm::StringRef name, bool enable);
862
863 static llvm::SmallVector<RegisteredPluginInfo> GetDynamicLoaderPluginInfo();
864 static bool SetDynamicLoaderPluginEnabled(llvm::StringRef name, bool enable);
865
866 static llvm::SmallVector<RegisteredPluginInfo>
868 static bool SetEmulateInstructionPluginEnabled(llvm::StringRef name,
869 bool enable);
870
871 static llvm::SmallVector<RegisteredPluginInfo>
873 static llvm::StringRef PluginDomainKindToStr(lldb::PluginDomainKind kind);
874 static llvm::Error
875 SetInstrumentationRuntimePluginEnabled(llvm::StringRef name, bool enable,
876 Debugger &requesting_debugger,
878
879 static llvm::SmallVector<RegisteredPluginInfo> GetJITLoaderPluginInfo();
880 static bool SetJITLoaderPluginEnabled(llvm::StringRef name, bool enable);
881
882 static llvm::SmallVector<RegisteredPluginInfo> GetLanguagePluginInfo();
883 static bool SetLanguagePluginEnabled(llvm::StringRef name, bool enable);
884
885 static llvm::SmallVector<RegisteredPluginInfo> GetLanguageRuntimePluginInfo();
886 static bool SetLanguageRuntimePluginEnabled(llvm::StringRef name,
887 bool enable);
888
889 static llvm::SmallVector<RegisteredPluginInfo> GetMemoryHistoryPluginInfo();
890 static bool SetMemoryHistoryPluginEnabled(llvm::StringRef name, bool enable);
891
892 static llvm::SmallVector<RegisteredPluginInfo> GetObjectContainerPluginInfo();
893 static bool SetObjectContainerPluginEnabled(llvm::StringRef name,
894 bool enable);
895
896 static llvm::SmallVector<RegisteredPluginInfo> GetObjectFilePluginInfo();
897 static bool SetObjectFilePluginEnabled(llvm::StringRef name, bool enable);
898
899 static llvm::SmallVector<RegisteredPluginInfo> GetOperatingSystemPluginInfo();
900 static bool SetOperatingSystemPluginEnabled(llvm::StringRef name,
901 bool enable);
902
903 static llvm::SmallVector<RegisteredPluginInfo> GetPlatformPluginInfo();
904 static bool SetPlatformPluginEnabled(llvm::StringRef name, bool enable);
905
906 static llvm::SmallVector<RegisteredPluginInfo> GetProcessPluginInfo();
907 static bool SetProcessPluginEnabled(llvm::StringRef name, bool enable);
908
909 static llvm::SmallVector<RegisteredPluginInfo> GetREPLPluginInfo();
910 static bool SetREPLPluginEnabled(llvm::StringRef name, bool enable);
911
912 static llvm::SmallVector<RegisteredPluginInfo>
914 static bool SetRegisterTypeBuilderPluginEnabled(llvm::StringRef name,
915 bool enable);
916
917 static llvm::SmallVector<RegisteredPluginInfo>
919 static bool SetScriptInterpreterPluginEnabled(llvm::StringRef name,
920 bool enable);
921
922 static llvm::SmallVector<RegisteredPluginInfo>
924 static bool SetScriptedInterfacePluginEnabled(llvm::StringRef name,
925 bool enable);
926
927 static llvm::SmallVector<RegisteredPluginInfo> GetStructuredDataPluginInfo();
928 static bool SetStructuredDataPluginEnabled(llvm::StringRef name, bool enable);
929
930 static llvm::SmallVector<RegisteredPluginInfo> GetSymbolFilePluginInfo();
931 static bool SetSymbolFilePluginEnabled(llvm::StringRef name, bool enable);
932
933 static llvm::SmallVector<RegisteredPluginInfo> GetSymbolLocatorPluginInfo();
934 static bool SetSymbolLocatorPluginEnabled(llvm::StringRef name, bool enable);
935
936 static llvm::SmallVector<RegisteredPluginInfo> GetSymbolVendorPluginInfo();
937 static bool SetSymbolVendorPluginEnabled(llvm::StringRef name, bool enable);
938
939 static llvm::SmallVector<RegisteredPluginInfo> GetSystemRuntimePluginInfo();
940 static bool SetSystemRuntimePluginEnabled(llvm::StringRef name, bool enable);
941
942 static llvm::SmallVector<RegisteredPluginInfo> GetTracePluginInfo();
943 static bool SetTracePluginEnabled(llvm::StringRef name, bool enable);
944
945 static llvm::SmallVector<RegisteredPluginInfo> GetTraceExporterPluginInfo();
946 static bool SetTraceExporterPluginEnabled(llvm::StringRef name, bool enable);
947
948 static llvm::SmallVector<RegisteredPluginInfo> GetTypeSystemPluginInfo();
949 static bool SetTypeSystemPluginEnabled(llvm::StringRef name, bool enable);
950
951 static llvm::SmallVector<RegisteredPluginInfo> GetUnwindAssemblyPluginInfo();
952 static bool SetUnwindAssemblyPluginEnabled(llvm::StringRef name, bool enable);
953
954 static void AutoCompletePluginName(llvm::StringRef partial_name,
955 CompletionRequest &request);
956};
957
958} // namespace lldb_private
959
960#endif // LLDB_CORE_PLUGINMANAGER_H
static llvm::raw_ostream & error(Stream &strm)
An architecture specification class.
Definition ArchSpec.h:32
"lldb/Utility/ArgCompletionRequest.h"
A class to manage flag bits.
Definition Debugger.h:103
A file collection class.
A file utility class.
Definition FileSpec.h:56
static bool SetArchitecturePluginEnabled(llvm::StringRef name, bool enable)
static llvm::StringRef GetPlatformPluginDescriptionAtIndex(uint32_t idx)
static bool SetPlatformPluginEnabled(llvm::StringRef name, bool enable)
static bool SetScriptInterpreterPluginEnabled(llvm::StringRef name, bool enable)
static bool MatchPluginName(llvm::StringRef pattern, const PluginNamespace &plugin_ns, const RegisteredPluginInfo &plugin)
static lldb::OptionValuePropertiesSP GetSettingForStructuredDataPlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool SetMemoryHistoryPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetSystemRuntimePluginInfo()
static llvm::SmallVector< RegisteredPluginInfo > GetTypeSystemPluginInfo()
static void AutoCompleteScriptedExtension(llvm::StringRef partial_name, CompletionRequest &request, lldb::ScriptLanguage language=lldb::eScriptLanguageUnknown)
static bool CreateSettingForJITLoaderPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static bool SetRegisterTypeBuilderPluginEnabled(llvm::StringRef name, bool enable)
static llvm::StringRef PluginDomainKindToStr(lldb::PluginDomainKind kind)
static bool SetTraceExporterPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetArchitecturePluginInfo()
static void ForEachScriptedExtension(llvm::function_ref< void(const ScriptedInterfaceInstance &)> callback, lldb::ScriptLanguage language=lldb::eScriptLanguageUnknown)
Invoke callback once per registered scripted extension, passing the first interface registered for it...
static LanguageSet GetAllTypeSystemSupportedLanguagesForExpressions()
static bool CreateSettingForOperatingSystemPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static llvm::SmallVector< UnwindAssemblyCreateInstance > GetUnwindAssemblyCreateCallbacks()
static lldb::OptionValuePropertiesSP GetSettingForObjectFilePlugin(Debugger &debugger, llvm::StringRef setting_name)
static llvm::SmallVector< RegisteredPluginInfo > GetEmulateInstructionPluginInfo()
static void AutoCompletePlatformName(llvm::StringRef partial_name, CompletionRequest &request)
static TraceExporterCreateInstance GetTraceExporterCreateCallback(llvm::StringRef plugin_name)
static bool SetDynamicLoaderPluginEnabled(llvm::StringRef name, bool enable)
static llvm::json::Object GetJSON(llvm::StringRef pattern="")
static bool CreateSettingForObjectFilePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static bool SetScriptedInterfacePluginEnabled(llvm::StringRef name, bool enable)
static bool SetOperatingSystemPluginEnabled(llvm::StringRef name, bool enable)
static lldb::ScriptInterpreterSP GetScriptInterpreterForLanguage(lldb::ScriptLanguage script_lang, Debugger &debugger)
static llvm::SmallVector< ABICreateInstance > GetABICreateCallbacks()
static llvm::SmallVector< InstrumentationRuntimeCallbacks > GetInstrumentationRuntimeCallbacks(bool enabled_only=true)
static void AutoCompleteProcessName(llvm::StringRef partial_name, CompletionRequest &request)
static llvm::SmallVector< RegisteredPluginInfo > GetScriptInterpreterPluginInfo()
static bool SetBugReporterPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetABIPluginInfo()
static llvm::SmallVector< RegisteredPluginInfo > GetLanguagePluginInfo()
static LanguageSet GetREPLAllTypeSystemSupportedLanguages()
static llvm::SmallVector< OperatingSystemCreateInstance > GetOperatingSystemCreateCallbacks()
static bool CreateSettingForTracePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static llvm::SmallVector< RegisteredPluginInfo > GetDynamicLoaderPluginInfo()
static lldb::OptionValuePropertiesSP GetSettingForOperatingSystemPlugin(Debugger &debugger, llvm::StringRef setting_name)
static llvm::Error SetInstrumentationRuntimePluginEnabled(llvm::StringRef name, bool enable, Debugger &requesting_debugger, lldb::PluginDomainKind domain)
static llvm::SmallVector< ProcessCreateInstance > GetProcessCreateCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetObjectContainerPluginInfo()
static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec, Status &error, bool force_lookup=true, bool copy_executable=true)
static llvm::SmallVector< RegisteredPluginInfo > GetDisassemblerPluginInfo()
static llvm::SmallVector< LanguageRuntimeCallbacks > GetLanguageRuntimeCallbacks()
static llvm::SmallVector< SymbolFileCreateInstance > GetSymbolFileCreateCallbacks()
static bool SetLanguageRuntimePluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetObjectFilePluginInfo()
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static lldb::ScriptLanguage GetScriptedInterfaceLanguageAtIndex(uint32_t idx)
static llvm::SmallVector< RegisteredPluginInfo > GetSymbolLocatorPluginInfo()
static llvm::StringRef GetTraceSchema(llvm::StringRef plugin_name)
Get the JSON schema for a trace bundle description file corresponding to the given plugin.
static llvm::SmallVector< SymbolVendorCreateInstance > GetSymbolVendorCreateCallbacks()
static bool SetUnwindAssemblyPluginEnabled(llvm::StringRef name, bool enable)
static lldb::OptionValuePropertiesSP GetSettingForCPlusPlusLanguagePlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool SetDisassemblerPluginEnabled(llvm::StringRef name, bool enable)
static bool SetSystemRuntimePluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetTracePluginInfo()
static llvm::SmallVector< JITLoaderCreateInstance > GetJITLoaderCreateCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetProcessPluginInfo()
static TraceCreateInstanceForLiveProcess GetTraceCreateCallbackForLiveProcess(llvm::StringRef plugin_name)
static std::unique_ptr< Architecture > CreateArchitectureInstance(const ArchSpec &arch)
static llvm::SmallVector< DisassemblerCreateInstance > GetDisassemblerCreateCallbacks()
static lldb::OptionValuePropertiesSP GetSettingForSymbolLocatorPlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool SetStructuredDataPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< ObjectFileCallbacks > GetObjectFileCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetLanguageRuntimePluginInfo()
static bool SetObjectContainerPluginEnabled(llvm::StringRef name, bool enable)
static bool CreateSettingForProcessPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static llvm::SmallVector< RegisteredPluginInfo > GetPlatformPluginInfo()
static llvm::SmallVector< RegisteredPluginInfo > GetMemoryHistoryPluginInfo()
static llvm::SmallVector< TypeSystemCreateInstance > GetTypeSystemCreateCallbacks()
static lldb::OptionValuePropertiesSP GetSettingForPlatformPlugin(Debugger &debugger, llvm::StringRef setting_name)
static llvm::SmallVector< RegisteredPluginInfo > GetSymbolFilePluginInfo()
static SyntheticFrameProviderCreateInstance GetSyntheticFrameProviderCreateCallbackForPluginName(llvm::StringRef name)
static llvm::SmallVector< SymbolLocatorCreateInstance > GetSymbolLocatorCreateCallbacks()
static llvm::ArrayRef< PluginNamespace > GetPluginNamespaces()
static bool SetTypeSystemPluginEnabled(llvm::StringRef name, bool enable)
static bool SetTracePluginEnabled(llvm::StringRef name, bool enable)
static Status SaveCore(lldb_private::SaveCoreOptions &core_options)
static llvm::SmallVector< RegisteredPluginInfo > GetTraceExporterPluginInfo()
static FileSpec LocateExecutableSymbolFile(const ModuleSpec &module_spec, const FileSpecList &default_search_paths, StatisticsMap &map)
static bool SetEmulateInstructionPluginEnabled(llvm::StringRef name, bool enable)
static lldb::OptionValuePropertiesSP GetSettingForJITLoaderPlugin(Debugger &debugger, llvm::StringRef setting_name)
static DisassemblerCreateInstance GetDisassemblerCreateCallbackForPluginName(llvm::StringRef name)
static bool SetJITLoaderPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetInstrumentationRuntimePluginInfo()
static llvm::SmallVector< REPLCallbacks > GetREPLCallbacks()
static bool CreateSettingForSymbolFilePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static bool CreateSettingForPlatformPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static OperatingSystemCreateInstance GetOperatingSystemCreateCallbackForPluginName(llvm::StringRef name)
static bool SetSymbolFilePluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< ScriptInterpreterCreateInstance > GetScriptInterpreterCreateCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetRegisterTypeBuilderPluginInfo()
static EmulateInstructionCreateInstance GetEmulateInstructionCreateCallbackForPluginName(llvm::StringRef name)
static lldb::OptionValuePropertiesSP GetSettingForSymbolFilePlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool CreateSettingForStructuredDataPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static size_t GetNumScriptedInterfaces()
static bool CreateSettingForCPlusPlusLanguagePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static llvm::SmallVector< TraceExporterCallbacks > GetTraceExporterCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetSymbolVendorPluginInfo()
static llvm::SmallVector< RegisteredPluginInfo > GetBugReporterPluginInfo()
static DynamicLoaderCreateInstance GetDynamicLoaderCreateCallbackForPluginName(llvm::StringRef name)
static llvm::SmallVector< EmulateInstructionCreateInstance > GetEmulateInstructionCreateCallbacks()
static PlatformCreateInstance GetPlatformCreateCallbackForPluginName(llvm::StringRef name)
static bool SetProcessPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< llvm::StringRef > GetSaveCorePluginNames()
static llvm::SmallVector< RegisteredPluginInfo > GetOperatingSystemPluginInfo()
static llvm::SmallVector< ScriptedFrameProviderCreateInstance > GetScriptedFrameProviderCreateCallbacks()
static bool SetABIPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetScriptedInterfacePluginInfo()
static lldb::OptionValuePropertiesSP GetSettingForProcessPlugin(Debugger &debugger, llvm::StringRef setting_name)
static ProcessCreateInstance GetProcessCreateCallbackForPluginName(llvm::StringRef name)
static lldb::ScriptedExtension GetScriptedInterfaceExtensionAtIndex(uint32_t idx)
static void AutoCompletePluginName(llvm::StringRef partial_name, CompletionRequest &request)
static llvm::StringRef GetScriptedInterfaceDescriptionAtIndex(uint32_t idx)
static llvm::StringRef GetProcessPluginDescriptionAtIndex(uint32_t idx)
static llvm::StringRef GetProtocolServerPluginNameAtIndex(uint32_t idx)
static bool IsRegisteredObjectFilePluginName(llvm::StringRef name)
static lldb::OptionValuePropertiesSP GetSettingForDynamicLoaderPlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool CreateSettingForDynamicLoaderPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static bool SetLanguagePluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< RegisteredPluginInfo > GetREPLPluginInfo()
static bool SetREPLPluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< HighlighterCreateInstance > GetHighlighterCreateCallbacks()
static llvm::SmallVector< RegisteredPluginInfo > GetUnwindAssemblyPluginInfo()
static llvm::StringRef GetPlatformPluginNameAtIndex(uint32_t idx)
static bool SetSymbolVendorPluginEnabled(llvm::StringRef name, bool enable)
static TraceCreateInstanceFromBundle GetTraceCreateCallback(llvm::StringRef plugin_name)
static void DebuggerInitialize(Debugger &debugger)
static llvm::StringRef GetScriptedInterfaceNameAtIndex(uint32_t idx)
static llvm::SmallVector< ObjectContainerCallbacks > GetObjectContainerCallbacks()
static llvm::StringRef GetProcessPluginNameAtIndex(uint32_t idx)
static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec, StatisticsMap &map)
static llvm::SmallVector< StructuredDataPluginCallbacks > GetStructuredDataPluginCallbacks()
static LanguageSet GetAllTypeSystemSupportedLanguagesForTypes()
static llvm::SmallVector< SystemRuntimeCreateInstance > GetSystemRuntimeCreateCallbacks()
static FileSpec GetScriptInterpreterLibraryPath(lldb::ScriptLanguage script_lang)
static bool UnregisterPlugin(ABICreateInstance create_callback)
static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec, const UUID *uuid, const ArchSpec *arch)
static llvm::SmallVector< RegisteredPluginInfo > GetStructuredDataPluginInfo()
static bool SetSymbolLocatorPluginEnabled(llvm::StringRef name, bool enable)
static ProtocolServerCreateInstance GetProtocolCreateCallbackForPluginName(llvm::StringRef name)
static llvm::SmallVector< LanguageCreateInstance > GetLanguageCreateCallbacks()
static std::unique_ptr< BugReporter > CreateBugReporterInstance(llvm::StringRef name={})
static llvm::SmallVector< DynamicLoaderCreateInstance > GetDynamicLoaderCreateCallbacks()
static lldb::RegisterTypeBuilderSP GetRegisterTypeBuilder(Target &target)
static llvm::SmallVector< MemoryHistoryCreateInstance > GetMemoryHistoryCreateCallbacks()
static ScriptedInterfaceUsages GetScriptedInterfaceUsagesAtIndex(uint32_t idx)
static ObjectFileCreateMemoryInstance GetObjectFileCreateMemoryCallbackForPluginName(llvm::StringRef name)
static bool CreateSettingForSymbolLocatorPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static llvm::SmallVector< RegisteredPluginInfo > GetJITLoaderPluginInfo()
static bool SetObjectFilePluginEnabled(llvm::StringRef name, bool enable)
static llvm::SmallVector< PlatformCreateInstance > GetPlatformCreateCallbacks()
PluginNamespace(llvm::StringRef name, GetPluginInfo get_info, SetPluginEnabledAllDomains set_enabled)
Plugin that supports enable/disable in all domains.
std::optional< SetPluginEnabledGlobalDomain > GetSetEnabledGlobalFn() const
std::variant< SetPluginEnabledGlobalDomain, SetPluginEnabledAllDomains > set_enabled_fn
PluginNamespace(llvm::StringRef name, GetPluginInfo get_info, SetPluginEnabledGlobalDomain set_enabled)
Plugin that only supports enable/disable in the global domain.
std::optional< SetPluginEnabledAllDomains > GetSetEnabledAllDomainsFn() const
bool SupportsOnlyDomain(lldb::PluginDomainKind domain) const
static constexpr uint8_t kAllDomains
bool SupportsDomain(lldb::PluginDomainKind domain) const
A class to count time for plugins.
Definition Statistics.h:94
An error handling class.
Definition Status.h:118
Represents UUID's of various sizes.
Definition UUID.h:27
A class that represents a running process on the host machine.
SymbolVendor *(* SymbolVendorCreateInstance)(const lldb::ModuleSP &module_sp, lldb_private::Stream *feedback_strm)
bool(* ObjectFileSaveCore)(const lldb::ProcessSP &process_sp, lldb_private::SaveCoreOptions &options, Status &error)
llvm::Expected< lldb::TraceSP >(* TraceCreateInstanceForLiveProcess)(Process &process)
FileSpec(* ScriptInterpreterGetPath)()
lldb::RegisterTypeBuilderSP(* RegisterTypeBuilderCreateInstance)(Target &target)
std::function< llvm::SmallVector< RegisteredPluginInfo >()> GetPluginInfo
lldb::ProtocolServerUP(* ProtocolServerCreateInstance)()
LanguageRuntime *(* LanguageRuntimeCreateInstance)(Process *process, lldb::LanguageType language)
lldb::InstrumentationRuntimeType(* InstrumentationRuntimeGetType)()
llvm::Expected< lldb::TraceSP >(* TraceCreateInstanceFromBundle)(const llvm::json::Value &trace_bundle_description, llvm::StringRef session_file_dir, lldb_private::Debugger &debugger)
Trace.
lldb::DisassemblerSP(* DisassemblerCreateInstance)(const ArchSpec &arch, const char *flavor, const char *cpu, const char *features)
std::optional< FileSpec >(* SymbolLocatorLocateExecutableSymbolFile)(const ModuleSpec &module_spec, const FileSpecList &default_search_paths)
std::function< bool(llvm::StringRef, bool)> SetPluginEnabledGlobalDomain
EmulateInstruction *(* EmulateInstructionCreateInstance)(const ArchSpec &arch, InstructionType inst_type)
ObjectContainer *(* ObjectContainerCreateMemoryInstance)(const lldb::ModuleSP &module_sp, lldb::WritableDataBufferSP data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t offset)
void(* DebuggerInitializeCallback)(Debugger &debugger)
std::unique_ptr< Architecture >(* ArchitectureCreateInstance)(const ArchSpec &arch)
lldb::ScriptInterpreterSP(* ScriptInterpreterCreateInstance)(Debugger &debugger)
lldb::PlatformSP(* PlatformCreateInstance)(bool force, const ArchSpec *arch)
bool(* ScriptedInterfaceCreateInstance)(lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
SystemRuntime *(* SystemRuntimeCreateInstance)(Process *process)
lldb::ProcessSP(* ProcessCreateInstance)(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const FileSpec *crash_file_path, bool can_connect)
UnwindAssembly *(* UnwindAssemblyCreateInstance)(const ArchSpec &arch)
lldb::TypeSystemSP(* TypeSystemCreateInstance)(lldb::LanguageType language, Module *module, Target *target)
lldb::BreakpointPreconditionSP(* LanguageRuntimeGetExceptionPrecondition)(lldb::LanguageType language, bool throw_bp)
ObjectContainer *(* ObjectContainerCreateInstance)(const lldb::ModuleSP &module_sp, lldb::DataBufferSP &data_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t offset, lldb::offset_t length)
lldb::MemoryHistorySP(* MemoryHistoryCreateInstance)(const lldb::ProcessSP &process_sp)
ObjectFile *(* ObjectFileCreateMemoryInstance)(const lldb::ModuleSP &module_sp, lldb::WritableDataBufferSP data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t offset)
SymbolLocator *(* SymbolLocatorCreateInstance)()
std::unique_ptr< BugReporter >(* BugReporterCreateInstance)()
std::optional< ModuleSpec >(* SymbolLocatorLocateExecutableObjectFile)(const ModuleSpec &module_spec)
lldb::CommandObjectSP(* LanguageRuntimeGetCommandObject)(CommandInterpreter &interpreter)
DynamicLoader *(* DynamicLoaderCreateInstance)(Process *process, bool force)
lldb::StructuredDataPluginSP(* StructuredDataPluginCreateInstance)(Process &process)
lldb::JITLoaderSP(* JITLoaderCreateInstance)(Process *process, bool force)
llvm::Expected< lldb::SyntheticFrameProviderSP >(* SyntheticFrameProviderCreateInstance)(lldb::StackFrameListSP input_frames, const std::vector< lldb_private::ThreadSpec > &thread_specs)
OperatingSystem *(* OperatingSystemCreateInstance)(Process *process, bool force)
lldb::REPLSP(* REPLCreateInstance)(Status &error, lldb::LanguageType language, Debugger *debugger, Target *target, const char *repl_options)
SymbolFile *(* SymbolFileCreateInstance)(lldb::ObjectFileSP objfile_sp)
llvm::Expected< lldb::TraceExporterUP >(* TraceExporterCreateInstance)()
Highlighter *(* HighlighterCreateInstance)(lldb::LanguageType language)
std::optional< FileSpec >(* SymbolLocatorFindSymbolFileInBundle)(const FileSpec &dsym_bundle_fspec, const UUID *uuid, const ArchSpec *arch)
bool(* SymbolLocatorDownloadObjectAndSymbolFile)(ModuleSpec &module_spec, Status &error, bool force_lookup, bool copy_executable)
Language *(* LanguageCreateInstance)(lldb::LanguageType language)
Status(* StructuredDataFilterLaunchInfo)(ProcessLaunchInfo &launch_info, Target *target)
ObjectFile *(* ObjectFileCreateInstance)(const lldb::ModuleSP &module_sp, lldb::DataExtractorSP extractor_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t file_offset, lldb::offset_t length)
ModuleSpecList(* ObjectFileGetModuleSpecifications)(const FileSpec &file, lldb::DataExtractorSP &extractor_sp, lldb::offset_t file_offset, lldb::offset_t length)
lldb::ABISP(* ABICreateInstance)(lldb::ProcessSP process_sp, const ArchSpec &arch)
llvm::Expected< lldb::SyntheticFrameProviderSP >(* ScriptedFrameProviderCreateInstance)(lldb::StackFrameListSP input_frames, const lldb_private::ScriptedFrameProviderDescriptor &descriptor)
lldb::CommandObjectSP(* ThreadTraceExportCommandCreator)(CommandInterpreter &interpreter)
std::function< llvm::Error( llvm::StringRef, bool, Debugger &, lldb::PluginDomainKind)> SetPluginEnabledAllDomains
lldb::InstrumentationRuntimeSP(* InstrumentationRuntimeCreateInstance)(const lldb::ProcessSP &process_sp)
ScriptLanguage
Script interpreter types.
@ eScriptLanguageUnknown
std::shared_ptr< lldb_private::OptionValueProperties > OptionValuePropertiesSP
ScriptedExtension
Scripting extension types.
std::shared_ptr< lldb_private::ScriptInterpreter > ScriptInterpreterSP
@ ePluginDomainKindTarget
@ ePluginDomainKindGlobal
@ ePluginDomainKindDebugger
std::shared_ptr< lldb_private::RegisterTypeBuilder > RegisterTypeBuilderSP
InstrumentationRuntimeGetType get_type_callback
InstrumentationRuntimeCreateInstance create_callback
LanguageRuntimeGetExceptionPrecondition precondition_callback
LanguageRuntimeGetCommandObject command_callback
LanguageRuntimeCreateInstance create_callback
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
ObjectContainerCreateMemoryInstance create_memory_callback
ObjectContainerCreateInstance create_callback
ObjectFileGetModuleSpecifications get_module_specifications
ObjectFileCreateMemoryInstance create_memory_callback
ObjectFileCreateInstance create_callback
ObjectFileGetModuleSpecifications get_module_specifications
PluginInstance(llvm::StringRef name, llvm::StringRef description, Callback create_callback, DebuggerInitializeCallback debugger_init_callback=nullptr)
REPLCreateInstance create_callback
ScriptedInterfaceInstance(llvm::StringRef name, llvm::StringRef description, ScriptedInterfaceCreateInstance create_callback, lldb::ScriptedExtension extension, lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
StructuredDataFilterLaunchInfo filter_callback
StructuredDataPluginCreateInstance create_callback
ThreadTraceExportCommandCreator create_thread_trace_export_command
TraceExporterCreateInstance create_callback