• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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