Author: zturner Date: Fri Dec 1 16:15:29 2017 New Revision: 319599 URL: http://llvm.org/viewvc/llvm-project?rev=319599&view=rev Log: Add a symbols subcommand to lldb-test.
Differential Revision: https://reviews.llvm.org/D40745 Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp lldb/trunk/tools/lldb-test/lldb-test.cpp Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=319599&r1=319598&r2=319599&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Fri Dec 1 16:15:29 2017 @@ -2764,6 +2764,14 @@ unsigned ObjectFileELF::ApplyRelocations case R_386_32: case R_386_PC32: default: + // FIXME: This asserts with this input: + // + // foo.cpp + // int main(int argc, char **argv) { return 0; } + // + // clang++.exe --target=i686-unknown-linux-gnu -g -c foo.cpp -o foo.o + // + // and running this on the foo.o module. assert(false && "unexpected relocation type"); } } else { Modified: lldb/trunk/tools/lldb-test/lldb-test.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-test/lldb-test.cpp?rev=319599&r1=319598&r2=319599&view=diff ============================================================================== --- lldb/trunk/tools/lldb-test/lldb-test.cpp (original) +++ lldb/trunk/tools/lldb-test/lldb-test.cpp Fri Dec 1 16:15:29 2017 @@ -10,11 +10,15 @@ #include "FormatUtil.h" #include "SystemInitializerTest.h" +#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" #include "lldb/Core/Debugger.h" #include "lldb/Core/Module.h" #include "lldb/Core/Section.h" #include "lldb/Initialization/SystemLifetimeManager.h" +#include "lldb/Symbol/ClangASTContext.h" +#include "lldb/Symbol/ClangASTImporter.h" #include "lldb/Utility/DataExtractor.h" +#include "lldb/Utility/StreamString.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/CommandLine.h" @@ -30,6 +34,7 @@ using namespace llvm; namespace opts { cl::SubCommand ModuleSubcommand("module-sections", "Display LLDB Module Information"); +cl::SubCommand SymbolsSubcommand("symbols", "Dump symbols for an object file"); namespace module { cl::opt<bool> SectionContents("contents", @@ -38,10 +43,30 @@ cl::opt<bool> SectionContents("contents" cl::list<std::string> InputFilenames(cl::Positional, cl::desc("<input files>"), cl::OneOrMore, cl::sub(ModuleSubcommand)); } // namespace module + +namespace symbols { +cl::list<std::string> InputFilenames(cl::Positional, cl::desc("<input files>"), + cl::OneOrMore, cl::sub(SymbolsSubcommand)); +} } // namespace opts static llvm::ManagedStatic<SystemLifetimeManager> DebuggerLifetime; +static void dumpSymbols(Debugger &Dbg) { + for (const auto &File : opts::symbols::InputFilenames) { + ModuleSpec Spec{FileSpec(File, false)}; + Spec.GetSymbolFileSpec().SetFile(File, false); + + auto ModulePtr = std::make_shared<lldb_private::Module>(Spec); + + StreamString Stream; + ModulePtr->ParseAllDebugSymbols(); + ModulePtr->Dump(&Stream); + llvm::outs() << Stream.GetData() << "\n"; + llvm::outs().flush(); + } +} + static void dumpModules(Debugger &Dbg) { LinePrinter Printer(4, llvm::outs()); @@ -49,7 +74,7 @@ static void dumpModules(Debugger &Dbg) { ModuleSpec Spec{FileSpec(File, false)}; Spec.GetSymbolFileSpec().SetFile(File, false); - auto ModulePtr = std::make_shared<Module>(Spec); + auto ModulePtr = std::make_shared<lldb_private::Module>(Spec); SectionList *Sections = ModulePtr->GetSectionList(); if (!Sections) { llvm::errs() << "Could not load sections for module " << File << "\n"; @@ -92,6 +117,8 @@ int main(int argc, const char *argv[]) { if (opts::ModuleSubcommand) dumpModules(*Dbg); + else if (opts::SymbolsSubcommand) + dumpSymbols(*Dbg); DebuggerLifetime->Terminate(); return 0; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits