1; REQUIRES: x86, xar 2; RUN: rm -rf %t; split-file %s %t 3; RUN: opt -module-summary %t/test.ll -o %t/test.o 4; RUN: opt -module-summary %t/foo.ll -o %t/foo.o 5; RUN: %lld -lSystem -bitcode_bundle %t/test.o %t/foo.o -o %t/test 6; RUN: llvm-objdump --macho --section=__LLVM,__bundle %t/test | FileCheck %s 7; RUN: llvm-readobj --macho-segment %t/test | FileCheck %s --check-prefix=SEGMENT 8 9; CHECK: Contents of (__LLVM,__bundle) section 10; CHECK-NEXT: For (__LLVM,__bundle) section: xar header 11; CHECK-NEXT: magic XAR_HEADER_MAGIC 12; CHECK-NEXT: size 28 13; CHECK-NEXT: version 1 14; CHECK-NEXT: toc_length_compressed 15; CHECK-NEXT: toc_length_uncompressed 16; CHECK-NEXT: cksum_alg XAR_CKSUM_SHA1 17; CHECK-NEXT: For (__LLVM,__bundle) section: xar table of contents: 18; CHECK-NEXT: <?xml version="1.0" encoding="UTF-8"?> 19; CHECK-NEXT: <xar> 20; CHECK-NEXT: <toc> 21; CHECK-NEXT: <checksum style="sha1"> 22; CHECK-NEXT: <size>20</size> 23; CHECK-NEXT: <offset>0</offset> 24; CHECK-NEXT: </checksum> 25; CHECK-NEXT: <creation-time>{{.*}}</creation-time> 26; CHECK-NEXT: </toc> 27; CHECK-NEXT: </xar> 28 29;; __LLVM must directly precede __LINKEDIT. 30; SEGMENT: Name: __LLVM 31; SEGMENT-NEXT: Size: 152 32; SEGMENT-NEXT: vmaddr: 0x[[#%X,LLVM_ADDR:]] 33; SEGMENT-NEXT: vmsize: 0x[[#%X,LLVM_VMSIZE:]] 34; SEGMENT-NEXT: fileoff: [[#LLVM_OFF:]] 35; SEGMENT-NEXT: filesize: [[#LLVM_FILESIZE:]] 36; SEGMENT-NEXT: maxprot: rw- 37; SEGMENT-NEXT: initprot: rw- 38; SEGMENT-NEXT: nsects: 1 39; SEGMENT-NEXT: flags: 0x0 40; SEGMENT-NEXT: } 41; SEGMENT-NEXT: Segment { 42; SEGMENT-NEXT: Cmd: LC_SEGMENT_64 43; SEGMENT-NEXT: Name: __LINKEDIT 44; SEGMENT-NEXT: Size: 72 45; SEGMENT-NEXT: vmaddr: 0x[[#LLVM_ADDR + LLVM_VMSIZE]] 46; SEGMENT-NEXT: vmsize: 47; SEGMENT-NEXT: fileoff: [[#LLVM_OFF + LLVM_FILESIZE]] 48; SEGMENT-NEXT: filesize: 49; SEGMENT-NEXT: maxprot: r-- 50; SEGMENT-NEXT: initprot: r-- 51; SEGMENT-NEXT: nsects: 0 52; SEGMENT-NEXT: flags: 0x0 53; SEGMENT-NEXT: } 54 55;--- foo.ll 56target triple = "x86_64-apple-darwin" 57target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 58 59define void @foo() { 60 ret void 61} 62 63;--- test.ll 64target triple = "x86_64-apple-darwin" 65target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 66 67define void @main() { 68 ret void 69} 70