aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectProcess.cpp
diff options
context:
space:
mode:
authorEbuka Ezike <yerimyah1@gmail.com>2025-06-23 18:02:58 +0100
committerGitHub <noreply@github.com>2025-06-23 18:02:58 +0100
commit8d83d046376e7b57c1aa0c5bdd8958b21bbaf0ca (patch)
treeb945c171f94f14e8f6316eefe44f1f1034334587 /lldb/source/Commands/CommandObjectProcess.cpp
parent1bc63265afbe007b9ec023e35a10fa0a8143e95b (diff)
downloadllvm-8d83d046376e7b57c1aa0c5bdd8958b21bbaf0ca.zip
llvm-8d83d046376e7b57c1aa0c5bdd8958b21bbaf0ca.tar.gz
llvm-8d83d046376e7b57c1aa0c5bdd8958b21bbaf0ca.tar.bz2
[lldb] add plugin names to process save-core error output. (#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)
Diffstat (limited to 'lldb/source/Commands/CommandObjectProcess.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectProcess.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp
index b1f243c..0a17442 100644
--- a/lldb/source/Commands/CommandObjectProcess.cpp
+++ b/lldb/source/Commands/CommandObjectProcess.cpp
@@ -1281,7 +1281,27 @@ public:
~CommandOptions() override = default;
llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
- return llvm::ArrayRef(g_process_save_core_options);
+ if (!m_opt_def.empty())
+ return llvm::ArrayRef(m_opt_def);
+
+ auto orig = llvm::ArrayRef(g_process_save_core_options);
+ m_opt_def.resize(orig.size());
+ llvm::copy(g_process_save_core_options, m_opt_def.data());
+ for (OptionDefinition &value : m_opt_def) {
+ llvm::StringRef opt_name = value.long_option;
+ if (opt_name != "plugin-name")
+ continue;
+
+ std::vector<llvm::StringRef> plugin_names =
+ PluginManager::GetSaveCorePluginNames();
+ m_plugin_enums.resize(plugin_names.size());
+ for (auto [num, val] : llvm::zip(plugin_names, m_plugin_enums)) {
+ val.string_value = num.data();
+ }
+ value.enum_values = llvm::ArrayRef(m_plugin_enums);
+ break;
+ }
+ return llvm::ArrayRef(m_opt_def);
}
Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
@@ -1312,6 +1332,8 @@ public:
// Instance variables to hold the values for command options.
SaveCoreOptions m_core_dump_options;
+ llvm::SmallVector<OptionEnumValueElement> m_plugin_enums;
+ std::vector<OptionDefinition> m_opt_def;
};
protected: