1 # REQUIRES: x86, aarch64
3 # RUN: rm -rf %t; split-file %s %t
5 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/main-arm64-macos.o %t/main.s
6 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-iossimulator -o %t/main-arm64-sim.o %t/main.s
7 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos -o %t/main-x86_64-macos.o %t/main.s
8 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/foo-arm64-macos.o %t/foo.s
9 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-iossimulator -o %t/foo-arm64-sim.o %t/foo.s
10 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos -o %t/foo-x86_64-macos.o %t/foo.s
12 # Exhaustive test for:
13 # (x86_64-macos, arm64-macos, arm64-ios-simulator) x (default, -adhoc_codesign, -no_adhoc-codesign) x (execute, dylib, bundle)
15 # RUN: %lld -lSystem -arch x86_64 -execute -o %t/out %t/main-x86_64-macos.o
16 # RUN: llvm-objdump --macho --all-headers %t/out | FileCheck --check-prefix=NO-ADHOC %s
17 # RUN: %lld -arch x86_64 -dylib -o %t/out %t/foo-x86_64-macos.o
18 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
19 # RUN: %lld -arch x86_64 -bundle -o %t/out %t/foo-x86_64-macos.o
20 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
22 # RUN: %lld -lSystem -arch x86_64 -execute -adhoc_codesign -o %t/out %t/main-x86_64-macos.o
23 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
24 # RUN: %lld -arch x86_64 -dylib -adhoc_codesign -o %t/out %t/foo-x86_64-macos.o
25 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
26 # RUN: %lld -arch x86_64 -bundle -adhoc_codesign -o %t/out %t/foo-x86_64-macos.o
27 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
29 # RUN: %lld -lSystem -arch x86_64 -execute -no_adhoc_codesign -o %t/out %t/main-x86_64-macos.o
30 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
31 # RUN: %lld -arch x86_64 -dylib -no_adhoc_codesign -o %t/out %t/foo-x86_64-macos.o
32 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
33 # RUN: %lld -arch x86_64 -bundle -no_adhoc_codesign -o %t/out %t/foo-x86_64-macos.o
34 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
37 # RUN: %lld -lSystem -arch arm64 -execute -o %t/out %t/main-arm64-macos.o
38 # RUN: llvm-objdump --macho --all-headers %t/out | FileCheck --check-prefix=ADHOC %s
39 # RUN: %lld -arch arm64 -dylib -o %t/out %t/foo-arm64-macos.o
40 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
41 # RUN: %lld -arch arm64 -bundle -o %t/out %t/foo-arm64-macos.o
42 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
44 # RUN: %lld -lSystem -arch arm64 -execute -adhoc_codesign -o %t/out %t/main-arm64-macos.o
45 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
46 # RUN: %lld -arch arm64 -dylib -adhoc_codesign -o %t/out %t/foo-arm64-macos.o
47 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
48 # RUN: %lld -arch arm64 -bundle -adhoc_codesign -o %t/out %t/foo-arm64-macos.o
49 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
51 # RUN: %lld -lSystem -arch arm64 -execute -no_adhoc_codesign -o %t/out %t/main-arm64-macos.o
52 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
53 # RUN: %lld -arch arm64 -dylib -no_adhoc_codesign -o %t/out %t/foo-arm64-macos.o
54 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
55 # RUN: %lld -arch arm64 -bundle -no_adhoc_codesign -o %t/out %t/foo-arm64-macos.o
56 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
59 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -execute -o %t/out %t/main-arm64-sim.o -syslibroot %S/Inputs/iPhoneSimulator.sdk -lSystem
60 # RUN: llvm-objdump --macho --all-headers %t/out | FileCheck --check-prefix=ADHOC %s
61 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -dylib -o %t/out %t/foo-arm64-sim.o
62 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
63 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -bundle -o %t/out %t/foo-arm64-sim.o
64 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
66 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -execute -adhoc_codesign -o %t/out %t/main-arm64-sim.o -syslibroot %S/Inputs/iPhoneSimulator.sdk -lSystem
67 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
68 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -dylib -adhoc_codesign -o %t/out %t/foo-arm64-sim.o
69 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
70 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -bundle -adhoc_codesign -o %t/out %t/foo-arm64-sim.o
71 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=ADHOC %s
73 # RUN: %no-arg-lld -lSystem -arch arm64 -platform_version ios-simulator 14.0 15.0 -execute -no_adhoc_codesign -o %t/out %t/main-arm64-sim.o -syslibroot %S/Inputs/iPhoneSimulator.sdk
74 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
75 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -dylib -no_adhoc_codesign -o %t/out %t/foo-arm64-sim.o
76 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
77 # RUN: %no-arg-lld -arch arm64 -platform_version ios-simulator 14.0 15.0 -bundle -no_adhoc_codesign -o %t/out %t/foo-arm64-sim.o
78 # RUN: llvm-objdump --macho --all-headers %t/out| FileCheck --check-prefix=NO-ADHOC %s
80 # RUN: %lld -arch x86_64 -dylib -o %t/out_installname.dylib -install_name @rpath/MyInstallName %t/foo-x86_64-macos.o -adhoc_codesign
81 # RUN: %lld -arch x86_64 -dylib -o %t/out_no_installname.dylib %t/foo-x86_64-macos.o -adhoc_codesign
83 ## Smoke check to verify the dataoff and datasize value before using them with code-signature-check.py
84 # RUN: llvm-objdump --macho --all-headers %t/out_installname.dylib | FileCheck %s --check-prefix CS-ID-PRE -D#DATA_OFFSET=4176 -D#DATA_SIZE=192
85 # RUN: llvm-objdump --macho --all-headers %t/out_no_installname.dylib | FileCheck %s --check-prefix CS-ID-PRE -D#DATA_OFFSET=4176 -D#DATA_SIZE=208
87 ## Verify that the 'Identifier' (aka 'Code Directory ID') field are set to the install-name, if available.
88 # RUN: %python %p/Inputs/code-signature-check.py %t/out_installname.dylib 4176 192 0 4176 | FileCheck %s --check-prefix CS-ID-INSTALL
89 # RUN: %python %p/Inputs/code-signature-check.py %t/out_no_installname.dylib 4176 208 0 4176 | FileCheck %s --check-prefix CS-ID-NO-INSTALL
91 # ADHOC: cmd LC_CODE_SIGNATURE
92 # ADHOC-NEXT: cmdsize 16
94 # NO-ADHOC-NOT: cmd LC_CODE_SIGNATURE
96 # CS-ID-PRE: cmd LC_CODE_SIGNATURE
97 # CS-ID-PRE-NEXT: cmdsize 16
98 # CS-ID-PRE-NEXT: dataoff [[#DATA_OFFSET]]
99 # CS-ID-PRE-NEXT: datasize [[#DATA_SIZE]]
101 # CS-ID-INSTALL: Code Directory ID: MyInstallName
102 # CS-ID-NO-INSTALL: Code Directory ID: out_no_installname.dylib