Home | History | Annotate | Download | only in Driver
      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 -### %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 
    160 // FIXME: Currently the builtin library is only added to the command line if it,
    161 // so we can't check for it here
    162 // FIXME_LINK_IOSSIM_PROFILE: libclang_rt.ios.a
    163 
    164 // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o 2> %t.log
    165 // RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log
    166 // LINK_TVOS_ARM64: {{ld(.exe)?"}}
    167 // LINK_TVOS_ARM64: -tvos_version_min
    168 // LINK_TVOS_ARM64-NOT: crt
    169 // LINK_TVOS_ARM64-NOT: lgcc_s.1
    170 // FIXME: This library does not get built unless the tvOS SDK is
    171 // installed, and the driver will not try to link it if it does not exist.
    172 // This should be reenabled when the tvOS SDK becomes a standard part
    173 // of Xcode.
    174 // FIXME_LINK_TVOS_ARM64: libclang_rt.tvos.a
    175 
    176 // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -### %t.o 2> %t.log
    177 // RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log
    178 // LINK_TVOS_PROFILE: {{ld(.exe)?"}}
    179 // FIXME: These libraries do not get built unless the tvOS SDK is
    180 // installed, and the driver will not try to link them if they do not exist.
    181 // This should be reenabled when the tvOS SDK becomes a standard part
    182 // of Xcode.
    183 // FIXME_LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
    184 // FIXME_LINK_TVOS_PROFILE: libclang_rt.tvos.a
    185 
    186 // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o -lcc_kext 2> %t.log
    187 // RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log
    188 // LINK_TVOS_KEXT: {{ld(.exe)?"}}
    189 // FIXME: These libraries do not get built unless the tvOS SDK is
    190 // installed, and the driver will not try to link them if they do not exist.
    191 // This should be reenabled when the tvOS SDK becomes a standard part
    192 // of Xcode.
    193 // FIXME_LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
    194 // FIXME_LINK_TVOS_KEXT: libclang_rt.tvos.a
    195 
    196 // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o 2> %t.log
    197 // RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log
    198 // LINK_WATCHOS_ARM: {{ld(.exe)?"}}
    199 // LINK_WATCHOS_ARM: -watchos_version_min
    200 // LINK_WATCHOS_ARM-NOT: crt
    201 // LINK_WATCHOS_ARM-NOT: lgcc_s.1
    202 // FIXME: This library does not get built unless the watchOS SDK is
    203 // installed, and the driver will not try to link it if it does not exist.
    204 // This should be reenabled when the watchOS SDK becomes a standard part
    205 // of Xcode.
    206 // FIXME_LINK_WATCHOS_ARM: libclang_rt.watchos.a
    207 
    208 // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -fprofile-instr-generate -### %t.o 2> %t.log
    209 // RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log
    210 // LINK_WATCHOS_PROFILE: {{ld(.exe)?"}}
    211 // FIXME: These libraries do not get built unless the watchOS SDK is
    212 // installed, and the driver will not try to link them if they do not exist.
    213 // This should be reenabled when the watchOS SDK becomes a standard part
    214 // of Xcode.
    215 // FIXME_LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
    216 // FIXME_LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
    217 
    218 // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o -lcc_kext 2> %t.log
    219 // RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log
    220 // LINK_WATCHOS_KEXT: {{ld(.exe)?"}}
    221 // FIXME: These libraries do not get built unless the watchOS SDK is
    222 // installed, and the driver will not try to link them if they do not exist.
    223 // This should be reenabled when the watchOS SDK becomes a standard part
    224 // of Xcode.
    225 // FIXME_LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
    226 // FIXME_LINK_WATCHOS_KEXT: libclang_rt.watchos.a
    227 
    228 // RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
    229 // RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
    230 // LINK_PG: -lgcrt1.o
    231 // LINK_PG: -no_new_main
    232 
    233 // Check that clang links with libgcc_s.1 for iOS 4 and earlier, but not arm64.
    234 // RUN: %clang -target armv7-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
    235 // RUN: FileCheck -check-prefix=LINK_IOS_LIBGCC_S %s < %t.log
    236 // LINK_IOS_LIBGCC_S: lgcc_s.1
    237 
    238 // RUN: %clang -target arm64-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
    239 // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_LIBGCC_S %s < %t.log
    240 // LINK_NO_IOS_ARM64_LIBGCC_S-NOT: lgcc_s.1
    241 
    242 // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
    243 // RUN:   -mlinker-version=100 2> %t.log
    244 // RUN: FileCheck -check-prefix=LINK_NO_EXPORT_DYNAMIC %s < %t.log
    245 // LINK_NO_EXPORT_DYNAMIC: {{ld(.exe)?"}}
    246 // LINK_NO_EXPORT_DYNAMIC-NOT: "-export_dynamic"
    247 
    248 // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
    249 // RUN:   -mlinker-version=137 2> %t.log
    250 // RUN: FileCheck -check-prefix=LINK_EXPORT_DYNAMIC %s < %t.log
    251 // LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}}
    252 // LINK_EXPORT_DYNAMIC: "-export_dynamic"
    253 
    254 // RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log
    255 // RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log
    256 //
    257 // LINK_X86_64H_ARCH: {{ld(.exe)?"}}
    258 // LINK_X86_64H_ARCH: "x86_64h"
    259 
    260 // RUN: %clang -target x86_64-apple-darwin -arch x86_64 -arch x86_64h -### %t.o 2> %t.log
    261 // RUN: FileCheck -check-prefix=LINK_X86_64H_MULTIARCH %s < %t.log
    262 //
    263 // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
    264 // LINK_X86_64H_MULTIARCH: "x86_64"
    265 //
    266 // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
    267 // LINK_X86_64H_MULTIARCH: "x86_64h"
    268 
    269 // Check for the linker options to specify the iOS version when the
    270 // IPHONEOS_DEPLOYMENT_TARGET variable is used instead of the command-line
    271 // deployment target options.
    272 // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
    273 // RUN:   %clang -target arm64-apple-darwin -### %t.o 2> %t.log
    274 // RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log
    275 // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
    276 // RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
    277 // RUN: FileCheck -check-prefix=LINK_IOS_SIMULATOR_VERSION_MIN %s < %t.log
    278 // LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min
    279 // LINK_IOS_SIMULATOR_VERSION_MIN: -ios_simulator_version_min
    280 
    281 // Ditto for tvOS....
    282 // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
    283 // RUN:   %clang -target armv7-apple-darwin -### %t.o 2> %t.log
    284 // RUN: FileCheck -check-prefix=LINK_TVOS_VERSION_MIN %s < %t.log
    285 // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
    286 // RUN:   %clang -target x86_64-apple-darwin -### %t.o 2> %t.log
    287 // RUN: FileCheck -check-prefix=LINK_TVOS_SIMULATOR_VERSION_MIN %s < %t.log
    288 // LINK_TVOS_VERSION_MIN: -tvos_version_min
    289 // LINK_TVOS_SIMULATOR_VERSION_MIN: -tvos_simulator_version_min
    290 
    291 // ...and for watchOS.
    292 // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
    293 // RUN:   %clang -target armv7k-apple-darwin -### %t.o 2> %t.log
    294 // RUN: FileCheck -check-prefix=LINK_WATCHOS_VERSION_MIN %s < %t.log
    295 // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
    296 // RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
    297 // RUN: FileCheck -check-prefix=LINK_WATCHOS_SIMULATOR_VERSION_MIN %s < %t.log
    298 // LINK_WATCHOS_VERSION_MIN: -watchos_version_min
    299 // LINK_WATCHOS_SIMULATOR_VERSION_MIN: -watchos_simulator_version_min
    300 
    301 // Check -iframework gets forward to ld as -F
    302 // RUN: %clang -target x86_64-apple-darwin %s -iframework Bar -framework Foo -### 2>&1 | \
    303 // RUN:   FileCheck --check-prefix=LINK-IFRAMEWORK %s
    304 // LINK-IFRAMEWORK: {{ld(.exe)?"}}
    305 // LINK-IFRAMEWORK: "-FBar"
    306 
    307 // Check ld64 accepts up to 5 digits with no extra characters
    308 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    309 // RUN:   -mlinker-version=133.3 2> %t.log
    310 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    311 // RUN:   -mlinker-version=133.3.0 2>> %t.log
    312 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    313 // RUN:   -mlinker-version=133.3.0.1 2>> %t.log
    314 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    315 // RUN:   -mlinker-version=133.3.0.1.2 2>> %t.log
    316 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    317 // RUN:   -mlinker-version=133.3.0.1.2.6 2>> %t.log
    318 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    319 // RUN:   -mlinker-version=133.3.0.1.a 2>> %t.log
    320 // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
    321 // RUN:   -mlinker-version=133.3.0.1a 2>> %t.log
    322 // RUN: FileCheck -check-prefix=LINK_VERSION_DIGITS %s < %t.log
    323 // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3'
    324 // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0'
    325 // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1'
    326 // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1.2'
    327 // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.2.6'
    328 // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.a'
    329 // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1a'
    330