[Lldb-commits] [lldb] [LLDB][Part 1] Support enabling/disabling InstrumentationRuntime plugins in an debug session (PR #193328)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 29 15:52:44 PDT 2026
================
@@ -76,11 +78,57 @@ struct RegisteredPluginInfo {
// The plugin namespace here is used so we can operate on all the plugins
// of a given type so it is easy to enable or disable them as a group.
using GetPluginInfo = std::function<llvm::SmallVector<RegisteredPluginInfo>()>;
-using SetPluginEnabled = std::function<bool(llvm::StringRef, bool)>;
-struct PluginNamespace {
+using SetPluginEnabledGlobalDomain = std::function<bool(llvm::StringRef, bool)>;
+using SetPluginEnabledAllDomains = std::function<llvm::Error(
+ llvm::StringRef, bool, Debugger &, lldb::PluginDomainKind)>;
+class PluginNamespace {
+public:
+ static constexpr uint8_t kAllDomains = lldb::ePluginDomainKindGlobal |
+ lldb::ePluginDomainKindDebugger |
+ lldb::ePluginDomainKindTarget;
+
+ /// Plugin that only supports enable/disable in the global domain
+ PluginNamespace(llvm::StringRef name, GetPluginInfo get_info,
+ SetPluginEnabledGlobalDomain set_enabled)
+ : name(name), get_info(get_info),
+ supported_domains(lldb::ePluginDomainKindGlobal),
+ set_enabled_fn(set_enabled) {}
+
+ /// Plugin that supports enable/disable in all domains.
+ PluginNamespace(llvm::StringRef name, GetPluginInfo get_info,
+ SetPluginEnabledAllDomains set_enabled)
+ : name(name), get_info(get_info), supported_domains(kAllDomains),
+ set_enabled_fn(set_enabled) {}
+
+ std::optional<SetPluginEnabledGlobalDomain> GetSetEnabledGlobalFn() const {
+ if (SupportsOnlyDomain(lldb::ePluginDomainKindGlobal))
+ return std::get<SetPluginEnabledGlobalDomain>(set_enabled_fn);
+ return std::nullopt;
+ }
+
+ std::optional<SetPluginEnabledAllDomains> GetSetEnabledAllDomainsFn() const {
+ if (supported_domains == kAllDomains)
+ return std::get<SetPluginEnabledAllDomains>(set_enabled_fn);
+ return std::nullopt;
+ }
+
+ bool SupportsDomain(lldb::PluginDomainKind domain) const {
+ assert(llvm::has_single_bit((uint8_t)domain));
----------------
JDevlieghere wrote:
Let's replace the C-style casts with `static_cast` (there's a few more instances in this PR).
```suggestion
assert(llvm::has_single_bit(static_cast<uint8_t>(domain)));
```
https://github.com/llvm/llvm-project/pull/193328
More information about the lldb-commits
mailing list