forked from OSchip/llvm-project
Add to llvm-objdump the -no-leading-headers option with the use of the -macho option.
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
This commit is contained in:
parent
9303efb0af
commit
f9d60f00e5
|
@ -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
|
||||
|
|
|
@ -71,6 +71,9 @@ static cl::opt<bool> FullLeadingAddr("full-leading-addr",
|
|||
static cl::opt<bool> NoLeadingAddr("no-leading-addr",
|
||||
cl::desc("Print no leading address"));
|
||||
|
||||
static cl::opt<bool> NoLeadingHeaders("no-leading-headers",
|
||||
cl::desc("Print no leading headers"));
|
||||
|
||||
cl::opt<bool> 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.
|
||||
|
|
Loading…
Reference in New Issue