Home | History | Annotate | Download | only in Driver
      1 // General tests that ld invocations on Linux targets sane. Note that we use
      2 // sysroot to make these tests independent of the host system.
      3 //
      4 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
      5 // RUN:     -target i386-unknown-linux \
      6 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
      7 // RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s
      8 // CHECK-LD-32-NOT: warning:
      9 // CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
     10 // CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
     11 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
     12 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
     13 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
     14 // CHECK-LD-32: "-L[[SYSROOT]]/lib"
     15 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
     16 //
     17 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     18 // RUN:     -target x86_64-unknown-linux \
     19 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
     20 // RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s
     21 // CHECK-LD-64-NOT: warning:
     22 // CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
     23 // CHECK-LD-64: "--eh-frame-hdr"
     24 // CHECK-LD-64: "-m" "elf_x86_64"
     25 // CHECK-LD-64: "-dynamic-linker"
     26 // CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
     27 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
     28 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
     29 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
     30 // CHECK-LD-64: "-L[[SYSROOT]]/lib"
     31 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
     32 // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
     33 // CHECK-LD-64: "-lc"
     34 // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
     35 //
     36 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     37 // RUN:     -target x86_64-unknown-linux \
     38 // RUN:     -static-libgcc \
     39 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
     40 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
     41 // CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
     42 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
     43 // CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
     44 // CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
     45 // CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
     46 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
     47 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
     48 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
     49 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
     50 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
     51 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
     52 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
     53 // CHECK-LD-64-STATIC-LIBGCC: "-lc"
     54 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
     55 //
     56 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     57 // RUN:     -target x86_64-unknown-linux \
     58 // RUN:     -static \
     59 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
     60 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
     61 // CHECK-LD-64-STATIC-NOT: warning:
     62 // CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
     63 // CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
     64 // CHECK-LD-64-STATIC: "-m" "elf_x86_64"
     65 // CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
     66 // CHECK-LD-64-STATIC: "-static"
     67 // CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbeginT.o"
     68 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
     69 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
     70 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
     71 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
     72 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
     73 // CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
     74 //
     75 // Check that flags can be combined. The -static dominates.
     76 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     77 // RUN:     -target x86_64-unknown-linux \
     78 // RUN:     -static-libgcc -static \
     79 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
     80 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
     81 //
     82 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     83 // RUN:     -target i386-unknown-linux -m32 \
     84 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
     85 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s
     86 // CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
     87 // CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
     88 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
     89 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
     90 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
     91 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
     92 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
     93 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
     94 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
     95 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
     96 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
     97 //
     98 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
     99 // RUN:     -target i386-unknown-linux -m64 \
    100 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
    101 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s
    102 // CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    103 // CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64/crtbegin.o"
    104 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
    105 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
    106 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
    107 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
    108 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
    109 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
    110 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
    111 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
    112 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
    113 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
    114 //
    115 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    116 // RUN:     -target x86_64-unknown-linux -m64 \
    117 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
    118 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s
    119 // CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    120 // CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
    121 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
    122 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
    123 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
    124 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
    125 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
    126 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
    127 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
    128 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
    129 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
    130 //
    131 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    132 // RUN:     -target x86_64-unknown-linux -m32 \
    133 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
    134 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s
    135 // CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    136 // CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
    137 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
    138 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
    139 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
    140 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
    141 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
    142 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
    143 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
    144 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
    145 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
    146 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
    147 //
    148 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    149 // RUN:     -target x86_64-unknown-linux -m32 \
    150 // RUN:     -gcc-toolchain %S/Inputs/multilib_64bit_linux_tree/usr \
    151 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
    152 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
    153 // CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    154 // CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
    155 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
    156 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
    157 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
    158 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
    159 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
    160 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
    161 //
    162 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    163 // RUN:     -target i386-unknown-linux -m32 \
    164 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
    165 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    166 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
    167 // CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    168 // CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0/crtbegin.o"
    169 // CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
    170 //
    171 // Check that with 64-bit builds, we don't actually use the install directory
    172 // as its version of GCC is lower than our sysrooted version.
    173 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    174 // RUN:     -target x86_64-unknown-linux -m64 \
    175 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
    176 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    177 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
    178 // CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    179 // CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
    180 // CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
    181 //
    182 // Check that we support unusual patch version formats, including missing that
    183 // component.
    184 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    185 // RUN:     -target i386-unknown-linux -m32 \
    186 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
    187 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    188 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
    189 // CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    190 // CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7/crtbegin.o"
    191 // CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
    192 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    193 // RUN:     -target i386-unknown-linux -m32 \
    194 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
    195 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    196 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
    197 // CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    198 // CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x/crtbegin.o"
    199 // CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
    200 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    201 // RUN:     -target i386-unknown-linux -m32 \
    202 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
    203 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    204 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
    205 // CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    206 // CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5/crtbegin.o"
    207 // CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
    208 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    209 // RUN:     -target i386-unknown-linux -m32 \
    210 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
    211 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
    212 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
    213 // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    214 // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99/crtbegin.o"
    215 // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
    216 //
    217 // Test a very broken version of multiarch that shipped in Ubuntu 11.04.
    218 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    219 // RUN:     -target i386-unknown-linux \
    220 // RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
    221 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
    222 // CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    223 // CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/crtbegin.o"
    224 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
    225 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
    226 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
    227 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
    228 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
    229 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
    230 //
    231 // Check multi arch support on Ubuntu 12.04 LTS.
    232 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    233 // RUN:     -target arm-unknown-linux-gnueabihf \
    234 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
    235 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
    236 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    237 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crt1.o"
    238 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crti.o"
    239 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o"
    240 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
    241 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
    242 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
    243 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
    244 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
    245 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtend.o"
    246 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crtn.o"
    247 //
    248 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    249 // RUN:     -target arm-unknown-linux-gnueabi \
    250 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
    251 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
    252 // CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    253 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crt1.o"
    254 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crti.o"
    255 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o"
    256 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
    257 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
    258 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
    259 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
    260 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
    261 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtend.o"
    262 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crtn.o"
    263 //
    264 // Test the setup that shipped in SUSE 10.3 on ppc64.
    265 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    266 // RUN:     -target powerpc64-suse-linux \
    267 // RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
    268 // RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
    269 // CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    270 // CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64/crtbegin.o"
    271 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
    272 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
    273 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
    274 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
    275 //
    276 // Check dynamic-linker for different archs
    277 // RUN: %clang %s -### -o %t.o 2>&1 \
    278 // RUN:     -target arm-linux-gnueabi \
    279 // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
    280 // CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
    281 // CHECK-ARM: "-m" "armelf_linux_eabi"
    282 // CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
    283 //
    284 // RUN: %clang %s -### -o %t.o 2>&1 \
    285 // RUN:     -target arm-linux-gnueabihf \
    286 // RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s
    287 // CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
    288 // CHECK-ARM-HF: "-m" "armelf_linux_eabi"
    289 // CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
    290 //
    291 // Check that we do not pass --hash-style=gnu and --hash-style=both to linker
    292 // and provide correct path to the dynamic linker and emulation mode when build
    293 // for MIPS platforms.
    294 // RUN: %clang %s -### -o %t.o 2>&1 \
    295 // RUN:     -target mips-linux-gnu \
    296 // RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
    297 // CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
    298 // CHECK-MIPS: "-m" "elf32btsmip"
    299 // CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
    300 // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
    301 // RUN: %clang %s -### -o %t.o 2>&1 \
    302 // RUN:     -target mipsel-linux-gnu \
    303 // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
    304 // CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
    305 // CHECK-MIPSEL: "-m" "elf32ltsmip"
    306 // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
    307 // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
    308 // RUN: %clang %s -### -o %t.o 2>&1 \
    309 // RUN:     -target mips64-linux-gnu \
    310 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
    311 // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
    312 // CHECK-MIPS64: "-m" "elf64btsmip"
    313 // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
    314 // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
    315 // RUN: %clang %s -### -o %t.o 2>&1 \
    316 // RUN:     -target mips64el-linux-gnu \
    317 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
    318 // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
    319 // CHECK-MIPS64EL: "-m" "elf64ltsmip"
    320 // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
    321 // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
    322 // RUN: %clang %s -### -o %t.o 2>&1 \
    323 // RUN:     -target mips64-linux-gnu -mabi=n32 \
    324 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
    325 // CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
    326 // CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
    327 // CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
    328 // CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
    329 // RUN: %clang %s -### -o %t.o 2>&1 \
    330 // RUN:     -target mips64el-linux-gnu -mabi=n32 \
    331 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
    332 // CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
    333 // CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
    334 // CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
    335 // CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
    336 //
    337 // Thoroughly exercise the Debian multiarch environment.
    338 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    339 // RUN:     -target i686-linux-gnu \
    340 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    341 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
    342 // CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    343 // CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5/crtbegin.o"
    344 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
    345 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
    346 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
    347 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
    348 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
    349 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
    350 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    351 // RUN:     -target x86_64-linux-gnu \
    352 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    353 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
    354 // CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    355 // CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5/crtbegin.o"
    356 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
    357 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
    358 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
    359 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
    360 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
    361 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
    362 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    363 // RUN:     -target powerpc-linux-gnu \
    364 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    365 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
    366 // CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    367 // CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5/crtbegin.o"
    368 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
    369 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
    370 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
    371 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
    372 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
    373 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
    374 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    375 // RUN:     -target powerpc64-linux-gnu \
    376 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    377 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
    378 // CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    379 // CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5/crtbegin.o"
    380 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
    381 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
    382 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
    383 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
    384 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
    385 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
    386 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    387 // RUN:     -target mips-linux-gnu \
    388 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    389 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
    390 // CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    391 // CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/crtbegin.o"
    392 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
    393 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
    394 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
    395 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
    396 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
    397 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
    398 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    399 // RUN:     -target mipsel-linux-gnu \
    400 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    401 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
    402 // CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    403 // CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/crtbegin.o"
    404 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
    405 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
    406 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
    407 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
    408 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
    409 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
    410 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    411 // RUN:     -target mips64-linux-gnu \
    412 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    413 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
    414 // CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    415 // CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64/crtbegin.o"
    416 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
    417 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
    418 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
    419 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
    420 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
    421 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    422 // RUN:     -target mips64el-linux-gnu \
    423 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    424 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
    425 // CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    426 // CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64/crtbegin.o"
    427 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
    428 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
    429 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
    430 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
    431 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
    432 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    433 // RUN:     -target mips64-linux-gnu -mabi=n32 \
    434 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    435 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
    436 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    437 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32/crtbegin.o"
    438 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
    439 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
    440 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
    441 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
    442 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
    443 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    444 // RUN:     -target mips64el-linux-gnu -mabi=n32 \
    445 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
    446 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
    447 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    448 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32/crtbegin.o"
    449 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
    450 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
    451 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
    452 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
    453 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
    454 //
    455 // Test linker invocation on Android.
    456 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    457 // RUN:     -target arm-linux-androideabi \
    458 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    459 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
    460 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    461 // RUN:     -target arm-linux-android \
    462 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    463 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
    464 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    465 // RUN:     -target mipsel-linux-android \
    466 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    467 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
    468 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    469 // RUN:     -target i386-linux-android \
    470 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    471 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
    472 // CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    473 // CHECK-ANDROID: "{{.*}}/crtbegin_dynamic.o"
    474 // CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
    475 // CHECK-ANDROID-NOT: "gcc_s"
    476 // CHECK-ANDROID: "-lgcc"
    477 // CHECK-ANDROID: "-ldl"
    478 // CHECK-ANDROID-NOT: "gcc_s"
    479 // CHECK-ANDROID: "{{.*}}/crtend_android.o"
    480 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    481 // RUN:     -target arm-linux-androideabi \
    482 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    483 // RUN:     -shared \
    484 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
    485 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    486 // RUN:     -target arm-linux-android \
    487 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    488 // RUN:     -shared \
    489 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
    490 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    491 // RUN:     -target mipsel-linux-android \
    492 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    493 // RUN:     -shared \
    494 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
    495 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    496 // RUN:     -target i386-linux-android \
    497 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    498 // RUN:     -shared \
    499 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
    500 // CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    501 // CHECK-ANDROID-SO: "-Bsymbolic"
    502 // CHECK-ANDROID-SO: "{{.*}}/crtbegin_so.o"
    503 // CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
    504 // CHECK-ANDROID-SO-NOT: "gcc_s"
    505 // CHECK-ANDROID-SO: "-lgcc"
    506 // CHECK-ANDROID-SO: "-ldl"
    507 // CHECK-ANDROID-SO-NOT: "gcc_s"
    508 // CHECK-ANDROID-SO: "{{.*}}/crtend_so.o"
    509 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    510 // RUN:     -target arm-linux-androideabi \
    511 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    512 // RUN:     -static \
    513 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
    514 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    515 // RUN:     -target arm-linux-android \
    516 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    517 // RUN:     -static \
    518 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
    519 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    520 // RUN:     -target mipsel-linux-android \
    521 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    522 // RUN:     -static \
    523 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
    524 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    525 // RUN:     -target i386-linux-android \
    526 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    527 // RUN:     -static \
    528 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
    529 // CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    530 // CHECK-ANDROID-STATIC: "{{.*}}/crtbegin_static.o"
    531 // CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
    532 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
    533 // CHECK-ANDROID-STATIC: "-lgcc"
    534 // CHECK-ANDROID-STATIC-NOT: "-ldl"
    535 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
    536 // CHECK-ANDROID-STATIC: "{{.*}}/crtend_android.o"
    537 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    538 // RUN:     -target arm-linux-androideabi \
    539 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
    540 // RUN:     -pie \
    541 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
    542 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    543 // RUN:     -target arm-linux-android \
    544 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    545 // RUN:     -pie \
    546 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
    547 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    548 // RUN:     -target mipsel-linux-android \
    549 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    550 // RUN:     -pie \
    551 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
    552 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    553 // RUN:     -target i386-linux-android \
    554 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
    555 // RUN:     -pie \
    556 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
    557 // CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    558 // CHECK-ANDROID-PIE: "{{.*}}/crtbegin_dynamic.o"
    559 // CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
    560 // CHECK-ANDROID-PIE-NOT: "gcc_s"
    561 // CHECK-ANDROID-PIE: "-lgcc"
    562 // CHECK-ANDROID-PIE-NOT: "gcc_s"
    563 // CHECK-ANDROID-PIE: "{{.*}}/crtend_android.o"
    564 //
    565 // Check linker invocation on Debian 6 MIPS 32/64-bit.
    566 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    567 // RUN:     -target mipsel-linux-gnu \
    568 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
    569 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
    570 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    571 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crt1.o"
    572 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crti.o"
    573 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/crtbegin.o"
    574 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
    575 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
    576 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
    577 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
    578 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
    579 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
    580 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
    581 //
    582 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    583 // RUN:     -target mips64el-linux-gnu \
    584 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
    585 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
    586 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    587 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crt1.o"
    588 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crti.o"
    589 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64/crtbegin.o"
    590 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
    591 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
    592 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
    593 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
    594 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
    595 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
    596 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
    597 //
    598 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    599 // RUN:     -target mips64el-linux-gnu -mabi=n32 \
    600 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
    601 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
    602 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    603 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crt1.o"
    604 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crti.o"
    605 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32/crtbegin.o"
    606 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
    607 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
    608 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
    609 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
    610 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
    611 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
    612 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
    613 //
    614 // Test linker invocation for Freescale SDK (OpenEmbedded).
    615 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    616 // RUN:     -target powerpc-fsl-linux \
    617 // RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
    618 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
    619 // CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    620 // CHECK-FSL-PPC: "-m" "elf32ppclinux"
    621 // CHECK-FSL-PPC: "{{.*}}/crt1.o"
    622 // CHECK-FSL-PPC: "{{.*}}/crtbegin.o"
    623 // CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
    624 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
    625 // RUN:     -target powerpc64-fsl-linux \
    626 // RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
    627 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
    628 // CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
    629 // CHECK-FSL-PPC64: "-m" "elf64ppc"
    630 // CHECK-FSL-PPC64: "{{.*}}/crt1.o"
    631 // CHECK-FSL-PPC64: "{{.*}}/crtbegin.o"
    632 // CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
    633 //
    634 // Check that crtfastmath.o is linked with -ffast-math.
    635 // RUN: %clang -target x86_64-unknown-linux -### %s \
    636 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
    637 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
    638 // RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math \
    639 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
    640 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
    641 // RUN: %clang -target x86_64-unknown-linux -### %s -funsafe-math-optimizations\
    642 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
    643 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
    644 // RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
    645 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
    646 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
    647 // We don't have crtfastmath.o in the i386 tree, use it to check that file
    648 // detection works.
    649 // RUN: %clang -target i386-unknown-linux -### %s -ffast-math \
    650 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
    651 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
    652 // CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtfastmath.o
    653 // CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
    654