llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Ebuka Ezike (da-viper) <details> <summary>Changes</summary> continuation of [#<!-- -->142684](https://github.com/llvm/llvm-project/pull/142684) to show plugin names. >From issue [#<!-- -->14258](https://github.com/llvm/llvm-project/issues/142581) --- Full diff: https://github.com/llvm/llvm-project/pull/143126.diff 3 Files Affected: - (modified) lldb/include/lldb/Core/PluginManager.h (+2) - (modified) lldb/source/Core/PluginManager.cpp (+10) - (modified) lldb/source/Symbol/SaveCoreOptions.cpp (+20-2) ``````````diff diff --git a/lldb/include/lldb/Core/PluginManager.h b/lldb/include/lldb/Core/PluginManager.h index e2f709ecd2ff7..7996dc3fdf3f3 100644 --- a/lldb/include/lldb/Core/PluginManager.h +++ b/lldb/include/lldb/Core/PluginManager.h @@ -212,6 +212,8 @@ class PluginManager { static Status SaveCore(const lldb::ProcessSP &process_sp, lldb_private::SaveCoreOptions &core_options); + static llvm::SmallVector<llvm::StringRef> GetSaveCorePluginNames(); + // ObjectContainer static bool RegisterPlugin( llvm::StringRef name, llvm::StringRef description, diff --git a/lldb/source/Core/PluginManager.cpp b/lldb/source/Core/PluginManager.cpp index de815e6308838..d02e3030081dc 100644 --- a/lldb/source/Core/PluginManager.cpp +++ b/lldb/source/Core/PluginManager.cpp @@ -800,6 +800,16 @@ Status PluginManager::SaveCore(const lldb::ProcessSP &process_sp, return error; } +llvm::SmallVector<llvm::StringRef> PluginManager::GetSaveCorePluginNames() { + llvm::SmallVector<llvm::StringRef> plugin_names; + auto instances = GetObjectFileInstances().GetSnapshot(); + for (auto &instance : instances) { + if (instance.save_core) + plugin_names.emplace_back(instance.name); + } + return plugin_names; +} + #pragma mark ObjectContainer struct ObjectContainerInstance diff --git a/lldb/source/Symbol/SaveCoreOptions.cpp b/lldb/source/Symbol/SaveCoreOptions.cpp index d884b00a47b00..c1c85571c8a78 100644 --- a/lldb/source/Symbol/SaveCoreOptions.cpp +++ b/lldb/source/Symbol/SaveCoreOptions.cpp @@ -22,8 +22,26 @@ Status SaveCoreOptions::SetPluginName(const char *name) { } if (!PluginManager::IsRegisteredObjectFilePluginName(name)) { - return Status::FromErrorStringWithFormat( - "plugin name '%s' is not a valid ObjectFile plugin name", name); + StreamString stream; + stream.Printf("plugin name '%s' is not a valid ObjectFile plugin name.", + name); + + llvm::SmallVector<llvm::StringRef> plugin_names = + PluginManager::GetSaveCorePluginNames(); + if (!plugin_names.empty()) { + stream.PutCString(" valid values are: "); + bool is_first = true; + for (llvm::StringRef plugin_name : plugin_names) { + llvm::StringRef delimiter = ", "; + if (is_first) { + delimiter = ""; + is_first = false; + } + stream.Printf("%s\"%s\"", delimiter.data(), plugin_name.data()); + } + stream.PutChar('.'); + } + return Status(stream.GetString().str()); } m_plugin_name = name; `````````` </details> https://github.com/llvm/llvm-project/pull/143126 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits