From: Kevin Enderby Date: Thu, 22 Jun 2017 19:50:56 +0000 (+0000) Subject: Updated llvm-objdump for arm64 Mach-O MH_KEXT_BUNDLE file types so X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf84e2cbee8a58244f8863c849d25011e243954e;p=llvm 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 --- diff --git a/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64 new file mode 100755 index 00000000000..4a21c2e3840 Binary files /dev/null and b/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64 differ diff --git a/test/tools/llvm-objdump/AArch64/macho-kextbundle.test b/test/tools/llvm-objdump/AArch64/macho-kextbundle.test new file mode 100644 index 00000000000..89194554e9c --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/macho-kextbundle.test @@ -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 diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index ec4c44a2665..05c2c3f7c4c 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -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)