[llvm] r236252 - For llvm-objdump, with the -archive-headers and -macho options, use the -non-verbose

Kevin Enderby enderby at apple.com
Thu Apr 30 13:30:43 PDT 2015


Author: enderby
Date: Thu Apr 30 15:30:42 2015
New Revision: 236252

URL: http://llvm.org/viewvc/llvm-project?rev=236252&view=rev
Log:
For llvm-objdump, with the -archive-headers and -macho options, use the -non-verbose
option to print the archive headers using raw numeric values.  Also add the -archive-member-offsets
for use with these to also trigger printing of the offset of the archive member from the start
of the archive.

Modified:
    llvm/trunk/test/tools/llvm-objdump/X86/macho-archive-headers.test
    llvm/trunk/tools/llvm-objdump/MachODump.cpp

Modified: llvm/trunk/test/tools/llvm-objdump/X86/macho-archive-headers.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/macho-archive-headers.test?rev=236252&r1=236251&r2=236252&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/macho-archive-headers.test (original)
+++ llvm/trunk/test/tools/llvm-objdump/X86/macho-archive-headers.test Thu Apr 30 15:30:42 2015
@@ -1,5 +1,9 @@
 RUN: llvm-objdump %p/Inputs/macho-universal-archive.x86_64.i386 -macho -archive-headers -arch all \
 RUN: | FileCheck %s
+RUN: llvm-objdump %p/Inputs/macho-universal-archive.x86_64.i386 -macho -archive-headers -arch all -archive-member-offsets \
+RUN: | FileCheck %s -check-prefix=OFFSETS
+RUN: llvm-objdump %p/Inputs/macho-universal-archive.x86_64.i386 -macho -archive-headers -arch all -non-verbose \
+RUN: | FileCheck %s -check-prefix=NON-VERBOSE
 
 # Note the date as printed by ctime(3) is time zone dependent and not checked.
 CHECK: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture x86_64)
@@ -8,3 +12,17 @@ CHECK: -rw-r--r--124/0     860 {{.*}} he
 CHECK: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture i386)
 CHECK: -rw-r--r--124/11     60 {{.*}} __.SYMDEF SORTED
 CHECK: -rw-r--r--124/0     388 {{.*}} foo.o
+
+OFFSETS: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture x86_64)
+OFFSETS: 8	-rw-r--r--124/11     44 {{.*}} __.SYMDEF SORTED
+OFFSETS: 112	-rw-r--r--124/0     860 {{.*}} hello.o
+OFFSETS: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture i386)
+OFFSETS: 8	-rw-r--r--124/11     60 {{.*}} __.SYMDEF SORTED
+OFFSETS: 128	-rw-r--r--124/0     388 {{.*}} foo.o
+
+NON-VERBOSE: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture x86_64)
+NON-VERBOSE: 0100644 124/11     44 1399572709 #1/20
+NON-VERBOSE: 0100644 124/0     860 1399501499 #1/12
+NON-VERBOSE: Archive : {{.*}}/macho-universal-archive.x86_64.i386 (architecture i386)
+NON-VERBOSE: 0100644 124/11     60 1399572709 #1/20
+NON-VERBOSE: 0100644 124/0     388 1399572697 #1/12

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=236252&r1=236251&r2=236252&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu Apr 30 15:30:42 2015
@@ -81,6 +81,12 @@ cl::opt<bool>
                                   "(requires -macho)"));
 
 cl::opt<bool>
+    ArchiveMemberOffsets("archive-member-offsets",
+                         cl::desc("Print the offset to each archive member for "
+                                  "Mach-O archives (requires -macho and "
+                                  "-archive-headers)"));
+
+cl::opt<bool>
     llvm::IndirectSymbols("indirect-symbols",
                           cl::desc("Print indirect symbol table for Mach-O "
                                    "objects (requires -macho)"));
@@ -1559,7 +1565,7 @@ void llvm::ParseInputMachO(StringRef Fil
   if (Archive *A = dyn_cast<Archive>(&Bin)) {
     outs() << "Archive : " << Filename << "\n";
     if (ArchiveHeaders)
-      printArchiveHeaders(A, true, false);
+      printArchiveHeaders(A, !NonVerbose, ArchiveMemberOffsets);
     for (Archive::child_iterator I = A->child_begin(), E = A->child_end();
          I != E; ++I) {
       ErrorOr<std::unique_ptr<Binary>> ChildOrErr = I->getAsBinary();
@@ -1606,7 +1612,7 @@ void llvm::ParseInputMachO(StringRef Fil
                 outs() << " (architecture " << ArchitectureName << ")";
               outs() << "\n";
               if (ArchiveHeaders)
-                printArchiveHeaders(A.get(), true, false);
+                printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets);
               for (Archive::child_iterator AI = A->child_begin(),
                                            AE = A->child_end();
                    AI != AE; ++AI) {
@@ -1648,7 +1654,7 @@ void llvm::ParseInputMachO(StringRef Fil
             std::unique_ptr<Archive> &A = *AOrErr;
             outs() << "Archive : " << Filename << "\n";
             if (ArchiveHeaders)
-              printArchiveHeaders(A.get(), true, false);
+              printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets);
             for (Archive::child_iterator AI = A->child_begin(),
                                          AE = A->child_end();
                  AI != AE; ++AI) {
@@ -1685,7 +1691,7 @@ void llvm::ParseInputMachO(StringRef Fil
           outs() << " (architecture " << ArchitectureName << ")";
         outs() << "\n";
         if (ArchiveHeaders)
-          printArchiveHeaders(A.get(), true, false);
+          printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets);
         for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end();
              AI != AE; ++AI) {
           ErrorOr<std::unique_ptr<Binary>> ChildOrErr = AI->getAsBinary();





More information about the llvm-commits mailing list