Index: lldb/trunk/lit/Modules/build-id-case.yaml =================================================================== --- lldb/trunk/lit/Modules/build-id-case.yaml +++ lldb/trunk/lit/Modules/build-id-case.yaml @@ -2,7 +2,7 @@ # RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug # RUN: cd %t # RUN: llvm-objcopy --strip-all --add-gnu-debuglink=.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out -# RUN: lldb-test module-sections %t/stripped.out | FileCheck %s +# RUN: lldb-test object-file %t/stripped.out | FileCheck %s # CHECK: Name: .debug_frame # CHECK-NEXT: Type: dwarf-frame Index: lldb/trunk/lit/Modules/compressed-sections.yaml =================================================================== --- lldb/trunk/lit/Modules/compressed-sections.yaml +++ lldb/trunk/lit/Modules/compressed-sections.yaml @@ -1,6 +1,6 @@ # REQUIRES: zlib # RUN: yaml2obj %s > %t -# RUN: lldb-test module-sections --contents %t | FileCheck %s +# RUN: lldb-test object-file --contents %t | FileCheck %s --- !ELF FileHeader: Class: ELFCLASS32 Index: lldb/trunk/lit/Modules/elf-duplicate-section.yaml =================================================================== --- lldb/trunk/lit/Modules/elf-duplicate-section.yaml +++ lldb/trunk/lit/Modules/elf-duplicate-section.yaml @@ -2,7 +2,7 @@ # RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug # RUN: cd %t # RUN: llvm-objcopy --strip-all --add-gnu-debuglink=.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out -# RUN: lldb-test module-sections %t/stripped.out | FileCheck %s +# RUN: lldb-test object-file %t/stripped.out | FileCheck %s # Make sure that the debug_frame section is present only once. # CHECK: Name: .debug_frame Index: lldb/trunk/lit/Modules/elf-section-types.yaml =================================================================== --- lldb/trunk/lit/Modules/elf-section-types.yaml +++ lldb/trunk/lit/Modules/elf-section-types.yaml @@ -1,5 +1,5 @@ # RUN: yaml2obj %s > %t -# RUN: lldb-test module-sections %t | FileCheck %s +# RUN: lldb-test object-file %t | FileCheck %s # CHECK: Name: .text # CHECK-NEXT: Type: code Index: lldb/trunk/lit/Modules/lc_version_min.yaml =================================================================== --- lldb/trunk/lit/Modules/lc_version_min.yaml +++ lldb/trunk/lit/Modules/lc_version_min.yaml @@ -1,8 +1,8 @@ # RUN: yaml2obj %s > %t.out -# RUN: lldb-test symbols %t.out | FileCheck %s +# RUN: lldb-test object-file %t.out | FileCheck %s # Test that the deployment target is parsed from the load commands. -# CHECK: x86_64-apple-macosx10.9.0 +# CHECK: Architecture: x86_64-apple-macosx10.9.0 --- !mach-o FileHeader: magic: 0xFEEDFACF Index: lldb/trunk/lit/Modules/short-build-id.yaml =================================================================== --- lldb/trunk/lit/Modules/short-build-id.yaml +++ lldb/trunk/lit/Modules/short-build-id.yaml @@ -0,0 +1,26 @@ +# RUN: yaml2obj %s >%t +# RUN: lldb-test object-file %t | FileCheck %s + +# CHECK: UUID: 333059A4-3CC3-D5F9 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 + Entry: 0x0000000000201000 +Sections: + - Name: .note.gnu.build-id + Type: SHT_NOTE + Flags: [ SHF_ALLOC ] + Address: 0x0000000000200190 + AddressAlign: 0x0000000000000004 + Content: 040000000800000003000000474E5500333059A43CC3D5F9 + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x0000000000201000 + AddressAlign: 0x0000000000000004 + Content: '' +... Index: lldb/trunk/tools/lldb-test/lldb-test.cpp =================================================================== --- lldb/trunk/tools/lldb-test/lldb-test.cpp +++ lldb/trunk/tools/lldb-test/lldb-test.cpp @@ -51,14 +51,15 @@ namespace opts { static cl::SubCommand BreakpointSubcommand("breakpoints", "Test breakpoint resolution"); -cl::SubCommand ModuleSubcommand("module-sections", - "Display LLDB Module Information"); +cl::SubCommand ObjectFileSubcommand("object-file", + "Display LLDB object file information"); cl::SubCommand SymbolsSubcommand("symbols", "Dump symbols for an object file"); cl::SubCommand IRMemoryMapSubcommand("ir-memory-map", "Test IRMemoryMap"); cl::opt Log("log", cl::desc("Path to a log file"), cl::init(""), cl::sub(BreakpointSubcommand), - cl::sub(ModuleSubcommand), cl::sub(SymbolsSubcommand), + cl::sub(ObjectFileSubcommand), + cl::sub(SymbolsSubcommand), cl::sub(IRMemoryMapSubcommand)); /// Create a target using the file pointed to by \p Filename, or abort. @@ -85,13 +86,14 @@ static int evaluateBreakpoints(Debugger &Dbg); } // namespace breakpoint -namespace module { +namespace object { cl::opt SectionContents("contents", cl::desc("Dump each section's contents"), - cl::sub(ModuleSubcommand)); + cl::sub(ObjectFileSubcommand)); cl::list InputFilenames(cl::Positional, cl::desc(""), - cl::OneOrMore, cl::sub(ModuleSubcommand)); -} // namespace module + cl::OneOrMore, + cl::sub(ObjectFileSubcommand)); +} // namespace object namespace symbols { static cl::list InputFilenames(cl::Positional, @@ -616,11 +618,11 @@ return HadErrors; } -static int dumpModules(Debugger &Dbg) { +static int dumpObjectFiles(Debugger &Dbg) { LinePrinter Printer(4, llvm::outs()); int HadErrors = 0; - for (const auto &File : opts::module::InputFilenames) { + for (const auto &File : opts::object::InputFilenames) { ModuleSpec Spec{FileSpec(File, false)}; auto ModulePtr = std::make_shared(Spec); @@ -634,6 +636,10 @@ continue; } + Printer.formatLine("Architecture: {0}", + ModulePtr->GetArchitecture().GetTriple().getTriple()); + Printer.formatLine("UUID: {0}", ModulePtr->GetUUID().GetAsString()); + size_t Count = Sections->GetNumSections(0); Printer.formatLine("Showing {0} sections", Count); for (size_t I = 0; I < Count; ++I) { @@ -646,7 +652,7 @@ Printer.formatLine("VM size: {0}", S->GetByteSize()); Printer.formatLine("File size: {0}", S->GetFileSize()); - if (opts::module::SectionContents) { + if (opts::object::SectionContents) { DataExtractor Data; S->GetSectionData(Data); ArrayRef Bytes = {Data.GetDataStart(), Data.GetDataEnd()}; @@ -841,8 +847,8 @@ if (opts::BreakpointSubcommand) return opts::breakpoint::evaluateBreakpoints(*Dbg); - if (opts::ModuleSubcommand) - return dumpModules(*Dbg); + if (opts::ObjectFileSubcommand) + return dumpObjectFiles(*Dbg); if (opts::SymbolsSubcommand) return opts::symbols::dumpSymbols(*Dbg); if (opts::IRMemoryMapSubcommand)