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