From f9d60f00e516358a33dc1b0e65a7ce6dd94cc188 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Tue, 29 Nov 2016 21:43:40 +0000 Subject: [PATCH] Add to llvm-objdump the -no-leading-headers option with the use of the -macho option. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In some cases the leading headers of the file name, archive member and architecture slice name in the output of lvm-objdump is not wanted so the tool’s output can be directly used by scripts. This matches the -X option of the Apple otool(1) program. rdar://28491674 llvm-svn: 288199 --- llvm/test/tools/llvm-objdump/X86/macho-dylib.test | 4 ++++ llvm/tools/llvm-objdump/MachODump.cpp | 17 +++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/llvm/test/tools/llvm-objdump/X86/macho-dylib.test b/llvm/test/tools/llvm-objdump/X86/macho-dylib.test index 0e31b8b..fd6ca80 100644 --- a/llvm/test/tools/llvm-objdump/X86/macho-dylib.test +++ b/llvm/test/tools/llvm-objdump/X86/macho-dylib.test @@ -1,6 +1,10 @@ RUN: llvm-objdump -m -dylibs-used %p/Inputs/hello.exe.macho-x86_64 | FileCheck %s -check-prefix=USED RUN: llvm-objdump -m -dylib-id %p/Inputs/dylibLoadKinds.macho-x86_64 | FileCheck %s -check-prefix=ID +RUN: llvm-objdump -m -dylib-id -no-leading-headers %p/Inputs/dylibLoadKinds.macho-x86_64 | FileCheck %s -check-prefix=IDNOHEADERS USED: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) ID: /usr/lib/foo.dylib + +IDNOHEADERS-NOT: dylibLoadKinds.macho-x86_64: +IDNOHEADERS: /usr/lib/foo.dylib diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 4e5241c..b196170 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -71,6 +71,9 @@ static cl::opt FullLeadingAddr("full-leading-addr", static cl::opt NoLeadingAddr("no-leading-addr", cl::desc("Print no leading address")); +static cl::opt NoLeadingHeaders("no-leading-headers", + cl::desc("Print no leading headers")); + cl::opt llvm::UniversalHeaders("universal-headers", cl::desc("Print Mach-O universal headers " "(requires -macho)")); @@ -1190,12 +1193,14 @@ static void ProcessMachO(StringRef Name, MachOObjectFile *MachOOF, if (Disassemble || PrivateHeaders || ExportsTrie || Rebase || Bind || SymbolTable || LazyBind || WeakBind || IndirectSymbols || DataInCode || LinkOptHints || DylibsUsed || DylibId || ObjcMetaData || (FilterSections.size() != 0)) { - outs() << Name; - if (!ArchiveMemberName.empty()) - outs() << '(' << ArchiveMemberName << ')'; - if (!ArchitectureName.empty()) - outs() << " (architecture " << ArchitectureName << ")"; - outs() << ":\n"; + if (!NoLeadingHeaders) { + outs() << Name; + if (!ArchiveMemberName.empty()) + outs() << '(' << ArchiveMemberName << ')'; + if (!ArchitectureName.empty()) + outs() << " (architecture " << ArchitectureName << ")"; + outs() << ":\n"; + } } // To use the report_error() form with an ArchiveName and FileName set // these up based on what is passed for Name and ArchiveMemberName. -- 2.7.4