diff options
author | Kevin Enderby <enderby@apple.com> | 2015-04-30 20:30:42 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2015-04-30 20:30:42 +0000 |
commit | 8972e48bc8431534ed9be2a72423740a624825e9 (patch) | |
tree | 0e7ef9d72fab1767babd2b92ce93e5501a864030 /llvm | |
parent | 07920d8457a43b789f1fe29e2de7810e734657ff (diff) | |
download | bcm5719-llvm-8972e48bc8431534ed9be2a72423740a624825e9.tar.gz bcm5719-llvm-8972e48bc8431534ed9be2a72423740a624825e9.zip |
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.
llvm-svn: 236252
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/tools/llvm-objdump/X86/macho-archive-headers.test | 18 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 14 |
2 files changed, 28 insertions, 4 deletions
diff --git a/llvm/test/tools/llvm-objdump/X86/macho-archive-headers.test b/llvm/test/tools/llvm-objdump/X86/macho-archive-headers.test index 3d9043e671a..1253b46529b 100644 --- a/llvm/test/tools/llvm-objdump/X86/macho-archive-headers.test +++ b/llvm/test/tools/llvm-objdump/X86/macho-archive-headers.test @@ -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 {{.*}} hello.o 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 diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 4fa6495f87f..b173ce92a0a 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -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 Filename) { 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 Filename) { 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 Filename) { 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 Filename) { 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(); |