20#include "llvm/ADT/StringRef.h"
21#include "llvm/ADT/Twine.h"
22#include "llvm/Support/DynamicLibrary.h"
23#include "llvm/Support/FileSystem.h"
24#include "llvm/Support/raw_ostream.h"
53 static std::recursive_mutex g_plugin_map_mutex;
54 return g_plugin_map_mutex;
65 return plugin_map.find(plugin_file_spec) != plugin_map.end();
72 assert(plugin_map.find(plugin_file_spec) == plugin_map.end());
73 plugin_map[plugin_file_spec] = plugin_info;
76template <
typename FPtrTy>
static FPtrTy
CastToFPtr(
void *VPtr) {
77 return reinterpret_cast<FPtrTy
>(VPtr);
82 llvm::StringRef path) {
85 namespace fs = llvm::sys::fs;
90 if (ft == fs::file_type::regular_file || ft == fs::file_type::symlink_file ||
91 ft == fs::file_type::type_unknown) {
100 std::string pluginLoadError;
101 plugin_info.
library = llvm::sys::DynamicLibrary::getPermanentLibrary(
102 plugin_file_spec.
GetPath().c_str(), &pluginLoadError);
103 if (plugin_info.
library.isValid()) {
104 bool success =
false;
106 plugin_info.
library.getAddressOfSymbol(
"LLDBPluginInitialize"));
115 plugin_info.
library.getAddressOfSymbol(
"LLDBPluginTerminate"));
133 if (ft == fs::file_type::directory_file ||
134 ft == fs::file_type::symlink_file || ft == fs::file_type::type_unknown) {
146 const bool find_directories =
true;
147 const bool find_files =
true;
148 const bool find_other =
true;
150 if (
FileSpec dir_spec = HostInfo::GetSystemPluginDir()) {
152 dir_spec.GetPath(dir_path,
sizeof(dir_path))) {
154 find_files, find_other,
159 if (
FileSpec dir_spec = HostInfo::GetUserPluginDir()) {
161 dir_spec.GetPath(dir_path,
sizeof(dir_path))) {
163 find_files, find_other,
173 PluginTerminateMap::const_iterator pos, end = plugin_map.end();
174 for (pos = plugin_map.begin(); pos != end; ++pos) {
177 if (pos->second.library.isValid()) {
178 if (pos->second.plugin_term_callback)
179 pos->second.plugin_term_callback();
213 "emulate-instruction",
219 "instrumentation-runtime",
285 "register-type-builder",
291 "script-interpreter",
297 "scripted-interface",
357 return PluginNamespaces;
361 llvm::json::Object plugin_stats;
364 llvm::json::Array namespace_stats;
368 llvm::json::Object plugin_json;
369 plugin_json.try_emplace(
"name",
plugin.name);
370 plugin_json.try_emplace(
"enabled",
plugin.enabled);
371 namespace_stats.emplace_back(std::move(plugin_json));
374 if (!namespace_stats.empty())
375 plugin_stats.try_emplace(plugin_ns.name, std::move(namespace_stats));
389 if (pattern == plugin_ns.
name)
393 std::string qualified_name = (plugin_ns.
name +
"." + plugin_info.
name).str();
394 return pattern == qualified_name;
417 template <
typename...
Args>
419 typename Instance::CallbackType callback,
423 assert(!name.empty());
424 m_instances.emplace_back(name, description, callback,
425 std::forward<Args>(args)...);
434 for (; pos != end; ++pos) {
435 if (pos->create_callback == callback) {
445 return instance->create_callback;
451 return instance->description;
457 return instance->name;
463 return instance->create_callback;
469 if (!instance.enabled)
471 if (instance.debugger_init_callback)
472 instance.debugger_init_callback(debugger);
481 std::vector<Instance> enabled_instances;
483 if (instance.enabled)
484 enabled_instances.push_back(instance);
486 return enabled_instances;
493 [&](
const Instance &instance) {
return count++ == idx; });
501 [&](
const Instance &instance) {
return instance.name == name; });
507 if (!instance.enabled)
509 if (predicate(instance))
521 std::vector<RegisteredPluginInfo> plugin_infos;
524 plugin_infos.push_back(
525 {instance.name, instance.description, instance.enabled});
531 auto it = llvm::find_if(
m_instances, [&](
const Instance &instance) {
532 return instance.name == name;
538 it->enabled = enable;
557 llvm::StringRef description,
570#pragma mark Architecture
581 llvm::StringRef description,
589 instances.UnregisterPlugin(create_callback);
592std::unique_ptr<Architecture>
595 if (
auto plugin_up = instances.create_callback(arch))
601#pragma mark Disassembler
612 llvm::StringRef description,
630 llvm::StringRef name) {
634#pragma mark DynamicLoader
645 llvm::StringRef name, llvm::StringRef description,
649 name, description, create_callback, debugger_init_callback);
664 llvm::StringRef name) {
668#pragma mark JITLoader
679 llvm::StringRef name, llvm::StringRef description,
683 name, description, create_callback, debugger_init_callback);
695#pragma mark EmulateInstruction
707 llvm::StringRef name, llvm::StringRef description,
725 llvm::StringRef name) {
729#pragma mark OperatingSystem
740 llvm::StringRef name, llvm::StringRef description,
744 name, description, create_callback, debugger_init_callback);
759 llvm::StringRef name) {
774 llvm::StringRef name, llvm::StringRef description,
778 name, description, create_callback, debugger_init_callback);
790#pragma mark LanguageRuntime
817 llvm::StringRef name, llvm::StringRef description,
822 name, description, create_callback,
nullptr, command_callback,
823 precondition_callback);
839 return instance->command_callback;
846 return instance->precondition_callback;
850#pragma mark SystemRuntime
861 llvm::StringRef name, llvm::StringRef description,
877#pragma mark ObjectFile
912 llvm::StringRef name, llvm::StringRef description,
919 name, description, create_callback, create_memory_callback,
920 get_module_specifications, save_core, debugger_init_callback);
935 return instance->create_memory_callback;
943 return instance->get_module_specifications;
949 llvm::StringRef name) {
951 return instance->create_memory_callback;
973 llvm::Expected<bool> ret =
982 const auto &plugin_name = options.
GetPluginName().value_or(
"");
984 for (
auto &instance : instances) {
985 if (plugin_name.empty() || instance.name == plugin_name) {
988 if (instance.save_core &&
1000 if (!plugin_name.empty())
1002 "The \"{}\" plugin is not able to save a core for this process.",
1006 "no ObjectFile plugins were able to save a core for this process");
1010 std::vector<llvm::StringRef> plugin_names;
1012 for (
auto &instance : instances) {
1013 if (instance.save_core)
1014 plugin_names.emplace_back(instance.name);
1016 return plugin_names;
1019#pragma mark ObjectContainer
1044 llvm::StringRef name, llvm::StringRef description,
1049 name, description, create_callback, create_memory_callback,
1050 get_module_specifications);
1066 return instance->create_memory_callback;
1074 return instance->get_module_specifications;
1078#pragma mark Platform
1085 return g_platform_instances;
1089 llvm::StringRef name, llvm::StringRef description,
1093 name, description, create_callback, debugger_init_callback);
1122 if (instance.name.starts_with(name))
1138 llvm::StringRef name, llvm::StringRef description,
1142 name, description, create_callback, debugger_init_callback);
1170 if (instance.name.starts_with(name))
1175#pragma mark ProtocolServer
1186 llvm::StringRef name, llvm::StringRef description,
1207#pragma mark RegisterTypeBuilder
1217typedef PluginInstances<RegisterTypeBuilderInstance>
1226 llvm::StringRef name, llvm::StringRef description,
1243 return instance->create_callback(target);
1246#pragma mark ScriptInterpreter
1268 llvm::StringRef name, llvm::StringRef description,
1272 name, description, create_callback, script_language);
1290 for (
const auto &instance : instances) {
1292 none_instance = instance.create_callback;
1294 if (script_lang == instance.language)
1295 return instance.create_callback(debugger);
1299 assert(none_instance !=
nullptr);
1300 return none_instance(debugger);
1303#pragma mark StructuredDataPlugin
1328 llvm::StringRef name, llvm::StringRef description,
1333 name, description, create_callback, debugger_init_callback,
1349 uint32_t idx,
bool &iteration_complete) {
1352 iteration_complete =
false;
1353 return instance->filter_callback;
1355 iteration_complete =
true;
1359#pragma mark SymbolFile
1370 llvm::StringRef name, llvm::StringRef description,
1374 name, description, create_callback, debugger_init_callback);
1386#pragma mark SymbolVendor
1397 llvm::StringRef description,
1413#pragma mark SymbolLocator
1445 llvm::StringRef name, llvm::StringRef description,
1453 name, description, create_callback, locate_executable_object_file,
1454 locate_executable_symbol_file, download_object_symbol_file,
1455 find_symbol_file_in_bundle, debugger_init_callback);
1472 for (
auto &instance : instances) {
1473 if (instance.locate_executable_object_file) {
1475 std::optional<ModuleSpec> result;
1478 result = instance.locate_executable_object_file(module_spec);
1480 map.
add(instance.name, time.
get().count());
1492 for (
auto &instance : instances) {
1493 if (instance.locate_executable_symbol_file) {
1495 std::optional<FileSpec> result;
1498 result = instance.locate_executable_symbol_file(module_spec,
1499 default_search_paths);
1501 map.
add(instance.name, time.
get().count());
1512 bool copy_executable) {
1514 for (
auto &instance : instances) {
1515 if (instance.download_object_symbol_file) {
1516 if (instance.download_object_symbol_file(module_spec,
error, force_lookup,
1528 for (
auto &instance : instances) {
1529 if (instance.find_symbol_file_in_bundle) {
1530 std::optional<FileSpec> result =
1531 instance.find_symbol_file_in_bundle(symfile_bundle, uuid, arch);
1566 llvm::StringRef name, llvm::StringRef description,
1571 name, description, create_callback_from_bundle,
1572 create_callback_for_live_process, schema, debugger_init_callback);
1578 create_callback_from_bundle);
1589 return instance->create_callback_for_live_process;
1596 return instance->schema;
1597 return llvm::StringRef();
1603 return instance->schema;
1604 return llvm::StringRef();
1607#pragma mark TraceExporter
1631 llvm::StringRef name, llvm::StringRef description,
1635 name, description, create_callback, create_thread_trace_export_command);
1652 return instance->create_thread_trace_export_command;
1661#pragma mark UnwindAssembly
1672 llvm::StringRef name, llvm::StringRef description,
1688#pragma mark MemoryHistory
1699 llvm::StringRef name, llvm::StringRef description,
1715#pragma mark InstrumentationRuntime
1739 llvm::StringRef name, llvm::StringRef description,
1743 name, description, create_callback, get_type_callback);
1755 return instance->get_type_callback;
1764#pragma mark TypeSystem
1789 llvm::StringRef name, llvm::StringRef description,
1792 LanguageSet supported_languages_for_expressions) {
1794 name, description, create_callback, supported_languages_for_types,
1795 supported_languages_for_expressions);
1810 for (
unsigned i = 0; i < instances.size(); ++i)
1811 all.
bitvector |= instances[i].supported_languages_for_types.bitvector;
1818 for (
unsigned i = 0; i < instances.size(); ++i)
1819 all.
bitvector |= instances[i].supported_languages_for_expressions.bitvector;
1823#pragma mark ScriptedInterfaces
1847 llvm::StringRef name, llvm::StringRef description,
1851 name, description, create_callback, language, usages);
1875 return instance->language;
1882 return instance->usages;
1908 supported_languages);
1921 return instance->supported_languages;
1928 for (
unsigned i = 0; i < instances.size(); ++i)
1929 all.
bitvector |= instances[i].supported_languages.bitvector;
1933#pragma mark PluginManager
1955 llvm::StringRef plugin_type_desc,
1959 if (parent_properties_sp) {
1960 static constexpr llvm::StringLiteral g_property_name(
"plugin");
1963 parent_properties_sp->GetSubProperty(
nullptr, g_property_name);
1964 if (!plugin_properties_sp && can_create) {
1965 plugin_properties_sp =
1966 std::make_shared<OptionValueProperties>(g_property_name);
1967 parent_properties_sp->AppendProperty(g_property_name,
1968 "Settings specify to plugins.",
true,
1969 plugin_properties_sp);
1972 if (plugin_properties_sp) {
1974 plugin_properties_sp->GetSubProperty(
nullptr, plugin_type_name);
1975 if (!plugin_type_properties_sp && can_create) {
1976 plugin_type_properties_sp =
1977 std::make_shared<OptionValueProperties>(plugin_type_name);
1978 plugin_properties_sp->AppendProperty(plugin_type_name, plugin_type_desc,
1979 true, plugin_type_properties_sp);
1981 return plugin_type_properties_sp;
1991 Debugger &debugger, llvm::StringRef plugin_type_name,
1992 llvm::StringRef plugin_type_desc,
bool can_create) {
1993 static constexpr llvm::StringLiteral g_property_name(
"plugin");
1996 if (parent_properties_sp) {
1998 parent_properties_sp->GetSubProperty(
nullptr, plugin_type_name);
1999 if (!plugin_properties_sp && can_create) {
2000 plugin_properties_sp =
2001 std::make_shared<OptionValueProperties>(plugin_type_name);
2002 parent_properties_sp->AppendProperty(plugin_type_name, plugin_type_desc,
2003 true, plugin_properties_sp);
2006 if (plugin_properties_sp) {
2008 plugin_properties_sp->GetSubProperty(
nullptr, g_property_name);
2009 if (!plugin_type_properties_sp && can_create) {
2010 plugin_type_properties_sp =
2011 std::make_shared<OptionValueProperties>(g_property_name);
2012 plugin_properties_sp->AppendProperty(g_property_name,
2013 "Settings specific to plugins",
2014 true, plugin_type_properties_sp);
2016 return plugin_type_properties_sp;
2025GetDebuggerPropertyForPluginsPtr(
Debugger &, llvm::StringRef, llvm::StringRef,
2031 llvm::StringRef plugin_type_name,
2032 GetDebuggerPropertyForPluginsPtr get_debugger_property =
2036 debugger, plugin_type_name,
2039 if (plugin_type_properties_sp)
2041 plugin_type_properties_sp->GetSubProperty(
nullptr, setting_name);
2042 return properties_sp;
2047 llvm::StringRef plugin_type_desc,
2049 llvm::StringRef description,
bool is_global_property,
2050 GetDebuggerPropertyForPluginsPtr get_debugger_property =
2052 if (properties_sp) {
2054 get_debugger_property(debugger, plugin_type_name, plugin_type_desc,
2056 if (plugin_type_properties_sp) {
2057 plugin_type_properties_sp->AppendProperty(properties_sp->GetName(),
2058 description, is_global_property,
2074static constexpr llvm::StringLiteral
2080 llvm::StringRef setting_name) {
2086 llvm::StringRef description,
bool is_global_property) {
2088 "Settings for dynamic loader plug-ins",
2089 properties_sp, description, is_global_property);
2094 llvm::StringRef setting_name) {
2101 llvm::StringRef description,
bool is_global_property) {
2103 "Settings for platform plug-ins", properties_sp,
2104 description, is_global_property,
2110 llvm::StringRef setting_name) {
2116 llvm::StringRef description,
bool is_global_property) {
2118 "Settings for process plug-ins", properties_sp,
2119 description, is_global_property);
2124 llvm::StringRef setting_name) {
2130 llvm::StringRef description,
bool is_global_property) {
2132 "Settings for symbol locator plug-ins",
2133 properties_sp, description, is_global_property);
2138 llvm::StringRef description,
bool is_global_property) {
2140 "Settings for trace plug-ins", properties_sp,
2141 description, is_global_property);
2146 llvm::StringRef setting_name) {
2152 llvm::StringRef description,
bool is_global_property) {
2154 "Settings for object file plug-ins",
2155 properties_sp, description, is_global_property);
2160 llvm::StringRef setting_name) {
2166 llvm::StringRef description,
bool is_global_property) {
2168 "Settings for symbol file plug-ins",
2169 properties_sp, description, is_global_property);
2174 llvm::StringRef setting_name) {
2180 llvm::StringRef description,
bool is_global_property) {
2182 "Settings for JIT loader plug-ins",
2183 properties_sp, description, is_global_property);
2190 llvm::StringRef setting_name) {
2197 if (plugin_type_properties_sp)
2199 plugin_type_properties_sp->GetSubProperty(
nullptr, setting_name);
2200 return properties_sp;
2205 llvm::StringRef description,
bool is_global_property) {
2206 if (properties_sp) {
2209 "Settings for operating system plug-ins",
2211 if (plugin_type_properties_sp) {
2212 plugin_type_properties_sp->AppendProperty(properties_sp->GetName(),
2213 description, is_global_property,
2223 llvm::StringRef setting_name) {
2229 llvm::StringRef description,
bool is_global_property) {
2231 "Settings for structured data plug-ins",
2232 properties_sp, description, is_global_property);
2237 Debugger &debugger, llvm::StringRef setting_name) {
2243 llvm::StringRef description,
bool is_global_property) {
2245 "Settings for CPlusPlus language plug-ins",
2246 properties_sp, description, is_global_property);
2283std::vector<RegisteredPluginInfo>
2292std::vector<RegisteredPluginInfo>
2317std::vector<RegisteredPluginInfo>
2334std::vector<RegisteredPluginInfo>
2351std::vector<RegisteredPluginInfo>
2382std::vector<RegisteredPluginInfo>
2391std::vector<RegisteredPluginInfo>
2400std::vector<RegisteredPluginInfo>
2485 llvm::StringRef ns_name, plugin_prefix;
2486 std::tie(ns_name, plugin_prefix) = name.split(
'.');
2494 if (plugin_ns.name == ns_name) {
2496 llvm::SmallString<128> buf;
2497 if (
plugin.name.starts_with(plugin_prefix))
2499 (plugin_ns.name +
"." +
plugin.name).toStringRef(buf));
2501 }
else if (plugin_ns.name.starts_with(name) &&
2502 !plugin_ns.get_info().empty()) {
static llvm::raw_ostream & error(Stream &strm)
static FileSystem::EnumerateDirectoryResult LoadPluginCallback(void *baton, llvm::sys::fs::file_type ft, llvm::StringRef path)
static DisassemblerInstances & GetDisassemblerInstances()
PluginInstances< ProtocolServerInstance > ProtocolServerInstances
static TraceInstances & GetTracePluginInstances()
static ObjectContainerInstances & GetObjectContainerInstances()
PluginInstances< JITLoaderInstance > JITLoaderInstances
static MemoryHistoryInstances & GetMemoryHistoryInstances()
PluginInstance< PlatformCreateInstance > PlatformInstance
PluginInstances< InstrumentationRuntimeInstance > InstrumentationRuntimeInstances
static DynamicLoaderInstances & GetDynamicLoaderInstances()
PluginInstances< SymbolFileInstance > SymbolFileInstances
std::map< FileSpec, PluginInfo > PluginTerminateMap
PluginInstances< TypeSystemInstance > TypeSystemInstances
PluginInstance< ABICreateInstance > ABIInstance
static SystemRuntimeInstances & GetSystemRuntimeInstances()
PluginInstances< TraceExporterInstance > TraceExporterInstances
static constexpr llvm::StringLiteral kPlatformPluginName("platform")
PluginInstance< EmulateInstructionCreateInstance > EmulateInstructionInstance
static ABIInstances & GetABIInstances()
static constexpr llvm::StringLiteral kProcessPluginName("process")
PluginInstances< SymbolVendorInstance > SymbolVendorInstances
static constexpr llvm::StringLiteral kDynamicLoaderPluginName("dynamic-loader")
static lldb::OptionValuePropertiesSP GetSettingForPlugin(Debugger &debugger, llvm::StringRef setting_name, llvm::StringRef plugin_type_name, GetDebuggerPropertyForPluginsPtr get_debugger_property=GetDebuggerPropertyForPlugins)
static ScriptInterpreterInstances & GetScriptInterpreterInstances()
PluginInstance< DynamicLoaderCreateInstance > DynamicLoaderInstance
PluginInstances< PlatformInstance > PlatformInstances
PluginInstance< JITLoaderCreateInstance > JITLoaderInstance
PluginInstance< ArchitectureCreateInstance > ArchitectureInstance
static constexpr llvm::StringLiteral kCPlusPlusLanguagePlugin("cplusplus")
PluginInstances< SystemRuntimeInstance > SystemRuntimeInstances
static TraceExporterInstances & GetTraceExporterInstances()
static void SetPluginInfo(const FileSpec &plugin_file_spec, const PluginInfo &plugin_info)
static PluginTerminateMap & GetPluginMap()
PluginInstance< LanguageCreateInstance > LanguageInstance
PluginInstance< SymbolFileCreateInstance > SymbolFileInstance
static lldb::OptionValuePropertiesSP GetDebuggerPropertyForPlugins(Debugger &debugger, llvm::StringRef plugin_type_name, llvm::StringRef plugin_type_desc, bool can_create)
static constexpr llvm::StringLiteral kSymbolLocatorPluginName("symbol-locator")
PluginInstances< ObjectFileInstance > ObjectFileInstances
void(* PluginTermCallback)()
static StructuredDataPluginInstances & GetStructuredDataPluginInstances()
static constexpr llvm::StringLiteral kObjectFilePluginName("object-file")
PluginInstances< MemoryHistoryInstance > MemoryHistoryInstances
static lldb::OptionValuePropertiesSP GetDebuggerPropertyForPluginsOldStyle(Debugger &debugger, llvm::StringRef plugin_type_name, llvm::StringRef plugin_type_desc, bool can_create)
PluginInstances< DynamicLoaderInstance > DynamicLoaderInstances
PluginInstances< LanguageInstance > LanguageInstances
PluginInstances< TraceInstance > TraceInstances
PluginInstances< ArchitectureInstance > ArchitectureInstances
PluginInstances< StructuredDataPluginInstance > StructuredDataPluginInstances
static constexpr llvm::StringLiteral kStructuredDataPluginName("structured-data")
PluginInstance< MemoryHistoryCreateInstance > MemoryHistoryInstance
static const char * kOperatingSystemPluginName("os")
static SymbolLocatorInstances & GetSymbolLocatorInstances()
PluginInstance< ProtocolServerCreateInstance > ProtocolServerInstance
PluginInstance< OperatingSystemCreateInstance > OperatingSystemInstance
static ObjectFileInstances & GetObjectFileInstances()
static constexpr llvm::StringLiteral kSymbolFilePluginName("symbol-file")
PluginInstances< SymbolLocatorInstance > SymbolLocatorInstances
PluginInstance< SystemRuntimeCreateInstance > SystemRuntimeInstance
PluginInstance< SymbolVendorCreateInstance > SymbolVendorInstance
static EmulateInstructionInstances & GetEmulateInstructionInstances()
PluginInstance< UnwindAssemblyCreateInstance > UnwindAssemblyInstance
static LanguageInstances & GetLanguageInstances()
static constexpr llvm::StringLiteral kJITLoaderPluginName("jit-loader")
PluginInstances< OperatingSystemInstance > OperatingSystemInstances
static LanguageRuntimeInstances & GetLanguageRuntimeInstances()
PluginInstances< LanguageRuntimeInstance > LanguageRuntimeInstances
static InstrumentationRuntimeInstances & GetInstrumentationRuntimeInstances()
PluginInstances< ProcessInstance > ProcessInstances
PluginInstances< REPLInstance > REPLInstances
static ArchitectureInstances & GetArchitectureInstances()
static RegisterTypeBuilderInstances & GetRegisterTypeBuilderInstances()
static std::recursive_mutex & GetPluginMapMutex()
static TypeSystemInstances & GetTypeSystemInstances()
static PlatformInstances & GetPlatformInstances()
static ScriptedInterfaceInstances & GetScriptedInterfaceInstances()
static FileSystem::EnumerateDirectoryResult LoadPluginCallback(void *baton, llvm::sys::fs::file_type ft, llvm::StringRef path)
PluginInstances< EmulateInstructionInstance > EmulateInstructionInstances
static JITLoaderInstances & GetJITLoaderInstances()
PluginInstances< DisassemblerInstance > DisassemblerInstances
PluginInstance< ProcessCreateInstance > ProcessInstance
static UnwindAssemblyInstances & GetUnwindAssemblyInstances()
PluginInstances< ScriptedInterfaceInstance > ScriptedInterfaceInstances
PluginInstances< UnwindAssemblyInstance > UnwindAssemblyInstances
static SymbolFileInstances & GetSymbolFileInstances()
static bool CreateSettingForPlugin(Debugger &debugger, llvm::StringRef plugin_type_name, llvm::StringRef plugin_type_desc, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property, GetDebuggerPropertyForPluginsPtr get_debugger_property=GetDebuggerPropertyForPlugins)
PluginInstances< ABIInstance > ABIInstances
static FPtrTy CastToFPtr(void *VPtr)
static ProcessInstances & GetProcessInstances()
static bool PluginIsLoaded(const FileSpec &plugin_file_spec)
static OperatingSystemInstances & GetOperatingSystemInstances()
static constexpr llvm::StringLiteral kTracePluginName("trace")
PluginInstances< ScriptInterpreterInstance > ScriptInterpreterInstances
bool(* PluginInitCallback)()
PluginInstance< DisassemblerCreateInstance > DisassemblerInstance
static SymbolVendorInstances & GetSymbolVendorInstances()
PluginInstances< ObjectContainerInstance > ObjectContainerInstances
static ProtocolServerInstances & GetProtocolServerInstances()
PluginInstances< RegisterTypeBuilderInstance > RegisterTypeBuilderInstances
static REPLInstances & GetREPLInstances()
static double elapsed(const StatsTimepoint &start, const StatsTimepoint &end)
bool UnregisterPlugin(typename Instance::CallbackType callback)
llvm::StringRef GetNameAtIndex(uint32_t idx)
Instance::CallbackType GetCallbackAtIndex(uint32_t idx)
const ABIInstance * GetInstanceAtIndex(uint32_t idx)
llvm::StringRef GetDescriptionAtIndex(uint32_t idx)
Instance::CallbackType GetCallbackForName(llvm::StringRef name)
const ABIInstance * FindEnabledInstance(std::function< bool(const ABIInstance &)> predicate) const
bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, typename Instance::CallbackType callback, Args &&...args)
std::vector< ABIInstance > m_instances
std::vector< Instance > GetSnapshot()
const ABIInstance * GetInstanceForName(llvm::StringRef name)
std::vector< RegisteredPluginInfo > GetPluginInfoForAllInstances()
void PerformDebuggerCallback(Debugger &debugger)
bool SetInstanceEnabled(llvm::StringRef name, bool enable)
An architecture specification class.
A command line argument class.
"lldb/Utility/ArgCompletionRequest.h"
void AddCompletion(llvm::StringRef completion, llvm::StringRef description="", CompletionMode mode=CompletionMode::Normal)
Adds a possible completion string.
A class to manage flag bits.
A class that measures elapsed time in an exception safe way.
size_t GetPath(char *path, size_t max_path_length, bool denormalize=true) const
Extract the full path to the file.
void Resolve(llvm::SmallVectorImpl< char > &path)
Resolve path to make it canonical.
void EnumerateDirectory(llvm::Twine path, bool find_directories, bool find_files, bool find_other, EnumerateDirectoryCallbackType callback, void *callback_baton)
@ eEnumerateDirectoryResultEnter
Recurse into the current entry if it is a directory or symlink, or next if not.
@ eEnumerateDirectoryResultNext
Enumerate next entry in the current directory.
static FileSystem & Instance()
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 std::vector< RegisteredPluginInfo > GetSystemRuntimePluginInfo()
static llvm::StringRef GetTraceExporterPluginNameAtIndex(uint32_t index)
static bool CreateSettingForJITLoaderPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static ProcessCreateInstance GetProcessCreateCallbackAtIndex(uint32_t idx)
static bool SetRegisterTypeBuilderPluginEnabled(llvm::StringRef name, bool enable)
static bool SetTraceExporterPluginEnabled(llvm::StringRef name, bool enable)
static JITLoaderCreateInstance GetJITLoaderCreateCallbackAtIndex(uint32_t idx)
static ABICreateInstance GetABICreateCallbackAtIndex(uint32_t idx)
static LanguageSet GetAllTypeSystemSupportedLanguagesForExpressions()
static bool SetInstrumentationRuntimePluginEnabled(llvm::StringRef name, bool enable)
static bool CreateSettingForOperatingSystemPlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static lldb::OptionValuePropertiesSP GetSettingForObjectFilePlugin(Debugger &debugger, llvm::StringRef setting_name)
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 void AutoCompleteProcessName(llvm::StringRef partial_name, CompletionRequest &request)
static ThreadTraceExportCommandCreator GetThreadTraceExportCommandCreatorAtIndex(uint32_t index)
Return the callback used to create the CommandObject that will be listed under "thread trace export".
static LanguageSet GetREPLAllTypeSystemSupportedLanguages()
static std::vector< RegisteredPluginInfo > GetMemoryHistoryPluginInfo()
static std::vector< RegisteredPluginInfo > GetLanguagePluginInfo()
static PlatformCreateInstance GetPlatformCreateCallbackAtIndex(uint32_t idx)
static bool CreateSettingForTracePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static std::vector< RegisteredPluginInfo > GetTraceExporterPluginInfo()
static UnwindAssemblyCreateInstance GetUnwindAssemblyCreateCallbackAtIndex(uint32_t idx)
static lldb::OptionValuePropertiesSP GetSettingForOperatingSystemPlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec, Status &error, bool force_lookup=true, bool copy_executable=true)
static std::vector< RegisteredPluginInfo > GetLanguageRuntimePluginInfo()
static SymbolFileCreateInstance GetSymbolFileCreateCallbackAtIndex(uint32_t idx)
static bool SetLanguageRuntimePluginEnabled(llvm::StringRef name, bool enable)
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static lldb::ScriptLanguage GetScriptedInterfaceLanguageAtIndex(uint32_t idx)
static TypeSystemCreateInstance GetTypeSystemCreateCallbackAtIndex(uint32_t idx)
static InstrumentationRuntimeGetType GetInstrumentationRuntimeGetTypeCallbackAtIndex(uint32_t idx)
static llvm::StringRef GetTraceSchema(llvm::StringRef plugin_name)
Get the JSON schema for a trace bundle description file corresponding to the given plugin.
static std::vector< RegisteredPluginInfo > GetSymbolLocatorPluginInfo()
static std::vector< RegisteredPluginInfo > GetSymbolVendorPluginInfo()
static SymbolLocatorCreateInstance GetSymbolLocatorCreateCallbackAtIndex(uint32_t idx)
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 TraceCreateInstanceForLiveProcess GetTraceCreateCallbackForLiveProcess(llvm::StringRef plugin_name)
static LanguageRuntimeCreateInstance GetLanguageRuntimeCreateCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetObjectFilePluginInfo()
static std::unique_ptr< Architecture > CreateArchitectureInstance(const ArchSpec &arch)
static SystemRuntimeCreateInstance GetSystemRuntimeCreateCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetArchitecturePluginInfo()
static lldb::OptionValuePropertiesSP GetSettingForSymbolLocatorPlugin(Debugger &debugger, llvm::StringRef setting_name)
static bool SetStructuredDataPluginEnabled(llvm::StringRef name, bool enable)
static uint32_t GetNumScriptedInterfaces()
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 SymbolVendorCreateInstance GetSymbolVendorCreateCallbackAtIndex(uint32_t idx)
static LanguageRuntimeGetCommandObject GetLanguageRuntimeGetCommandObjectAtIndex(uint32_t idx)
static OperatingSystemCreateInstance GetOperatingSystemCreateCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetJITLoaderPluginInfo()
static std::vector< RegisteredPluginInfo > GetREPLPluginInfo()
static lldb::OptionValuePropertiesSP GetSettingForPlatformPlugin(Debugger &debugger, llvm::StringRef setting_name)
static LanguageRuntimeGetExceptionPrecondition GetLanguageRuntimeGetExceptionPreconditionAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetOperatingSystemPluginInfo()
static REPLCreateInstance GetREPLCreateCallbackAtIndex(uint32_t idx)
static ObjectFileCreateMemoryInstance GetObjectFileCreateMemoryCallbackAtIndex(uint32_t idx)
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 std::vector< RegisteredPluginInfo > GetStructuredDataPluginInfo()
static std::vector< RegisteredPluginInfo > GetPlatformPluginInfo()
static std::vector< RegisteredPluginInfo > GetTypeSystemPluginInfo()
static std::vector< RegisteredPluginInfo > GetObjectContainerPluginInfo()
static std::vector< RegisteredPluginInfo > GetTracePluginInfo()
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 MemoryHistoryCreateInstance GetMemoryHistoryCreateCallbackAtIndex(uint32_t idx)
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 DisassemblerCreateInstance GetDisassemblerCreateCallbackAtIndex(uint32_t idx)
static ObjectContainerCreateInstance GetObjectContainerCreateCallbackAtIndex(uint32_t idx)
static ObjectFileCreateInstance GetObjectFileCreateCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetScriptInterpreterPluginInfo()
static bool SetSymbolFilePluginEnabled(llvm::StringRef name, bool enable)
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 std::vector< RegisteredPluginInfo > GetProcessPluginInfo()
static bool CreateSettingForCPlusPlusLanguagePlugin(Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, llvm::StringRef description, bool is_global_property)
static DynamicLoaderCreateInstance GetDynamicLoaderCreateCallbackAtIndex(uint32_t idx)
static std::vector< llvm::StringRef > GetSaveCorePluginNames()
static ObjectFileGetModuleSpecifications GetObjectContainerGetModuleSpecificationsCallbackAtIndex(uint32_t idx)
static DynamicLoaderCreateInstance GetDynamicLoaderCreateCallbackForPluginName(llvm::StringRef name)
static PlatformCreateInstance GetPlatformCreateCallbackForPluginName(llvm::StringRef name)
static ScriptInterpreterCreateInstance GetScriptInterpreterCreateCallbackAtIndex(uint32_t idx)
static bool SetProcessPluginEnabled(llvm::StringRef name, bool enable)
static LanguageCreateInstance GetLanguageCreateCallbackAtIndex(uint32_t idx)
static bool SetABIPluginEnabled(llvm::StringRef name, bool enable)
static std::vector< RegisteredPluginInfo > GetRegisterTypeBuilderPluginInfo()
static lldb::OptionValuePropertiesSP GetSettingForProcessPlugin(Debugger &debugger, llvm::StringRef setting_name)
static std::vector< RegisteredPluginInfo > GetScriptedInterfacePluginInfo()
static std::vector< RegisteredPluginInfo > GetUnwindAssemblyPluginInfo()
static ProcessCreateInstance GetProcessCreateCallbackForPluginName(llvm::StringRef name)
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 bool SetREPLPluginEnabled(llvm::StringRef name, bool enable)
static StructuredDataPluginCreateInstance GetStructuredDataPluginCreateCallbackAtIndex(uint32_t idx)
static ObjectFileGetModuleSpecifications GetObjectFileGetModuleSpecificationsCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetABIPluginInfo()
static std::vector< RegisteredPluginInfo > GetSymbolFilePluginInfo()
static llvm::StringRef GetPlatformPluginNameAtIndex(uint32_t idx)
static bool SetSymbolVendorPluginEnabled(llvm::StringRef name, bool enable)
static TraceCreateInstanceFromBundle GetTraceCreateCallback(llvm::StringRef plugin_name)
static std::vector< RegisteredPluginInfo > GetDynamicLoaderPluginInfo()
static void DebuggerInitialize(Debugger &debugger)
static llvm::StringRef GetScriptedInterfaceNameAtIndex(uint32_t idx)
static llvm::StringRef GetProcessPluginNameAtIndex(uint32_t idx)
static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec, StatisticsMap &map)
static LanguageSet GetAllTypeSystemSupportedLanguagesForTypes()
static bool UnregisterPlugin(ABICreateInstance create_callback)
static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec, const UUID *uuid, const ArchSpec *arch)
static bool SetSymbolLocatorPluginEnabled(llvm::StringRef name, bool enable)
static ProtocolServerCreateInstance GetProtocolCreateCallbackForPluginName(llvm::StringRef name)
static std::vector< RegisteredPluginInfo > GetDisassemblerPluginInfo()
static std::vector< RegisteredPluginInfo > GetInstrumentationRuntimePluginInfo()
static ObjectContainerCreateMemoryInstance GetObjectContainerCreateMemoryCallbackAtIndex(uint32_t idx)
static StructuredDataFilterLaunchInfo GetStructuredDataFilterCallbackAtIndex(uint32_t idx, bool &iteration_complete)
static InstrumentationRuntimeCreateInstance GetInstrumentationRuntimeCreateCallbackAtIndex(uint32_t idx)
static std::vector< RegisteredPluginInfo > GetEmulateInstructionPluginInfo()
static LanguageSet GetREPLSupportedLanguagesAtIndex(uint32_t idx)
static lldb::RegisterTypeBuilderSP GetRegisterTypeBuilder(Target &target)
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 EmulateInstructionCreateInstance GetEmulateInstructionCreateCallbackAtIndex(uint32_t idx)
static bool SetObjectFilePluginEnabled(llvm::StringRef name, bool enable)
lldb::OptionValuePropertiesSP GetValueProperties() const
lldb::ProcessSP GetProcess()
const std::optional< lldb_private::FileSpec > GetOutputFile() const
Status EnsureValidConfiguration() const
std::optional< std::string > GetPluginName() const
A class to count time for plugins.
void add(llvm::StringRef key, double value)
static Status FromErrorString(const char *str)
static Status static Status FromErrorStringWithFormatv(const char *format, Args &&...args)
static Status FromError(llvm::Error error)
Avoid using this in new code. Migrate APIs to llvm::Expected instead.
Represents UUID's of various sizes.
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)
lldb::RegisterTypeBuilderSP(* RegisterTypeBuilderCreateInstance)(Target &target)
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)
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)
size_t(* ObjectFileGetModuleSpecifications)(const FileSpec &file, lldb::DataBufferSP &data_sp, lldb::offset_t data_offset, lldb::offset_t file_offset, lldb::offset_t length, ModuleSpecList &module_specs)
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::optional< ModuleSpec >(* SymbolLocatorLocateExecutableObjectFile)(const ModuleSpec &module_spec)
@ Partial
The current token has been partially completed.
lldb::CommandObjectSP(* LanguageRuntimeGetCommandObject)(CommandInterpreter &interpreter)
ObjectFile *(* ObjectFileCreateInstance)(const lldb::ModuleSP &module_sp, lldb::DataBufferSP data_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t file_offset, lldb::offset_t length)
DynamicLoader *(* DynamicLoaderCreateInstance)(Process *process, bool force)
lldb::StructuredDataPluginSP(* StructuredDataPluginCreateInstance)(Process &process)
lldb::JITLoaderSP(* JITLoaderCreateInstance)(Process *process, bool force)
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)()
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)
lldb::ABISP(* ABICreateInstance)(lldb::ProcessSP process_sp, const ArchSpec &arch)
lldb::CommandObjectSP(* ThreadTraceExportCommandCreator)(CommandInterpreter &interpreter)
lldb::InstrumentationRuntimeSP(* InstrumentationRuntimeCreateInstance)(const lldb::ProcessSP &process_sp)
ScriptLanguage
Script interpreter types.
std::shared_ptr< lldb_private::OptionValueProperties > OptionValuePropertiesSP
std::shared_ptr< lldb_private::ScriptInterpreter > ScriptInterpreterSP
std::shared_ptr< lldb_private::RegisterTypeBuilder > RegisterTypeBuilderSP
InstrumentationRuntimeGetType get_type_callback
InstrumentationRuntimeInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, InstrumentationRuntimeGetType get_type_callback)
LanguageRuntimeGetExceptionPrecondition precondition_callback
LanguageRuntimeInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, DebuggerInitializeCallback debugger_init_callback, LanguageRuntimeGetCommandObject command_callback, LanguageRuntimeGetExceptionPrecondition precondition_callback)
LanguageRuntimeGetCommandObject command_callback
ObjectFileGetModuleSpecifications get_module_specifications
ObjectContainerInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, ObjectContainerCreateMemoryInstance create_memory_callback, ObjectFileGetModuleSpecifications get_module_specifications)
ObjectContainerCreateMemoryInstance create_memory_callback
ObjectFileCreateMemoryInstance create_memory_callback
ObjectFileGetModuleSpecifications get_module_specifications
ObjectFileInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, ObjectFileCreateMemoryInstance create_memory_callback, ObjectFileGetModuleSpecifications get_module_specifications, ObjectFileSaveCore save_core, DebuggerInitializeCallback debugger_init_callback)
ObjectFileSaveCore save_core
PluginTermCallback plugin_term_callback
llvm::sys::DynamicLibrary library
PluginInitCallback plugin_init_callback
llvm::StringRef description
DebuggerInitializeCallback debugger_init_callback
ABICreateInstance create_callback
PluginInstance(llvm::StringRef name, llvm::StringRef description, Callback create_callback, DebuggerInitializeCallback debugger_init_callback=nullptr)
LanguageSet supported_languages
REPLInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, LanguageSet supported_languages)
RegisterTypeBuilderInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback)
lldb::ScriptLanguage language
ScriptInterpreterInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, lldb::ScriptLanguage language)
ScriptedInterfaceUsages usages
lldb::ScriptLanguage language
ScriptedInterfaceInstance(llvm::StringRef name, llvm::StringRef description, ScriptedInterfaceCreateInstance create_callback, lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
StructuredDataPluginInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, DebuggerInitializeCallback debugger_init_callback, StructuredDataFilterLaunchInfo filter_callback)
StructuredDataFilterLaunchInfo filter_callback
SymbolLocatorFindSymbolFileInBundle find_symbol_file_in_bundle
SymbolLocatorInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, SymbolLocatorLocateExecutableObjectFile locate_executable_object_file, SymbolLocatorLocateExecutableSymbolFile locate_executable_symbol_file, SymbolLocatorDownloadObjectAndSymbolFile download_object_symbol_file, SymbolLocatorFindSymbolFileInBundle find_symbol_file_in_bundle, DebuggerInitializeCallback debugger_init_callback)
SymbolLocatorLocateExecutableSymbolFile locate_executable_symbol_file
SymbolLocatorDownloadObjectAndSymbolFile download_object_symbol_file
SymbolLocatorLocateExecutableObjectFile locate_executable_object_file
ThreadTraceExportCommandCreator create_thread_trace_export_command
TraceExporterInstance(llvm::StringRef name, llvm::StringRef description, TraceExporterCreateInstance create_instance, ThreadTraceExportCommandCreator create_thread_trace_export_command)
TraceInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback_from_bundle, TraceCreateInstanceForLiveProcess create_callback_for_live_process, llvm::StringRef schema, DebuggerInitializeCallback debugger_init_callback)
TraceCreateInstanceForLiveProcess create_callback_for_live_process
LanguageSet supported_languages_for_expressions
LanguageSet supported_languages_for_types
TypeSystemInstance(llvm::StringRef name, llvm::StringRef description, CallbackType create_callback, LanguageSet supported_languages_for_types, LanguageSet supported_languages_for_expressions)
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
llvm::SmallBitVector bitvector