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: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 9 // CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o" 10 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0" 11 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib" 12 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.." 13 // CHECK-LD-32: "-L[[SYSROOT]]/lib" 14 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib" 15 // 16 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 17 // RUN: -target x86_64-unknown-linux \ 18 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 19 // RUN: | FileCheck --check-prefix=CHECK-LD-64 %s 20 // CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 21 // CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o" 22 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0" 23 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib" 24 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.." 25 // CHECK-LD-64: "-L[[SYSROOT]]/lib" 26 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib" 27 // 28 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 29 // RUN: -target i386-unknown-linux -m32 \ 30 // RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \ 31 // RUN: | FileCheck --check-prefix=CHECK-32-TO-32 %s 32 // CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 33 // CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o" 34 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0" 35 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32" 36 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32" 37 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32" 38 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32" 39 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib" 40 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.." 41 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib" 42 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib" 43 // 44 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 45 // RUN: -target i386-unknown-linux -m64 \ 46 // RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \ 47 // RUN: | FileCheck --check-prefix=CHECK-32-TO-64 %s 48 // CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 49 // CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64/crtbegin.o" 50 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64" 51 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64" 52 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64" 53 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64" 54 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64" 55 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0" 56 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib" 57 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.." 58 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib" 59 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib" 60 // 61 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 62 // RUN: -target x86_64-unknown-linux -m64 \ 63 // RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \ 64 // RUN: | FileCheck --check-prefix=CHECK-64-TO-64 %s 65 // CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 66 // CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o" 67 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0" 68 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64" 69 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64" 70 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64" 71 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64" 72 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib" 73 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.." 74 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib" 75 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib" 76 // 77 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 78 // RUN: -target x86_64-unknown-linux -m32 \ 79 // RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \ 80 // RUN: | FileCheck --check-prefix=CHECK-64-TO-32 %s 81 // CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 82 // CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o" 83 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32" 84 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32" 85 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32" 86 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32" 87 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32" 88 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0" 89 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib" 90 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.." 91 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib" 92 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib" 93 // 94 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 95 // RUN: -target x86_64-unknown-linux -m32 \ 96 // RUN: -gcc-toolchain %S/Inputs/multilib_64bit_linux_tree/usr \ 97 // RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \ 98 // RUN: | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s 99 // CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 100 // CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o" 101 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32" 102 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32" 103 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32" 104 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0" 105 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib" 106 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib" 107 // 108 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 109 // RUN: -target i386-unknown-linux -m32 \ 110 // RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \ 111 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 112 // RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s 113 // CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 114 // CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0/crtbegin.o" 115 // CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0" 116 // 117 // Check that with 64-bit builds, we don't actually use the install directory 118 // as its version of GCC is lower than our sysrooted version. 119 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 120 // RUN: -target x86_64-unknown-linux -m64 \ 121 // RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \ 122 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 123 // RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s 124 // CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 125 // CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o" 126 // CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0" 127 // 128 // Check that we support unusual patch version formats, including missing that 129 // component. 130 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 131 // RUN: -target i386-unknown-linux -m32 \ 132 // RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \ 133 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 134 // RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s 135 // CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 136 // CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7/crtbegin.o" 137 // CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7" 138 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 139 // RUN: -target i386-unknown-linux -m32 \ 140 // RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \ 141 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 142 // RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s 143 // CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 144 // CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x/crtbegin.o" 145 // CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x" 146 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 147 // RUN: -target i386-unknown-linux -m32 \ 148 // RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \ 149 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 150 // RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s 151 // CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 152 // CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5/crtbegin.o" 153 // CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5" 154 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 155 // RUN: -target i386-unknown-linux -m32 \ 156 // RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \ 157 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 158 // RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s 159 // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 160 // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99/crtbegin.o" 161 // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99" 162 // 163 // Test a very broken version of multiarch that shipped in Ubuntu 11.04. 164 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 165 // RUN: -target i386-unknown-linux \ 166 // RUN: --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \ 167 // RUN: | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s 168 // CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 169 // CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/crtbegin.o" 170 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5" 171 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu" 172 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu" 173 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.." 174 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib" 175 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib" 176 // 177 // Check multi arch support on Ubuntu 12.04 LTS. 178 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 179 // RUN: -target arm-unknown-linux-gnueabihf \ 180 // RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \ 181 // RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s 182 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 183 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crt1.o" 184 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crti.o" 185 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o" 186 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3" 187 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf" 188 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf" 189 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf" 190 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.." 191 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtend.o" 192 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crtn.o" 193 // 194 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 195 // RUN: -target arm-unknown-linux-gnueabi \ 196 // RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \ 197 // RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s 198 // CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 199 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crt1.o" 200 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crti.o" 201 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o" 202 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1" 203 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi" 204 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi" 205 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi" 206 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.." 207 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtend.o" 208 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crtn.o" 209 // 210 // Test the setup that shipped in SUSE 10.3 on ppc64. 211 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 212 // RUN: -target powerpc64-suse-linux \ 213 // RUN: --sysroot=%S/Inputs/suse_10.3_ppc64_tree \ 214 // RUN: | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s 215 // CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 216 // CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64/crtbegin.o" 217 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64" 218 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64" 219 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64" 220 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64" 221 // 222 // Check dynamic-linker for different archs 223 // RUN: %clang %s -### -o %t.o 2>&1 \ 224 // RUN: -target arm-linux-gnueabi \ 225 // RUN: | FileCheck --check-prefix=CHECK-ARM %s 226 // CHECK-ARM: "{{.*}}ld{{(.exe)?}}" 227 // CHECK-ARM: "-m" "armelf_linux_eabi" 228 // CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3" 229 // 230 // RUN: %clang %s -### -o %t.o 2>&1 \ 231 // RUN: -target arm-linux-gnueabihf \ 232 // RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s 233 // CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}" 234 // CHECK-ARM-HF: "-m" "armelf_linux_eabi" 235 // CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3" 236 // 237 // Check that we do not pass --hash-style=gnu and --hash-style=both to linker 238 // and provide correct path to the dynamic linker and emulation mode when build 239 // for MIPS platforms. 240 // RUN: %clang %s -### -o %t.o 2>&1 \ 241 // RUN: -target mips-linux-gnu -ccc-clang-archs mips \ 242 // RUN: | FileCheck --check-prefix=CHECK-MIPS %s 243 // CHECK-MIPS: "{{.*}}ld{{(.exe)?}}" 244 // CHECK-MIPS: "-m" "elf32btsmip" 245 // CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1" 246 // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}" 247 // RUN: %clang %s -### -o %t.o 2>&1 \ 248 // RUN: -target mipsel-linux-gnu -ccc-clang-archs mipsel \ 249 // RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s 250 // CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}" 251 // CHECK-MIPSEL: "-m" "elf32ltsmip" 252 // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1" 253 // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}" 254 // RUN: %clang %s -### -o %t.o 2>&1 \ 255 // RUN: -target mips64-linux-gnu -ccc-clang-archs mips64 \ 256 // RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s 257 // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}" 258 // CHECK-MIPS64: "-m" "elf64btsmip" 259 // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1" 260 // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}" 261 // RUN: %clang %s -### -o %t.o 2>&1 \ 262 // RUN: -target mips64el-linux-gnu -ccc-clang-archs mips64el \ 263 // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s 264 // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}" 265 // CHECK-MIPS64EL: "-m" "elf64ltsmip" 266 // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1" 267 // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}" 268 // 269 // Thoroughly exercise the Debian multiarch environment. 270 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 271 // RUN: -target i686-linux-gnu \ 272 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 273 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s 274 // CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 275 // CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5/crtbegin.o" 276 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5" 277 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu" 278 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu" 279 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.." 280 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib" 281 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib" 282 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 283 // RUN: -target x86_64-linux-gnu \ 284 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 285 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s 286 // CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 287 // CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5/crtbegin.o" 288 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5" 289 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu" 290 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu" 291 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.." 292 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib" 293 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib" 294 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 295 // RUN: -target powerpc-linux-gnu \ 296 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 297 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s 298 // CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 299 // CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5/crtbegin.o" 300 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5" 301 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu" 302 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu" 303 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.." 304 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib" 305 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib" 306 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 307 // RUN: -target powerpc64-linux-gnu \ 308 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 309 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s 310 // CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 311 // CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5/crtbegin.o" 312 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5" 313 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu" 314 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu" 315 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.." 316 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib" 317 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib" 318 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 319 // RUN: -target mips-linux-gnu \ 320 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 321 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s 322 // CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 323 // CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/crtbegin.o" 324 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5" 325 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu" 326 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu" 327 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.." 328 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib" 329 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib" 330 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 331 // RUN: -target mipsel-linux-gnu \ 332 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 333 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s 334 // CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 335 // CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/crtbegin.o" 336 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5" 337 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu" 338 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu" 339 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.." 340 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib" 341 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib" 342 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 343 // RUN: -target mips64-linux-gnu \ 344 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 345 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s 346 // CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 347 // CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64/crtbegin.o" 348 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64" 349 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5" 350 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.." 351 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib" 352 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib" 353 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 354 // RUN: -target mips64el-linux-gnu \ 355 // RUN: --sysroot=%S/Inputs/debian_multiarch_tree \ 356 // RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s 357 // CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 358 // CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64/crtbegin.o" 359 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64" 360 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5" 361 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.." 362 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib" 363 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib" 364 // 365 // Test linker invocation on Android. 366 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 367 // RUN: -target arm-linux-androideabi \ 368 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 369 // RUN: | FileCheck --check-prefix=CHECK-ANDROID %s 370 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 371 // RUN: -target arm-linux-android \ 372 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 373 // RUN: | FileCheck --check-prefix=CHECK-ANDROID %s 374 // CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 375 // CHECK-ANDROID: "{{.*}}/crtbegin_dynamic.o" 376 // CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib" 377 // CHECK-ANDROID-NOT: "gcc_s" 378 // CHECK-ANDROID: "-lgcc" 379 // CHECK-ANDROID-NOT: "gcc_s" 380 // CHECK-ANDROID: "{{.*}}/crtend_android.o" 381 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 382 // RUN: -target arm-linux-androideabi \ 383 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 384 // RUN: -shared \ 385 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s 386 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 387 // RUN: -target arm-linux-android \ 388 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 389 // RUN: -shared \ 390 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s 391 // CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 392 // CHECK-ANDROID-SO: "{{.*}}/crtbegin_so.o" 393 // CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib" 394 // CHECK-ANDROID-SO-NOT: "gcc_s" 395 // CHECK-ANDROID-SO: "-lgcc" 396 // CHECK-ANDROID-SO-NOT: "gcc_s" 397 // CHECK-ANDROID-SO: "{{.*}}/crtend_so.o" 398 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 399 // RUN: -target arm-linux-androideabi \ 400 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 401 // RUN: -static \ 402 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s 403 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 404 // RUN: -target arm-linux-android \ 405 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 406 // RUN: -static \ 407 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s 408 // CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 409 // CHECK-ANDROID-STATIC: "{{.*}}/crtbegin_static.o" 410 // CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib" 411 // CHECK-ANDROID-STATIC-NOT: "gcc_s" 412 // CHECK-ANDROID-STATIC: "-lgcc" 413 // CHECK-ANDROID-STATIC-NOT: "gcc_s" 414 // CHECK-ANDROID-STATIC: "{{.*}}/crtend_android.o" 415 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 416 // RUN: -target arm-linux-androideabi \ 417 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 418 // RUN: -pie \ 419 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s 420 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 421 // RUN: -target arm-linux-android \ 422 // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 423 // RUN: -pie \ 424 // RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s 425 // CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" 426 // CHECK-ANDROID-PIE: "{{.*}}/crtbegin_dynamic.o" 427 // CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib" 428 // CHECK-ANDROID-PIE-NOT: "gcc_s" 429 // CHECK-ANDROID-PIE: "-lgcc" 430 // CHECK-ANDROID-PIE-NOT: "gcc_s" 431 // CHECK-ANDROID-PIE: "{{.*}}/crtend_android.o" 432