From eb6d110c1d0d0089c4da4b4ca9cd64460aa142f3 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Mon, 20 Jun 2016 22:16:18 +0000 Subject: Add support for Darwin’s 64-bit universal files with 64-bit offsets and sizes for the objects. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Darwin added support in its Xcode 8.0 tools (released in the beta) for universal files where offsets and sizes for the objects are 64-bits to allow support for objects contained in universal files to be larger then 4gb. The change is very straight forward. There is a new magic number that differs by one bit, much like the 64-bit Mach-O files. Then there is a new structure that follow the fat_header that has the same layout but with the offset and size fields using 64-bit values instead of 32-bit values. rdar://26899493 llvm-svn: 273207 --- llvm/test/Object/nm-universal-binary.test | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'llvm/test/Object/nm-universal-binary.test') diff --git a/llvm/test/Object/nm-universal-binary.test b/llvm/test/Object/nm-universal-binary.test index 0cced1829c3..1fce0eea645 100644 --- a/llvm/test/Object/nm-universal-binary.test +++ b/llvm/test/Object/nm-universal-binary.test @@ -1,5 +1,7 @@ RUN: llvm-nm -arch all %p/Inputs/macho-universal.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ +RUN: llvm-nm -arch all %p/Inputs/macho-universal64.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-64-OBJ RUN: llvm-nm -arch x86_64 %p/Inputs/macho-universal.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ-x86_64 RUN: not llvm-nm -arch armv7m %p/Inputs/macho-universal.x86_64.i386 2>&1 \ @@ -8,6 +10,8 @@ RUN: not llvm-nm -arch foobar %p/Inputs/macho-universal.x86_64.i386 2>&1 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ-foobar RUN: llvm-nm -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-AR +RUN: llvm-nm -arch all %p/Inputs/macho-universal64-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-64-AR RUN: llvm-nm -arch i386 %p/Inputs/macho-universal-archive.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-AR-i386 RUN: llvm-nm -o -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ @@ -18,6 +22,11 @@ CHECK-OBJ: 0000000100000f60 T _main CHECK-OBJ: macho-universal.x86_64.i386 (for architecture i386): CHECK-OBJ: 00001fa0 T _main +CHECK-64-OBJ: macho-universal64.x86_64.i386 (for architecture x86_64): +CHECK-64-OBJ: 0000000100000f60 T _main +CHECK-64-OBJ: macho-universal64.x86_64.i386 (for architecture i386): +CHECK-64-OBJ: 00001fa0 T _main + CHECK-OBJ-x86_64: 0000000100000000 T __mh_execute_header CHECK-OBJ-x86_64: 0000000100000f60 T _main CHECK-OBJ-x86_64: U dyld_stub_binder @@ -38,6 +47,16 @@ CHECK-AR: macho-universal-archive.x86_64.i386(foo.o) (for architecture i386): CHECK-AR: 00000008 D _bar CHECK-AR: 00000000 T _foo +CHECK-64-AR: macho-universal64-archive.x86_64.i386(foo.o) (for architecture i386): +CHECK-64-AR: 00000008 D _bar +CHECK-64-AR: 00000000 T _foo +CHECK-64-AR: macho-universal64-archive.x86_64.i386(hello.o) (for architecture x86_64): +CHECK-64-AR: 0000000000000068 s EH_frame0 +CHECK-64-AR: 000000000000003b s L_.str +CHECK-64-AR: 0000000000000000 T _main +CHECK-64-AR: 0000000000000080 S _main.eh +CHECK-64-AR: U _printf + CHECK-AR-i386: macho-universal-archive.x86_64.i386(foo.o): CHECK-AR-i386: 00000008 D _bar CHECK-AR-i386: 00000000 T _foo -- cgit v1.2.3