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