diff options
author | Ebuka Ezike <yerimyah1@gmail.com> | 2025-06-23 18:02:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-23 18:02:58 +0100 |
commit | 8d83d046376e7b57c1aa0c5bdd8958b21bbaf0ca (patch) | |
tree | b945c171f94f14e8f6316eefe44f1f1034334587 /lldb/source/Commands/CommandObjectProcess.cpp | |
parent | 1bc63265afbe007b9ec023e35a10fa0a8143e95b (diff) | |
download | llvm-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.cpp | 24 |
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: |