Updated llvm-objdump for arm64 Mach-O MH_KEXT_BUNDLE file types so

it symbolically disassembles the __text section from the
__TEXT_EXEC segment not the usual __TEXT segment by default.

rdar://30590208


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306046 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2017-06-22 19:50:56 +00:00
parent e6b75a9bee
commit bf84e2cbee
3 changed files with 16 additions and 2 deletions

View File

@ -0,0 +1,9 @@
RUN: llvm-objdump -d -m -no-show-raw-insn %p/Inputs/kextbundle.macho-aarch64 | FileCheck %s
CHECK: (__TEXT_EXEC,__text) section
CHECK: _foo:
CHECK: 4000: stp x29, x30, [sp, #-16]!
CHECK: 4004: mov x29, sp
CHECK: 4008: bl _bar.stub
CHECK: 400c: ldp x29, x30, [sp], #16
CHECK: 4010: ret

View File

@ -1224,8 +1224,13 @@ static void ProcessMachO(StringRef Name, MachOObjectFile *MachOOF,
if (Error Err = MachOOF->checkSymbolTable())
report_error(ArchiveName, FileName, std::move(Err), ArchitectureName);
if (Disassemble)
DisassembleMachO(FileName, MachOOF, "__TEXT", "__text");
if (Disassemble) {
if (MachOOF->getHeader().filetype == MachO::MH_KEXT_BUNDLE &&
MachOOF->getHeader().cputype == MachO::CPU_TYPE_ARM64)
DisassembleMachO(FileName, MachOOF, "__TEXT_EXEC", "__text");
else
DisassembleMachO(FileName, MachOOF, "__TEXT", "__text");
}
if (IndirectSymbols)
PrintIndirectSymbols(MachOOF, !NonVerbose);
if (DataInCode)