diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-11-07 15:47:01 +0100 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-11-07 15:47:01 +0100 |
commit | 87bc320b510e91a1a71aa8a154c585db65579628 (patch) | |
tree | c121e533a5190be9e7a1413ff542c2d5b4431784 /lldb/source/Commands/CommandObjectTarget.cpp | |
parent | e58985a5ec355095b5fbdfb659de181efddef2fd (diff) | |
download | llvm-87bc320b510e91a1a71aa8a154c585db65579628.zip llvm-87bc320b510e91a1a71aa8a154c585db65579628.tar.gz llvm-87bc320b510e91a1a71aa8a154c585db65579628.tar.bz2 |
[lldb] Add -m option to 'target modules dump symtab' to disable demangling
Summary: This option was added downstream in swift-lldb. This upstreams this option as it seems useful and also adds the missing tests.
Reviewers: #lldb, kwk, labath
Reviewed By: kwk, labath
Subscribers: labath, kwk, abidh, JDevlieghere, lldb-commits
Tags: #lldb, #upstreaming_lldb_s_downstream_patches
Differential Revision: https://reviews.llvm.org/D69944
Diffstat (limited to 'lldb/source/Commands/CommandObjectTarget.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectTarget.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index a63caab..64e7e69 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -1420,12 +1420,13 @@ static size_t DumpModuleObjfileHeaders(Stream &strm, ModuleList &module_list) { } static void DumpModuleSymtab(CommandInterpreter &interpreter, Stream &strm, - Module *module, SortOrder sort_order) { + Module *module, SortOrder sort_order, + Mangled::NamePreference name_preference) { if (!module) return; if (Symtab *symtab = module->GetSymtab()) symtab->Dump(&strm, interpreter.GetExecutionContext().GetTargetPtr(), - sort_order); + sort_order, name_preference); } static void DumpModuleSections(CommandInterpreter &interpreter, Stream &strm, @@ -1970,6 +1971,11 @@ public: const int short_option = m_getopt_table[option_idx].val; switch (short_option) { + case 'm': + m_prefer_mangled.SetCurrentValue(true); + m_prefer_mangled.SetOptionWasSet(); + break; + case 's': m_sort_order = (SortOrder)OptionArgParser::ToOptionEnum( option_arg, GetDefinitions()[option_idx].enum_values, @@ -1984,6 +1990,7 @@ public: void OptionParsingStarting(ExecutionContext *execution_context) override { m_sort_order = eSortOrderNone; + m_prefer_mangled.Clear(); } llvm::ArrayRef<OptionDefinition> GetDefinitions() override { @@ -1991,12 +1998,16 @@ public: } SortOrder m_sort_order; + OptionValueBoolean m_prefer_mangled = {false, false}; }; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { Target *target = &GetSelectedTarget(); uint32_t num_dumped = 0; + Mangled::NamePreference name_preference = + (m_options.m_prefer_mangled ? Mangled::ePreferMangled + : Mangled::ePreferDemangled); uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); @@ -2022,7 +2033,7 @@ protected: DumpModuleSymtab( m_interpreter, result.GetOutputStream(), target->GetImages().GetModulePointerAtIndexUnlocked(image_idx), - m_options.m_sort_order); + m_options.m_sort_order, name_preference); } } else { result.AppendError("the target has no associated executable images"); @@ -2050,7 +2061,7 @@ protected: break; num_dumped++; DumpModuleSymtab(m_interpreter, result.GetOutputStream(), module, - m_options.m_sort_order); + m_options.m_sort_order, name_preference); } } } else |