| 1 | // Check that ld gets arch_multiple. |
| 2 | |
| 3 | // RUN: %clang -target i386-apple-darwin9 -arch i386 -arch x86_64 %s -### -o foo 2> %t.log |
| 4 | // RUN: grep '".*ld.*" .*"-arch_multiple" "-final_output" "foo"' %t.log |
| 5 | |
| 6 | // Make sure we run dsymutil on source input files. |
| 7 | // RUN: %clang -target i386-apple-darwin9 -### -g %s -o BAR 2> %t.log |
| 8 | // RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log |
| 9 | // RUN: %clang -target i386-apple-darwin9 -### -g -filelist FOO %s -o BAR 2> %t.log |
| 10 | // RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log |
| 11 | |
| 12 | // Check linker changes that came with new linkedit format. |
| 13 | // RUN: touch %t.o |
| 14 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 %t.o 2> %t.log |
| 15 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -dynamiclib %t.o 2>> %t.log |
| 16 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -bundle %t.o 2>> %t.log |
| 17 | // RUN: FileCheck -check-prefix=LINK_IPHONE_3_0 %s < %t.log |
| 18 | |
| 19 | // LINK_IPHONE_3_0: {{ld(.exe)?"}} |
| 20 | // LINK_IPHONE_3_0: -iphoneos_version_min |
| 21 | // LINK_IPHONE_3_0: 3.0.0 |
| 22 | // LINK_IPHONE_3_0-NOT: -lcrt1.3.1.o |
| 23 | // LINK_IPHONE_3_0: -lcrt1.o |
| 24 | // LINK_IPHONE_3_0: -lSystem |
| 25 | // LINK_IPHONE_3_0: {{ld(.exe)?"}} |
| 26 | // LINK_IPHONE_3_0: -dylib |
| 27 | // LINK_IPHONE_3_0: -ldylib1.o |
| 28 | // LINK_IPHONE_3_0: -lSystem |
| 29 | // LINK_IPHONE_3_0: {{ld(.exe)?"}} |
| 30 | // LINK_IPHONE_3_0: -lbundle1.o |
| 31 | // LINK_IPHONE_3_0: -lSystem |
| 32 | |
| 33 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 %t.o 2> %t.log |
| 34 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -dynamiclib %t.o 2>> %t.log |
| 35 | // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -bundle %t.o 2>> %t.log |
| 36 | // RUN: FileCheck -check-prefix=LINK_IPHONE_3_1 %s < %t.log |
| 37 | |
| 38 | // LINK_IPHONE_3_1: {{ld(.exe)?"}} |
| 39 | // LINK_IPHONE_3_1: -iphoneos_version_min |
| 40 | // LINK_IPHONE_3_1: 3.1.0 |
| 41 | // LINK_IPHONE_3_1-NOT: -lcrt1.o |
| 42 | // LINK_IPHONE_3_1: -lcrt1.3.1.o |
| 43 | // LINK_IPHONE_3_1: -lSystem |
| 44 | // LINK_IPHONE_3_1: {{ld(.exe)?"}} |
| 45 | // LINK_IPHONE_3_1: -dylib |
| 46 | // LINK_IPHONE_3_1-NOT: -ldylib1.o |
| 47 | // LINK_IPHONE_3_1: -lSystem |
| 48 | // LINK_IPHONE_3_1: {{ld(.exe)?"}} |
| 49 | // LINK_IPHONE_3_1-NOT: -lbundle1.o |
| 50 | // LINK_IPHONE_3_1: -lSystem |
| 51 | |
| 52 | // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 %t.o 2> %t.log |
| 53 | // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -dynamiclib %t.o 2>> %t.log |
| 54 | // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -bundle %t.o 2>> %t.log |
| 55 | // RUN: FileCheck -check-prefix=LINK_IOSSIM_3_0 %s < %t.log |
| 56 | |
| 57 | // LINK_IOSSIM_3_0: {{ld(.exe)?"}} |
| 58 | // LINK_IOSSIM_3_0: -ios_simulator_version_min |
| 59 | // LINK_IOSSIM_3_0: 3.0.0 |
| 60 | // LINK_IOSSIM_3_0-NOT: -lcrt1.o |
| 61 | // LINK_IOSSIM_3_0: -lSystem |
| 62 | // LINK_IOSSIM_3_0: {{ld(.exe)?"}} |
| 63 | // LINK_IOSSIM_3_0: -dylib |
| 64 | // LINK_IOSSIM_3_0-NOT: -ldylib1.o |
| 65 | // LINK_IOSSIM_3_0: -lSystem |
| 66 | // LINK_IOSSIM_3_0: {{ld(.exe)?"}} |
| 67 | // LINK_IOSSIM_3_0-NOT: -lbundle1.o |
| 68 | // LINK_IOSSIM_3_0: -lSystem |
| 69 | |
| 70 | // RUN: %clang -target i386-apple-darwin9 -### -fpie %t.o 2> %t.log |
| 71 | // RUN: FileCheck -check-prefix=LINK_EXPLICIT_PIE %s < %t.log |
| 72 | // |
| 73 | // LINK_EXPLICIT_PIE: {{ld(.exe)?"}} |
| 74 | // LINK_EXPLICIT_PIE: "-pie" |
| 75 | |
| 76 | // RUN: %clang -target i386-apple-darwin9 -### -fno-pie %t.o 2> %t.log |
| 77 | // RUN: FileCheck -check-prefix=LINK_EXPLICIT_NO_PIE %s < %t.log |
| 78 | // |
| 79 | // LINK_EXPLICIT_NO_PIE: {{ld(.exe)?"}} |
| 80 | // LINK_EXPLICIT_NO_PIE: "-no_pie" |
| 81 | |
| 82 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 83 | // RUN: -mlinker-version=100 2> %t.log |
| 84 | // RUN: FileCheck -check-prefix=LINK_NEWER_DEMANGLE %s < %t.log |
| 85 | // |
| 86 | // LINK_NEWER_DEMANGLE: {{ld(.exe)?"}} |
| 87 | // LINK_NEWER_DEMANGLE: "-demangle" |
| 88 | |
| 89 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 90 | // RUN: -mlinker-version=100 -Wl,--no-demangle 2> %t.log |
| 91 | // RUN: FileCheck -check-prefix=LINK_NEWER_NODEMANGLE %s < %t.log |
| 92 | // |
| 93 | // LINK_NEWER_NODEMANGLE: {{ld(.exe)?"}} |
| 94 | // LINK_NEWER_NODEMANGLE-NOT: "-demangle" |
| 95 | // LINK_NEWER_NODEMANGLE: "-lSystem" |
| 96 | |
| 97 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 98 | // RUN: -mlinker-version=95 2> %t.log |
| 99 | // RUN: FileCheck -check-prefix=LINK_OLDER_NODEMANGLE %s < %t.log |
| 100 | // |
| 101 | // LINK_OLDER_NODEMANGLE: {{ld(.exe)?"}} |
| 102 | // LINK_OLDER_NODEMANGLE-NOT: "-demangle" |
| 103 | // LINK_OLDER_NODEMANGLE: "-lSystem" |
| 104 | |
| 105 | // RUN: %clang -target x86_64-apple-darwin10 -### %s \ |
| 106 | // RUN: -mlinker-version=117 -flto 2> %t.log |
| 107 | // RUN: cat %t.log |
| 108 | // RUN: FileCheck -check-prefix=LINK_OBJECT_LTO_PATH %s < %t.log |
| 109 | // |
| 110 | // LINK_OBJECT_LTO_PATH: {{ld(.exe)?"}} |
| 111 | // LINK_OBJECT_LTO_PATH: "-object_path_lto" |
| 112 | |
| 113 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 114 | // RUN: -force_load a -force_load b 2> %t.log |
| 115 | // RUN: cat %t.log |
| 116 | // RUN: FileCheck -check-prefix=FORCE_LOAD %s < %t.log |
| 117 | // |
| 118 | // FORCE_LOAD: {{ld(.exe)?"}} |
| 119 | // FORCE_LOAD: "-force_load" "a" "-force_load" "b" |
| 120 | |
| 121 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 122 | // RUN: -lazy_framework Framework 2> %t.log |
| 123 | // |
| 124 | // RUN: FileCheck -check-prefix=LINK_LAZY_FRAMEWORK %s < %t.log |
| 125 | // LINK_LAZY_FRAMEWORK: {{ld(.exe)?"}} |
| 126 | // LINK_LAZY_FRAMEWORK: "-lazy_framework" "Framework" |
| 127 | |
| 128 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \ |
| 129 | // RUN: -lazy_library Library 2> %t.log |
| 130 | // |
| 131 | // RUN: FileCheck -check-prefix=LINK_LAZY_LIBRARY %s < %t.log |
| 132 | // LINK_LAZY_LIBRARY: {{ld(.exe)?"}} |
| 133 | // LINK_LAZY_LIBRARY: "-lazy_library" "Library" |
| 134 | |
| 135 | // RUN: %clang -target x86_64-apple-darwin10 -### %t.o 2> %t.log |
| 136 | // RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log |
| 137 | // RUN: FileCheck -check-prefix=LINK_VERSION_MIN %s < %t.log |
| 138 | // LINK_VERSION_MIN: {{ld(.exe)?"}} |
| 139 | // LINK_VERSION_MIN: "-macosx_version_min" "10.6.0" |
| 140 | // LINK_VERSION_MIN: {{ld(.exe)?"}} |
| 141 | // LINK_VERSION_MIN: "-macosx_version_min" "10.7.0" |
| 142 | |
| 143 | // RUN: %clang -target x86_64-apple-darwin12 -### %t.o 2> %t.log |
| 144 | // RUN: FileCheck -check-prefix=LINK_NO_CRT1 %s < %t.log |
| 145 | // LINK_NO_CRT1-NOT: crt |
| 146 | |
| 147 | // RUN: %clang -target armv7-apple-ios6.0 -miphoneos-version-min=6.0 -### %t.o 2> %t.log |
| 148 | // RUN: FileCheck -check-prefix=LINK_NO_IOS_CRT1 %s < %t.log |
| 149 | // LINK_NO_IOS_CRT1-NOT: crt |
| 150 | |
| 151 | // RUN: %clang -target arm64-apple-ios5.0 -miphoneos-version-min=5.0 -### %t.o 2> %t.log |
| 152 | // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_CRT1 %s < %t.log |
| 153 | // LINK_NO_IOS_ARM64_CRT1-NOT: crt |
| 154 | |
| 155 | // RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log |
| 156 | // RUN: FileCheck -check-prefix=LINK_IOSSIM_PROFILE %s < %t.log |
| 157 | // LINK_IOSSIM_PROFILE: {{ld(.exe)?"}} |
| 158 | // LINK_IOSSIM_PROFILE: libclang_rt.profile_iossim.a |
| 159 | // LINK_IOSSIM_PROFILE: libclang_rt.ios.a |
| 160 | |
| 161 | // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log |
| 162 | // RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log |
| 163 | // LINK_TVOS_ARM64: {{ld(.exe)?"}} |
| 164 | // LINK_TVOS_ARM64: -tvos_version_min |
| 165 | // LINK_TVOS_ARM64-NOT: crt |
| 166 | // LINK_TVOS_ARM64-NOT: lgcc_s.1 |
| 167 | // LINK_TVOS_ARM64: libclang_rt.tvos.a |
| 168 | |
| 169 | // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log |
| 170 | // RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log |
| 171 | // LINK_TVOS_PROFILE: {{ld(.exe)?"}} |
| 172 | // LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a |
| 173 | // LINK_TVOS_PROFILE: libclang_rt.tvos.a |
| 174 | |
| 175 | // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log |
| 176 | // RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log |
| 177 | // LINK_TVOS_KEXT: {{ld(.exe)?"}} |
| 178 | // LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a |
| 179 | // LINK_TVOS_KEXT: libclang_rt.tvos.a |
| 180 | |
| 181 | // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log |
| 182 | // RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log |
| 183 | // LINK_WATCHOS_ARM: {{ld(.exe)?"}} |
| 184 | // LINK_WATCHOS_ARM: -watchos_version_min |
| 185 | // LINK_WATCHOS_ARM-NOT: crt |
| 186 | // LINK_WATCHOS_ARM-NOT: lgcc_s.1 |
| 187 | // LINK_WATCHOS_ARM: libclang_rt.watchos.a |
| 188 | |
| 189 | // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -fprofile-instr-generate -### %t.o 2> %t.log |
| 190 | // RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log |
| 191 | // LINK_WATCHOS_PROFILE: {{ld(.exe)?"}} |
| 192 | // LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a |
| 193 | // LINK_WATCHOS_PROFILE: libclang_rt.watchos.a |
| 194 | |
| 195 | // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log |
| 196 | // RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log |
| 197 | // LINK_WATCHOS_KEXT: {{ld(.exe)?"}} |
| 198 | // LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a |
| 199 | // LINK_WATCHOS_KEXT: libclang_rt.watchos.a |
| 200 | |
| 201 | // RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log |
| 202 | // RUN: FileCheck -check-prefix=LINK_PG %s < %t.log |
| 203 | // LINK_PG: -lgcrt1.o |
| 204 | // LINK_PG: -no_new_main |
| 205 | |
| 206 | // RUN: %clang -target i386-apple-darwin13 -pg -### %t.o 2> %t.log |
| 207 | // RUN: FileCheck -check-prefix=LINK_PG_NO_SUPPORT_OSX %s < %t.log |
| 208 | // LINK_PG_NO_SUPPORT_OSX: error: the clang compiler does not support -pg option on versions of OS X |
| 209 | |
| 210 | // RUN: %clang -target x86_64-apple-ios5.0 -pg -### %t.o 2> %t.log |
| 211 | // RUN: FileCheck -check-prefix=LINK_PG_NO_SUPPORT %s < %t.log |
| 212 | // LINK_PG_NO_SUPPORT: error: the clang compiler does not support -pg option on Darwin |
| 213 | |
| 214 | // Check that clang links with libgcc_s.1 for iOS 4 and earlier, but not arm64. |
| 215 | // RUN: %clang -target armv7-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log |
| 216 | // RUN: FileCheck -check-prefix=LINK_IOS_LIBGCC_S %s < %t.log |
| 217 | // LINK_IOS_LIBGCC_S: lgcc_s.1 |
| 218 | |
| 219 | // RUN: %clang -target arm64-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log |
| 220 | // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_LIBGCC_S %s < %t.log |
| 221 | // LINK_NO_IOS_ARM64_LIBGCC_S-NOT: lgcc_s.1 |
| 222 | |
| 223 | // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \ |
| 224 | // RUN: -mlinker-version=100 2> %t.log |
| 225 | // RUN: FileCheck -check-prefix=LINK_NO_EXPORT_DYNAMIC %s < %t.log |
| 226 | // LINK_NO_EXPORT_DYNAMIC: {{ld(.exe)?"}} |
| 227 | // LINK_NO_EXPORT_DYNAMIC-NOT: "-export_dynamic" |
| 228 | |
| 229 | // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \ |
| 230 | // RUN: -mlinker-version=137 2> %t.log |
| 231 | // RUN: FileCheck -check-prefix=LINK_EXPORT_DYNAMIC %s < %t.log |
| 232 | // LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}} |
| 233 | // LINK_EXPORT_DYNAMIC: "-export_dynamic" |
| 234 | |
| 235 | // RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log |
| 236 | // RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log |
| 237 | // |
| 238 | // LINK_X86_64H_ARCH: {{ld(.exe)?"}} |
| 239 | // LINK_X86_64H_ARCH: "x86_64h" |
| 240 | |
| 241 | // RUN: %clang -target x86_64-apple-darwin -arch x86_64 -arch x86_64h -### %t.o 2> %t.log |
| 242 | // RUN: FileCheck -check-prefix=LINK_X86_64H_MULTIARCH %s < %t.log |
| 243 | // |
| 244 | // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}} |
| 245 | // LINK_X86_64H_MULTIARCH: "x86_64" |
| 246 | // |
| 247 | // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}} |
| 248 | // LINK_X86_64H_MULTIARCH: "x86_64h" |
| 249 | |
| 250 | // Check for the linker options to specify the iOS version when the |
| 251 | // IPHONEOS_DEPLOYMENT_TARGET variable is used instead of the command-line |
| 252 | // deployment target options. |
| 253 | // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \ |
| 254 | // RUN: %clang -target arm64-apple-darwin -### %t.o 2> %t.log |
| 255 | // RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log |
| 256 | // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \ |
| 257 | // RUN: %clang -target i386-apple-darwin -### %t.o 2> %t.log |
| 258 | // RUN: FileCheck -check-prefix=LINK_IOS_SIMULATOR_VERSION_MIN %s < %t.log |
| 259 | // LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min |
| 260 | // LINK_IOS_SIMULATOR_VERSION_MIN: -ios_simulator_version_min |
| 261 | |
| 262 | // Ditto for tvOS.... |
| 263 | // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \ |
| 264 | // RUN: %clang -target armv7-apple-darwin -### %t.o 2> %t.log |
| 265 | // RUN: FileCheck -check-prefix=LINK_TVOS_VERSION_MIN %s < %t.log |
| 266 | // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \ |
| 267 | // RUN: %clang -target x86_64-apple-darwin -### %t.o 2> %t.log |
| 268 | // RUN: FileCheck -check-prefix=LINK_TVOS_SIMULATOR_VERSION_MIN %s < %t.log |
| 269 | // LINK_TVOS_VERSION_MIN: -tvos_version_min |
| 270 | // LINK_TVOS_SIMULATOR_VERSION_MIN: -tvos_simulator_version_min |
| 271 | |
| 272 | // ...and for watchOS. |
| 273 | // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \ |
| 274 | // RUN: %clang -target armv7k-apple-darwin -### %t.o 2> %t.log |
| 275 | // RUN: FileCheck -check-prefix=LINK_WATCHOS_VERSION_MIN %s < %t.log |
| 276 | // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \ |
| 277 | // RUN: %clang -target i386-apple-darwin -### %t.o 2> %t.log |
| 278 | // RUN: FileCheck -check-prefix=LINK_WATCHOS_SIMULATOR_VERSION_MIN %s < %t.log |
| 279 | // LINK_WATCHOS_VERSION_MIN: -watchos_version_min |
| 280 | // LINK_WATCHOS_SIMULATOR_VERSION_MIN: -watchos_simulator_version_min |
| 281 | |
| 282 | // Check -iframework gets forward to ld as -F |
| 283 | // RUN: %clang -target x86_64-apple-darwin %s -iframework Bar -framework Foo -### 2>&1 | \ |
| 284 | // RUN: FileCheck --check-prefix=LINK-IFRAMEWORK %s |
| 285 | // LINK-IFRAMEWORK: {{ld(.exe)?"}} |
| 286 | // LINK-IFRAMEWORK: "-FBar" |
| 287 | |
| 288 | // Check ld64 accepts up to 5 digits with no extra characters |
| 289 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 290 | // RUN: -mlinker-version=133.3 2> %t.log |
| 291 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 292 | // RUN: -mlinker-version=133.3.0 2>> %t.log |
| 293 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 294 | // RUN: -mlinker-version=133.3.0.1 2>> %t.log |
| 295 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 296 | // RUN: -mlinker-version=133.3.0.1.2 2>> %t.log |
| 297 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 298 | // RUN: -mlinker-version=133.3.0.1.2.6 2>> %t.log |
| 299 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 300 | // RUN: -mlinker-version=133.3.0.1.a 2>> %t.log |
| 301 | // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \ |
| 302 | // RUN: -mlinker-version=133.3.0.1a 2>> %t.log |
| 303 | // RUN: FileCheck -check-prefix=LINK_VERSION_DIGITS %s < %t.log |
| 304 | // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3' |
| 305 | // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0' |
| 306 | // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1' |
| 307 | // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1.2' |
| 308 | // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.2.6' |
| 309 | // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.a' |
| 310 | // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1a' |
| 311 | |
| 312 | // Check that we're passing -lto-pass-remarks-output for LTO |
| 313 | // RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -### -o foo/bar.out 2> %t.log |
| 314 | // RUN: FileCheck -check-prefix=PASS_REMARKS_OUTPUT %s < %t.log |
| 315 | // PASS_REMARKS_OUTPUT: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" |
| 316 | // PASS_REMARKS_OUTPUT-NOT: -lto-pass-remarks-with-hotness |
| 317 | |
| 318 | // RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -### 2> %t.log |
| 319 | // RUN: FileCheck -check-prefix=PASS_REMARKS_OUTPUT_NO_O %s < %t.log |
| 320 | // PASS_REMARKS_OUTPUT_NO_O: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "a.out.opt.yaml" |
| 321 | |
| 322 | // RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -fprofile-instr-use=blah -### -o foo/bar.out 2> %t.log |
| 323 | // RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_HOTNESS %s < %t.log |
| 324 | // PASS_REMARKS_WITH_HOTNESS: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-with-hotness" |
| 325 | |
| 326 | // RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -fprofile-instr-use=blah -fdiagnostics-hotness-threshold=100 -### -o foo/bar.out 2> %t.log |
| 327 | // RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_HOTNESS_THRESHOLD %s < %t.log |
| 328 | // PASS_REMARKS_WITH_HOTNESS_THRESHOLD: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-with-hotness" "-mllvm" "-lto-pass-remarks-hotness-threshold=100" |
| 329 | |
| 330 | // RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -foptimization-record-passes=inline -### -o foo/bar.out 2> %t.log |
| 331 | // RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_PASSES %s < %t.log |
| 332 | // PASS_REMARKS_WITH_PASSES: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-filter=inline" |
| 333 | |
| 334 | // RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -### %t.o 2> %t.log |
| 335 | // RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log |
| 336 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -### %t.o 2> %t.log |
| 337 | // RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log |
| 338 | // RUN: %clang -target i386-apple-darwin9 -fprofile-instr-generate -### %t.o 2> %t.log |
| 339 | // RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log |
| 340 | // RUN: %clang -target arm64-apple-ios5.0 -miphoneos-version-min=5.0 -fprofile-instr-generate -### %t.o 2> %t.log |
| 341 | // RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log |
| 342 | // LINK_PROFILE_FIRST: {{ld(.exe)?"}} "{{[^"]+}}libclang_rt.profile_{{[a-z]+}}.a" |
| 343 | |
| 344 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -exported_symbols_list /dev/null -### %t.o 2> %t.log |
| 345 | // RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log |
| 346 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Wl,-exported_symbols_list,/dev/null -### %t.o 2> %t.log |
| 347 | // RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log |
| 348 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Wl,-exported_symbol,foo -### %t.o 2> %t.log |
| 349 | // RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log |
| 350 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Xlinker -exported_symbol -Xlinker foo -### %t.o 2> %t.log |
| 351 | // RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log |
| 352 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Xlinker -exported_symbols_list -Xlinker /dev/null -### %t.o 2> %t.log |
| 353 | // RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log |
| 354 | // PROFILE_EXPORT: "-exported_symbol" "___llvm_profile_filename" "-exported_symbol" "___llvm_profile_raw_version" "-exported_symbol" "_lprofCurFilename" |
| 355 | // |
| 356 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate --coverage -### %t.o 2> %t.log |
| 357 | // RUN: FileCheck -check-prefix=NO_PROFILE_EXPORT %s < %t.log |
| 358 | // NO_PROFILE_EXPORT-NOT: "-exported_symbol" |
| 359 | // |
| 360 | // RUN: %clang -target x86_64-apple-darwin12 --coverage -exported_symbols_list /dev/null -### %t.o 2> %t.log |
| 361 | // RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log |
| 362 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Wl,-exported_symbols_list,/dev/null -### %t.o 2> %t.log |
| 363 | // RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log |
| 364 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Wl,-exported_symbol,foo -### %t.o 2> %t.log |
| 365 | // RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log |
| 366 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Xlinker -exported_symbol -Xlinker foo -### %t.o 2> %t.log |
| 367 | // RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log |
| 368 | // RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Xlinker -exported_symbols_list -Xlinker /dev/null -### %t.o 2> %t.log |
| 369 | // RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log |
| 370 | // GCOV_EXPORT: "-exported_symbol" "___gcov_flush" |
| 371 | // |
| 372 | // Check that we can pass the outliner down to the linker. |
| 373 | // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \ |
| 374 | // RUN: %clang -target arm64-apple-darwin -moutline -### %t.o 2> %t.log |
| 375 | // RUN: FileCheck -check-prefix=MOUTLINE %s < %t.log |
| 376 | // MOUTLINE: {{ld(.exe)?"}} |
| 377 | // MOUTLINE-SAME: "-mllvm" "-enable-machine-outliner" "-mllvm" "-enable-linkonceodr-outlining" |
| 378 | // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \ |
| 379 | // RUN: %clang -target arm64-apple-darwin -mno-outline -### %t.o 2> %t.log |
| 380 | // RUN: FileCheck -check-prefix=MNO_OUTLINE %s < %t.log |
| 381 | // MNO_OUTLINE: {{ld(.exe)?"}} |
| 382 | // MNO_OUTLINE-SAME: "-mllvm" "-enable-machine-outliner=never" |
| 383 | |