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

Kevin Enderby via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 22 12:50:57 PDT 2017


Author: enderby
Date: Thu Jun 22 14:50:56 2017
New Revision: 306046

URL: http://llvm.org/viewvc/llvm-project?rev=306046&view=rev
Log:
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

Added:
    llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64   (with props)
    llvm/trunk/test/tools/llvm-objdump/AArch64/macho-kextbundle.test
Modified:
    llvm/trunk/tools/llvm-objdump/MachODump.cpp

Added: llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64?rev=306046&view=auto
==============================================================================
Binary file - no diff available.

Propchange: llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64
------------------------------------------------------------------------------
    svn:executable = *

Propchange: llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: llvm/trunk/test/tools/llvm-objdump/AArch64/macho-kextbundle.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/AArch64/macho-kextbundle.test?rev=306046&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/AArch64/macho-kextbundle.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/AArch64/macho-kextbundle.test Thu Jun 22 14:50:56 2017
@@ -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

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=306046&r1=306045&r2=306046&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu Jun 22 14:50:56 2017
@@ -1224,8 +1224,13 @@ static void ProcessMachO(StringRef Name,
     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)




More information about the llvm-commits mailing list