https://github.com/da-viper created https://github.com/llvm/llvm-project/pull/143126
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) >From 95c61d6a917060d7b3a2bc554575eb6a1086ed6e Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <yerimy...@gmail.com> Date: Fri, 6 Jun 2025 13:15:41 +0100 Subject: [PATCH] [lldb] add plugin names to process save-core error output. --- lldb/include/lldb/Core/PluginManager.h | 2 ++ lldb/source/Core/PluginManager.cpp | 10 ++++++++++ lldb/source/Symbol/SaveCoreOptions.cpp | 22 ++++++++++++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) 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; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits