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:     --gcc-toolchain="" \
7 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
8 // RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s
9 // CHECK-LD-32-NOT: warning:
10 // CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
11 // CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
12 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
13 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
14 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
15 // CHECK-LD-32: "-L[[SYSROOT]]/lib"
16 // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
17 //
18 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
19 // RUN:     --target=x86_64-unknown-linux \
20 // RUN:     --gcc-toolchain="" \
21 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
22 // RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s
23 // CHECK-LD-64-NOT: warning:
24 // CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
25 // CHECK-LD-64: "--eh-frame-hdr"
26 // CHECK-LD-64: "-m" "elf_x86_64"
27 // CHECK-LD-64: "-dynamic-linker"
28 // CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
29 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
30 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
31 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
32 // CHECK-LD-64: "-L[[SYSROOT]]/lib"
33 // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
34 // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
35 // CHECK-LD-64: "-lc"
36 // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
37 //
38 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
39 // RUN:     --target=x86_64-unknown-linux-gnux32 \
40 // RUN:     --gcc-toolchain="" \
41 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
42 // RUN:   | FileCheck --check-prefix=CHECK-LD-X32 %s
43 // CHECK-LD-X32-NOT: warning:
44 // CHECK-LD-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
45 // CHECK-LD-X32: "--eh-frame-hdr"
46 // CHECK-LD-X32: "-m" "elf32_x86_64"
47 // CHECK-LD-X32: "-dynamic-linker"
48 // CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
49 // CHECK-LD-X32: "-lc"
50 // CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
51 //
52 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
53 // RUN:     --target=x86_64-unknown-linux \
54 // RUN:     --gcc-toolchain="" \
55 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
56 // RUN:     --rtlib=compiler-rt \
57 // RUN:   | FileCheck --check-prefix=CHECK-LD-RT %s
58 // CHECK-LD-RT-NOT: warning:
59 // CHECK-LD-RT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
60 // CHECK-LD-RT: "--eh-frame-hdr"
61 // CHECK-LD-RT: "-m" "elf_x86_64"
62 // CHECK-LD-RT: "-dynamic-linker"
63 // CHECK-LD-RT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
64 // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
65 // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
66 // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
67 // CHECK-LD-RT: "-L[[SYSROOT]]/lib"
68 // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib"
69 // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" "-lgcc_s"
70 // CHECK-LD-RT: "-lc"
71 // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" "-lgcc_s"
72 //
73 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
74 // RUN:     --target=x86_64-unknown-linux \
75 // RUN:     --gcc-toolchain="" \
76 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
77 // RUN:     --rtlib=libgcc \
78 // RUN:   | FileCheck --check-prefix=CHECK-LD-GCC %s
79 // CHECK-LD-GCC-NOT: warning:
80 // CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
81 // CHECK-LD-GCC: "--eh-frame-hdr"
82 // CHECK-LD-GCC: "-m" "elf_x86_64"
83 // CHECK-LD-GCC: "-dynamic-linker"
84 // CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
85 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
86 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
87 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
88 // CHECK-LD-GCC: "-L[[SYSROOT]]/lib"
89 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"
90 // CHECK-LD-GCC "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
91 // CHECK-LD-GCC: "-lc"
92 // CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
93 //
94 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
95 // RUN:     --target=x86_64-unknown-linux \
96 // RUN:     -static-libgcc \
97 // RUN:     --gcc-toolchain="" \
98 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
99 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
100 // CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
101 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
102 // CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
103 // CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
104 // CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
105 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
106 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
107 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
108 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
109 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
110 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
111 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
112 // CHECK-LD-64-STATIC-LIBGCC: "-lc"
113 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
114 //
115 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
116 // RUN:     --target=x86_64-unknown-linux \
117 // RUN:     -static \
118 // RUN:     --gcc-toolchain="" \
119 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
120 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
121 // CHECK-LD-64-STATIC-NOT: warning:
122 // CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
123 // CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
124 // CHECK-LD-64-STATIC: "-m" "elf_x86_64"
125 // CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
126 // CHECK-LD-64-STATIC: "-static"
127 // CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbeginT.o"
128 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
129 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
130 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
131 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
132 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
133 // CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
134 //
135 // Check that flags can be combined. The -static dominates.
136 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
137 // RUN:     --target=x86_64-unknown-linux \
138 // RUN:     -static-libgcc -static \
139 // RUN:     --gcc-toolchain="" \
140 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
141 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
142 //
143 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
144 // RUN:     --target=i386-unknown-linux -m32 \
145 // RUN:     --gcc-toolchain="" \
146 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
147 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s
148 // CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
149 // CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
150 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
151 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
152 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
153 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
154 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
155 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
156 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
157 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
158 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
159 //
160 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
161 // RUN:     --target=i386-unknown-linux -m64 \
162 // RUN:     --gcc-toolchain="" \
163 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
164 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s
165 // CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
166 // CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64{{/|\\\\}}crtbegin.o"
167 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
168 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
169 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
170 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
171 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
172 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
173 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
174 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
175 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
176 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
177 //
178 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
179 // RUN:     --target=x86_64-unknown-linux -m64 \
180 // RUN:     --gcc-toolchain="" \
181 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
182 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s
183 // CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
184 // CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
185 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
186 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
187 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
188 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
189 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
190 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
191 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
192 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
193 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
194 //
195 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
196 // RUN:     --target=x86_64-unknown-linux -m32 \
197 // RUN:     --gcc-toolchain="" \
198 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
199 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s
200 // CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
201 // CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
202 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
203 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
204 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
205 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
206 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
207 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
208 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
209 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
210 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
211 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
212 //
213 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
214 // RUN:     --target=x86_64-unknown-linux-gnux32 \
215 // RUN:     --gcc-toolchain="" \
216 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
217 // RUN:   | FileCheck --check-prefix=CHECK-X32 %s
218 // CHECK-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
219 // CHECK-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
220 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
221 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
222 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
223 // CHECK-X32: "-L[[SYSROOT]]/lib/../libx32"
224 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
225 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
226 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
227 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
228 // CHECK-X32: "-L[[SYSROOT]]/lib"
229 // CHECK-X32: "-L[[SYSROOT]]/usr/lib"
230 //
231 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
232 // RUN:     --target=x86_64-unknown-linux -mx32 \
233 // RUN:     --gcc-toolchain="" \
234 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
235 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-X32 %s
236 // CHECK-64-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
237 // CHECK-64-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
238 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
239 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
240 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
241 // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
242 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
243 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
244 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
245 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
246 // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib"
247 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib"
248 //
249 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
250 // RUN:     --target=i386-unknown-linux -mx32 \
251 // RUN:     --gcc-toolchain="" \
252 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
253 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-X32 %s
254 // CHECK-32-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
255 // CHECK-32-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
256 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
257 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
258 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
259 // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
260 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
261 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
262 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
263 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
264 // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib"
265 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib"
266 //
267 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
268 // RUN:     --target=x86_64-unknown-linux-gnux32 -m64 \
269 // RUN:     --gcc-toolchain="" \
270 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
271 // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-64 %s
272 // CHECK-X32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
273 // CHECK-X32-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
274 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
275 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
276 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
277 // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
278 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
279 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
280 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
281 // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib"
282 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib"
283 //
284 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
285 // RUN:     --target=x86_64-unknown-linux-gnux32 -m32 \
286 // RUN:     --gcc-toolchain="" \
287 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
288 // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-32 %s
289 // CHECK-X32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
290 // CHECK-X32-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
291 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
292 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
293 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
294 // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
295 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
296 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
297 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
298 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
299 // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib"
300 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib"
301 //
302 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
303 // RUN:     --target=x86_64-unknown-linux -m32 \
304 // RUN:     --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \
305 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
306 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
307 // CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
308 // CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
309 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
310 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
311 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
312 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
313 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
314 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
315 //
316 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
317 // RUN:     --target=i386-unknown-linux -m32 \
318 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
319 // RUN:     --gcc-toolchain="" \
320 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
321 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
322 // CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
323 // CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0{{/|\\\\}}crtbegin.o"
324 // CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
325 //
326 // Check that with 64-bit builds, we don't actually use the install directory
327 // as its version of GCC is lower than our sysrooted version.
328 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
329 // RUN:     --target=x86_64-unknown-linux -m64 \
330 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
331 // RUN:     --gcc-toolchain="" \
332 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
333 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
334 // CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
335 // CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
336 // CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
337 //
338 // Check that we support unusual patch version formats, including missing that
339 // component.
340 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
341 // RUN:     --target=i386-unknown-linux -m32 \
342 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
343 // RUN:     --gcc-toolchain="" \
344 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
345 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
346 // CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
347 // CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7{{/|\\\\}}crtbegin.o"
348 // CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
349 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
350 // RUN:     --target=i386-unknown-linux -m32 \
351 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
352 // RUN:     --gcc-toolchain="" \
353 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
354 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
355 // CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
356 // CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x{{/|\\\\}}crtbegin.o"
357 // CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
358 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
359 // RUN:     --target=i386-unknown-linux -m32 \
360 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
361 // RUN:     --gcc-toolchain="" \
362 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
363 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
364 // CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
365 // CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5{{/|\\\\}}crtbegin.o"
366 // CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
367 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
368 // RUN:     --target=i386-unknown-linux -m32 \
369 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
370 // RUN:     --gcc-toolchain="" \
371 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
372 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
373 // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
374 // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99{{/|\\\\}}crtbegin.o"
375 // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
376 //
377 // Test a simulated installation of libc++ on Linux, both through sysroot and
378 // the installation path of Clang.
379 // RUN: %clangxx -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
380 // RUN:     -target x86_64-unknown-linux-gnu \
381 // RUN:     -stdlib=libc++ \
382 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
383 // RUN:     --gcc-toolchain="" \
384 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
385 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
386 // CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
387 // CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
388 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
389 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
390 // CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"
391 // RUN: %clang -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
392 // RUN:     -target x86_64-unknown-linux-gnu \
393 // RUN:     -stdlib=libc++ \
394 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
395 // RUN:     --gcc-toolchain="" \
396 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
397 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
398 // CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
399 // CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
400 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
401 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
402 // CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"
403 // CHECK-BASIC-LIBCXX-INSTALL: "-L[[SYSROOT]]/usr/bin/../lib"
404 //
405 // Test a very broken version of multiarch that shipped in Ubuntu 11.04.
406 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
407 // RUN:     --target=i386-unknown-linux \
408 // RUN:     --gcc-toolchain="" \
409 // RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
410 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
411 // CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
412 // CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
413 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
414 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
415 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
416 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
417 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
418 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
419 //
420 // Check multi arch support on Ubuntu 12.04 LTS.
421 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
422 // RUN:     --target=arm-unknown-linux-gnueabihf \
423 // RUN:     --gcc-toolchain="" \
424 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
425 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
426 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
427 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crt1.o"
428 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crti.o"
429 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"
430 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
431 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
432 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
433 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
434 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
435 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"
436 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crtn.o"
437 //
438 // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.
439 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
440 // RUN:     --target=arm-linux-gnueabihf \
441 // RUN:     --gcc-toolchain="" \
442 // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
443 // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s
444 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
445 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "/lib/ld-linux-armhf.so.3"
446 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"
447 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"
448 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"
449 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"
450 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"
451 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"
452 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/../lib"
453 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"
454 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"
455 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"
456 //
457 // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.
458 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
459 // RUN:     --target=arm-linux-gnueabi \
460 // RUN:     --gcc-toolchain="" \
461 // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
462 // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s
463 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
464 // CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "/lib/ld-linux.so.3"
465 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"
466 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"
467 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"
468 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"
469 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"
470 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"
471 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/../lib"
472 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"
473 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"
474 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"
475 //
476 // Check Ubuntu 14.04 on powerpc64le.
477 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
478 // RUN:     --target=powerpc64le-unknown-linux-gnu \
479 // RUN:     --gcc-toolchain="" \
480 // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
481 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
482 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
483 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crt1.o"
484 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crti.o"
485 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtbegin.o"
486 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8"
487 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu"
488 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/lib/powerpc64le-linux-gnu"
489 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
490 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../.."
491 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtend.o"
492 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crtn.o"
493 //
494 // Check Ubuntu 14.04 on x32.
495 // "/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o" "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32/crtn.o"
496 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
497 // RUN:     --target=x86_64-unknown-linux-gnux32 \
498 // RUN:     --gcc-toolchain="" \
499 // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
500 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-X32 %s
501 // CHECK-UBUNTU-14-04-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
502 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crt1.o"
503 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crti.o"
504 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtbegin.o"
505 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/x32"
506 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32"
507 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/lib/../libx32"
508 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
509 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu/../../libx32"
510 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8"
511 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.."
512 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtend.o"
513 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crtn.o"
514 //
515 // Check fedora 18 on arm.
516 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
517 // RUN:     --target=armv7-unknown-linux-gnueabihf \
518 // RUN:     --gcc-toolchain="" \
519 // RUN:     --sysroot=%S/Inputs/fedora_18_tree \
520 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
521 // CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
522 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"
523 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crti.o"
524 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"
525 // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
526 // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib"
527 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"
528 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crtn.o"
529 //
530 // Check Fedora 21 on AArch64.
531 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
532 // RUN:     --target=arm64-unknown-linux-gnu \
533 // RUN:     --gcc-toolchain="" \
534 // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
535 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
536 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
537 // RUN:     --target=aarch64-unknown-linux-gnu \
538 // RUN:     --gcc-toolchain="" \
539 // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
540 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
541 // CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
542 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"
543 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"
544 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"
545 // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"
546 // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"
547 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"
548 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"
549 //
550 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
551 // RUN:     --target=arm-unknown-linux-gnueabi \
552 // RUN:     --gcc-toolchain="" \
553 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
554 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
555 // CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
556 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
557 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
558 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
559 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
560 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
561 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
562 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
563 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
564 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
565 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crtn.o"
566 //
567 // Test the setup that shipped in SUSE 10.3 on ppc64.
568 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
569 // RUN:     --target=powerpc64-suse-linux \
570 // RUN:     --gcc-toolchain="" \
571 // RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
572 // RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
573 // CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
574 // CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
575 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
576 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
577 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
578 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
579 //
580 // Check dynamic-linker for different archs
581 // RUN: %clang %s -### -o %t.o 2>&1 \
582 // RUN:     --target=arm-linux-gnueabi \
583 // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
584 // CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
585 // CHECK-ARM: "-m" "armelf_linux_eabi"
586 // CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
587 //
588 // RUN: %clang %s -### -o %t.o 2>&1 \
589 // RUN:     --target=arm-linux-gnueabihf \
590 // RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s
591 // CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
592 // CHECK-ARM-HF: "-m" "armelf_linux_eabi"
593 // CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
594 //
595 // RUN: %clang %s -### -o %t.o 2>&1 \
596 // RUN:     --target=powerpc64-linux-gnu \
597 // RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s
598 // CHECK-PPC64: "{{.*}}ld{{(.exe)?}}"
599 // CHECK-PPC64: "-m" "elf64ppc"
600 // CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1"
601 //
602 // RUN: %clang %s -### -o %t.o 2>&1 \
603 // RUN:     --target=powerpc64-linux-gnu -mabi=elfv1 \
604 // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
605 // CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}"
606 // CHECK-PPC64-ELFv1: "-m" "elf64ppc"
607 // CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1"
608 //
609 // RUN: %clang %s -### -o %t.o 2>&1 \
610 // RUN:     --target=powerpc64-linux-gnu -mabi=elfv2 \
611 // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s
612 // CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}"
613 // CHECK-PPC64-ELFv2: "-m" "elf64ppc"
614 // CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2"
615 //
616 // RUN: %clang %s -### -o %t.o 2>&1 \
617 // RUN:     --target=powerpc64le-linux-gnu \
618 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE %s
619 // CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}"
620 // CHECK-PPC64LE: "-m" "elf64lppc"
621 // CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2"
622 //
623 // RUN: %clang %s -### -o %t.o 2>&1 \
624 // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv1 \
625 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s
626 // CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}"
627 // CHECK-PPC64LE-ELFv1: "-m" "elf64lppc"
628 // CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1"
629 //
630 // RUN: %clang %s -### -o %t.o 2>&1 \
631 // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv2 \
632 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s
633 // CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}"
634 // CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"
635 // CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2"
636 //
637 // Check that we do not pass --hash-style=gnu and --hash-style=both to linker
638 // and provide correct path to the dynamic linker and emulation mode when build
639 // for MIPS platforms.
640 // RUN: %clang %s -### -o %t.o 2>&1 \
641 // RUN:     --target=mips-linux-gnu \
642 // RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
643 // CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
644 // CHECK-MIPS: "-m" "elf32btsmip"
645 // CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
646 // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
647 //
648 // RUN: %clang %s -### -o %t.o 2>&1 \
649 // RUN:     --target=mipsel-linux-gnu \
650 // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
651 // CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
652 // CHECK-MIPSEL: "-m" "elf32ltsmip"
653 // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
654 // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
655 //
656 // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mnan=2008 \
657 // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL-NAN2008 %s
658 // CHECK-MIPSEL-NAN2008: "{{.*}}ld{{(.exe)?}}"
659 // CHECK-MIPSEL-NAN2008: "-m" "elf32ltsmip"
660 // CHECK-MIPSEL-NAN2008: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
661 // CHECK-MIPSEL-NAN2008-NOT: "--hash-style={{gnu|both}}"
662 //
663 // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mcpu=mips32r6 \
664 // RUN:   | FileCheck --check-prefix=CHECK-MIPS32R6EL %s
665 // CHECK-MIPS32R6EL: "{{.*}}ld{{(.exe)?}}"
666 // CHECK-MIPS32R6EL: "-m" "elf32ltsmip"
667 // CHECK-MIPS32R6EL: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
668 // CHECK-MIPS32R6EL-NOT: "--hash-style={{gnu|both}}"
669 //
670 // RUN: %clang %s -### -o %t.o 2>&1 \
671 // RUN:     --target=mips64-linux-gnu \
672 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
673 // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
674 // CHECK-MIPS64: "-m" "elf64btsmip"
675 // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
676 // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
677 //
678 // RUN: %clang %s -### -o %t.o 2>&1 \
679 // RUN:     --target=mips64el-linux-gnu \
680 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
681 // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
682 // CHECK-MIPS64EL: "-m" "elf64ltsmip"
683 // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
684 // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
685 //
686 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mnan=2008 \
687 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s
688 // CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}"
689 // CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip"
690 // CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib64/ld-linux-mipsn8.so.1"
691 // CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}"
692 //
693 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \
694 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64R6EL %s
695 // CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}"
696 // CHECK-MIPS64R6EL: "-m" "elf64ltsmip"
697 // CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib64/ld-linux-mipsn8.so.1"
698 // CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}"
699 //
700 // RUN: %clang %s -### -o %t.o 2>&1 \
701 // RUN:     --target=mips64-linux-gnu -mabi=n32 \
702 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
703 // CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
704 // CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
705 // CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
706 // CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
707 //
708 // RUN: %clang %s -### -o %t.o 2>&1 \
709 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
710 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
711 // CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
712 // CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
713 // CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
714 // CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
715 //
716 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mabi=n32 \
717 // RUN:   -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s
718 // CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}"
719 // CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32"
720 // CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib32/ld-linux-mipsn8.so.1"
721 // CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}"
722 //
723 // RUN: %clang %s -### -o %t.o 2>&1 \
724 // RUN:     --target=sparc-linux-gnu \
725 // RUN:   | FileCheck --check-prefix=CHECK-SPARCV8 %s
726 // CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
727 // CHECK-SPARCV8: "-m" "elf32_sparc"
728 // CHECK-SPARCV8: "-dynamic-linker" "/lib/ld-linux.so.2"
729 //
730 // RUN: %clang %s -### -o %t.o 2>&1 \
731 // RUN:     --target=sparcv9-linux-gnu \
732 // RUN:   | FileCheck --check-prefix=CHECK-SPARCV9 %s
733 // CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
734 // CHECK-SPARCV9: "-m" "elf64_sparc"
735 // CHECK-SPARCV9: "-dynamic-linker" "/lib64/ld-linux.so.2"
736 //
737 // Thoroughly exercise the Debian multiarch environment.
738 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
739 // RUN:     --target=i686-linux-gnu \
740 // RUN:     --gcc-toolchain="" \
741 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
742 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
743 // CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
744 // CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
745 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
746 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
747 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
748 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
749 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
750 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
751 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
752 // RUN:     --target=x86_64-linux-gnu \
753 // RUN:     --gcc-toolchain="" \
754 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
755 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
756 // CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
757 // CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
758 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
759 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
760 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
761 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
762 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
763 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
764 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
765 // RUN:     --target=powerpc-linux-gnu \
766 // RUN:     --gcc-toolchain="" \
767 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
768 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
769 // CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
770 // CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
771 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
772 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
773 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
774 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
775 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
776 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
777 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
778 // RUN:     --target=powerpc64-linux-gnu \
779 // RUN:     --gcc-toolchain="" \
780 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
781 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
782 // CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
783 // CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
784 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
785 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
786 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
787 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
788 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
789 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
790 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
791 // RUN:     --target=mips-linux-gnu \
792 // RUN:     --gcc-toolchain="" \
793 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
794 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
795 // CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
796 // CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
797 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
798 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
799 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
800 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
801 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
802 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
803 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
804 // RUN:     --target=mipsel-linux-gnu \
805 // RUN:     --gcc-toolchain="" \
806 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
807 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
808 // CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
809 // CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
810 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
811 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
812 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
813 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
814 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
815 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
816 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
817 // RUN:     --target=mips64-linux-gnu \
818 // RUN:     --gcc-toolchain="" \
819 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
820 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
821 // CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
822 // CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
823 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
824 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
825 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
826 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
827 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
828 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
829 // RUN:     --target=mips64el-linux-gnu \
830 // RUN:     --gcc-toolchain="" \
831 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
832 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
833 // CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
834 // CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
835 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
836 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
837 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
838 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
839 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
840 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
841 // RUN:     --target=mips64-linux-gnu -mabi=n32 \
842 // RUN:     --gcc-toolchain="" \
843 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
844 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
845 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
846 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
847 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
848 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
849 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
850 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
851 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
852 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
853 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
854 // RUN:     --gcc-toolchain="" \
855 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
856 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
857 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
858 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
859 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
860 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
861 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
862 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
863 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
864 //
865 // Test linker invocation on Android.
866 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
867 // RUN:     --target=arm-linux-androideabi \
868 // RUN:     --gcc-toolchain="" \
869 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
870 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
871 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
872 // RUN:     --target=arm-linux-android \
873 // RUN:     --gcc-toolchain="" \
874 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
875 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
876 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
877 // RUN:     --target=aarch64-linux-android \
878 // RUN:     --gcc-toolchain="" \
879 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
880 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
881 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
882 // RUN:     --target=arm64-linux-android \
883 // RUN:     --gcc-toolchain="" \
884 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
885 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
886 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
887 // RUN:     --target=mipsel-linux-android \
888 // RUN:     --gcc-toolchain="" \
889 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
890 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
891 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
892 // RUN:     --target=mips64el-linux-android \
893 // RUN:     --gcc-toolchain="" \
894 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
895 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
896 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
897 // RUN:     --target=i686-linux-android \
898 // RUN:     --gcc-toolchain="" \
899 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
900 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
901 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
902 // RUN:     --target=x86_64-linux-android \
903 // RUN:     --gcc-toolchain="" \
904 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
905 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
906 // CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
907 // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
908 // CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
909 // CHECK-ANDROID-NOT: "gcc_s"
910 // CHECK-ANDROID: "-lgcc"
911 // CHECK-ANDROID: "-ldl"
912 // CHECK-ANDROID-NOT: "gcc_s"
913 // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
914 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
915 // RUN:     --target=arm-linux-androideabi \
916 // RUN:     --gcc-toolchain="" \
917 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
918 // RUN:     -shared \
919 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
920 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
921 // RUN:     --target=arm-linux-android \
922 // RUN:     --gcc-toolchain="" \
923 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
924 // RUN:     -shared \
925 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
926 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
927 // RUN:     --target=aarch64-linux-android \
928 // RUN:     --gcc-toolchain="" \
929 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
930 // RUN:     -shared \
931 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
932 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
933 // RUN:     --target=arm64-linux-android \
934 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
935 // RUN:     -shared \
936 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
937 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
938 // RUN:     --target=mipsel-linux-android \
939 // RUN:     --gcc-toolchain="" \
940 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
941 // RUN:     -shared \
942 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
943 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
944 // RUN:     --target=mips64el-linux-android \
945 // RUN:     --gcc-toolchain="" \
946 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
947 // RUN:     -shared \
948 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
949 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
950 // RUN:     --target=i686-linux-android \
951 // RUN:     --gcc-toolchain="" \
952 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
953 // RUN:     -shared \
954 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
955 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
956 // RUN:     --target=x86_64-linux-android \
957 // RUN:     --gcc-toolchain="" \
958 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
959 // RUN:     -shared \
960 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
961 // CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
962 // CHECK-ANDROID-SO-NOT: "-Bsymbolic"
963 // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
964 // CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
965 // CHECK-ANDROID-SO-NOT: "gcc_s"
966 // CHECK-ANDROID-SO: "-lgcc"
967 // CHECK-ANDROID-SO: "-ldl"
968 // CHECK-ANDROID-SO-NOT: "gcc_s"
969 // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
970 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
971 // RUN:     --target=arm-linux-androideabi \
972 // RUN:     --gcc-toolchain="" \
973 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
974 // RUN:     -static \
975 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
976 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
977 // RUN:     --target=arm-linux-android \
978 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
979 // RUN:     -static \
980 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
981 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
982 // RUN:     --target=aarch64-linux-android \
983 // RUN:     --gcc-toolchain="" \
984 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
985 // RUN:     -static \
986 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
987 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
988 // RUN:     --target=arm64-linux-android \
989 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
990 // RUN:     -static \
991 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
992 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
993 // RUN:     --target=mipsel-linux-android \
994 // RUN:     --gcc-toolchain="" \
995 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
996 // RUN:     -static \
997 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
998 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
999 // RUN:     --target=mips64el-linux-android \
1000 // RUN:     --gcc-toolchain="" \
1001 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1002 // RUN:     -static \
1003 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1004 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1005 // RUN:     --target=i686-linux-android \
1006 // RUN:     --gcc-toolchain="" \
1007 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1008 // RUN:     -static \
1009 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1010 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1011 // RUN:     --target=x86_64-linux-android \
1012 // RUN:     --gcc-toolchain="" \
1013 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1014 // RUN:     -static \
1015 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1016 // CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1017 // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
1018 // CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
1019 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1020 // CHECK-ANDROID-STATIC: "-lgcc"
1021 // CHECK-ANDROID-STATIC-NOT: "-ldl"
1022 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1023 // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
1024 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1025 // RUN:     --target=arm-linux-androideabi \
1026 // RUN:     --gcc-toolchain="" \
1027 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1028 // RUN:     -pie \
1029 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1030 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1031 // RUN:     --target=arm-linux-android \
1032 // RUN:     --gcc-toolchain="" \
1033 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1034 // RUN:     -pie \
1035 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1036 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1037 // RUN:     --target=aarch64-linux-android \
1038 // RUN:     --gcc-toolchain="" \
1039 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1040 // RUN:     -pie \
1041 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1042 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1043 // RUN:     --target=arm64-linux-android \
1044 // RUN:     --gcc-toolchain="" \
1045 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1046 // RUN:     -pie \
1047 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1048 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1049 // RUN:     --target=mipsel-linux-android \
1050 // RUN:     --gcc-toolchain="" \
1051 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1052 // RUN:     -pie \
1053 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1054 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1055 // RUN:     --target=mips64el-linux-android \
1056 // RUN:     --gcc-toolchain="" \
1057 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1058 // RUN:     -pie \
1059 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1060 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1061 // RUN:     --target=i686-linux-android \
1062 // RUN:     --gcc-toolchain="" \
1063 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1064 // RUN:     -pie \
1065 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1066 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1067 // RUN:     --target=x86_64-linux-android \
1068 // RUN:     --gcc-toolchain="" \
1069 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1070 // RUN:     -pie \
1071 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1072 // CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1073 // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1074 // CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
1075 // CHECK-ANDROID-PIE-NOT: "gcc_s"
1076 // CHECK-ANDROID-PIE: "-lgcc"
1077 // CHECK-ANDROID-PIE-NOT: "gcc_s"
1078 // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
1079 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1080 // RUN:     --target=arm-linux-androideabi \
1081 // RUN:     --gcc-toolchain="" \
1082 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1083 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1084 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1085 // RUN:     --target=arm-linux-android \
1086 // RUN:     --gcc-toolchain="" \
1087 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1088 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1089 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1090 // RUN:     --target=mipsel-linux-android \
1091 // RUN:     --gcc-toolchain="" \
1092 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1093 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1094 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1095 // RUN:     --target=aarch64-linux-android \
1096 // RUN:     --gcc-toolchain="" \
1097 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1098 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1099 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1100 // RUN:     --target=arm64-linux-android \
1101 // RUN:     --gcc-toolchain="" \
1102 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1103 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1104 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1105 // RUN:     --target=mips64el-linux-android \
1106 // RUN:     --gcc-toolchain="" \
1107 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1108 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1109 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1110 // RUN:     --target=i686-linux-android \
1111 // RUN:     --gcc-toolchain="" \
1112 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1113 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1114 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1115 // RUN:     --target=x86_64-linux-android \
1116 // RUN:     --gcc-toolchain="" \
1117 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1118 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1119 // CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
1120 // CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
1121 //
1122 // Test that -pthread does not add -lpthread on Android.
1123 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1124 // RUN:     --target=arm-linux-androideabi -pthread \
1125 // RUN:     --gcc-toolchain="" \
1126 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1127 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1128 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1129 // RUN:     --target=arm-linux-android -pthread \
1130 // RUN:     --gcc-toolchain="" \
1131 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1132 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1133 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1134 // RUN:     --target=aarch64-linux-android -pthread \
1135 // RUN:     --gcc-toolchain="" \
1136 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1137 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1138 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1139 // RUN:     --target=arm64-linux-android -pthread \
1140 // RUN:     --gcc-toolchain="" \
1141 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1142 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1143 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1144 // RUN:     --target=mipsel-linux-android -pthread \
1145 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1146 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1147 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1148 // RUN:     --target=mips64el-linux-android -pthread \
1149 // RUN:     --gcc-toolchain="" \
1150 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1151 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1152 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1153 // RUN:     --target=i686-linux-android -pthread \
1154 // RUN:     --gcc-toolchain="" \
1155 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1156 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1157 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1158 // RUN:     --target=x86_64-linux-android -pthread \
1159 // RUN:     --gcc-toolchain="" \
1160 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1161 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1162 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1163 // RUN:     --target=arm-linux-androideabi -pthread \
1164 // RUN:     --gcc-toolchain="" \
1165 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1166 // RUN:     -shared \
1167 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1168 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1169 // RUN:     --target=arm-linux-android -pthread \
1170 // RUN:     --gcc-toolchain="" \
1171 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1172 // RUN:     -shared \
1173 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1174 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1175 // RUN:     --target=aarch64-linux-android -pthread \
1176 // RUN:     --gcc-toolchain="" \
1177 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1178 // RUN:     -shared \
1179 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1180 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1181 // RUN:     --target=arm64-linux-android -pthread \
1182 // RUN:     --gcc-toolchain="" \
1183 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1184 // RUN:     -shared \
1185 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1186 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1187 // RUN:     --target=mipsel-linux-android -pthread \
1188 // RUN:     --gcc-toolchain="" \
1189 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1190 // RUN:     -shared \
1191 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1192 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1193 // RUN:     --target=mips64el-linux-android -pthread \
1194 // RUN:     --gcc-toolchain="" \
1195 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1196 // RUN:     -shared \
1197 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1198 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1199 // RUN:     --target=i686-linux-android -pthread \
1200 // RUN:     --gcc-toolchain="" \
1201 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1202 // RUN:     -shared \
1203 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1204 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1205 // RUN:     --target=x86_64-linux-android -pthread \
1206 // RUN:     --gcc-toolchain="" \
1207 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1208 // RUN:     -shared \
1209 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1210 // CHECK-ANDROID-PTHREAD-NOT: -lpthread
1211 //
1212 // RUN: %clang -no-canonical-prefixes %t.o -### -o %t 2>&1 \
1213 // RUN:     --target=arm-linux-androideabi -pthread \
1214 // RUN:     --gcc-toolchain="" \
1215 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1216 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s
1217 // CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'
1218 //
1219 // Check linker invocation on Debian 6 MIPS 32/64-bit.
1220 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1221 // RUN:     --target=mipsel-linux-gnu \
1222 // RUN:     --gcc-toolchain="" \
1223 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1224 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
1225 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1226 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
1227 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
1228 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
1229 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
1230 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
1231 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
1232 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
1233 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1234 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
1235 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1236 //
1237 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1238 // RUN:     --target=mips64el-linux-gnu \
1239 // RUN:     --gcc-toolchain="" \
1240 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1241 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
1242 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1243 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
1244 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
1245 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
1246 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
1247 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
1248 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
1249 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
1250 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1251 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
1252 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1253 //
1254 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1255 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1256 // RUN:     --gcc-toolchain="" \
1257 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1258 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
1259 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1260 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
1261 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
1262 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
1263 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
1264 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
1265 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
1266 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
1267 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1268 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1269 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1270 //
1271 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1272 // RUN:     --target=mips64-linux-gnuabi64 -mabi=n64 \
1273 // RUN:     --gcc-toolchain="" \
1274 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1275 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1276 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1277 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crt1.o"
1278 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crti.o"
1279 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1280 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1281 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64"
1282 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"
1283 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"
1284 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1285 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../.."
1286 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"
1287 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"
1288 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1289 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crtn.o"
1290 //
1291 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1292 // RUN:     --target=mips64el-linux-gnuabi64 -mabi=n64 \
1293 // RUN:     --gcc-toolchain="" \
1294 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1295 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1296 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1297 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"
1298 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crti.o"
1299 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1300 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1301 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64"
1302 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"
1303 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"
1304 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1305 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../.."
1306 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"
1307 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"
1308 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1309 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"
1310 //
1311 // Test linker invocation for Freescale SDK (OpenEmbedded).
1312 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1313 // RUN:     --target=powerpc-fsl-linux \
1314 // RUN:     --gcc-toolchain="" \
1315 // RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
1316 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
1317 // CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1318 // CHECK-FSL-PPC: "-m" "elf32ppclinux"
1319 // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
1320 // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
1321 // CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
1322 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1323 // RUN:     --target=powerpc64-fsl-linux \
1324 // RUN:     --gcc-toolchain="" \
1325 // RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
1326 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
1327 // CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1328 // CHECK-FSL-PPC64: "-m" "elf64ppc"
1329 // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
1330 // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
1331 // CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
1332 //
1333 // Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
1334 // RUN: %clang --target=x86_64-unknown-linux -### %s \
1335 // RUN:        --gcc-toolchain="" \
1336 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1337 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1338 // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
1339 // RUN:        --gcc-toolchain="" \
1340 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1341 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1342 // RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
1343 // RUN:        --gcc-toolchain="" \
1344 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1345 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1346 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
1347 // RUN:        --gcc-toolchain="" \
1348 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1349 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1350 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
1351 // RUN:        --gcc-toolchain="" \
1352 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1353 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1354 // RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
1355 // RUN:        --gcc-toolchain="" \
1356 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1357 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1358 // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
1359 // RUN:        --gcc-toolchain="" \
1360 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1361 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1362 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
1363 // RUN:        --gcc-toolchain="" \
1364 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1365 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1366 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
1367 // RUN:        --gcc-toolchain="" \
1368 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1369 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1370 // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast  \
1371 // RUN:        --gcc-toolchain="" \
1372 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1373 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1374 // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
1375 // RUN:        --gcc-toolchain="" \
1376 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1377 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1378 // We don't have crtfastmath.o in the i386 tree, use it to check that file
1379 // detection works.
1380 // RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
1381 // RUN:        --gcc-toolchain="" \
1382 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1383 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1384 // CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
1385 // CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
1386 
1387 // Check that we link in gcrt1.o when compiling with -pg
1388 // RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
1389 // RUN:        --gcc-toolchain="" \
1390 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1391 // RUN:   | FileCheck --check-prefix=CHECK-PG %s
1392 // CHECK-PG: gcrt1.o
1393 
1394 // GCC forwards -u to the linker.
1395 // RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
1396 // RUN:        --gcc-toolchain="" \
1397 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1398 // RUN:   | FileCheck --check-prefix=CHECK-u %s
1399 // CHECK-u: "-u" "asdf"
1400 
1401 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1402 // RUN:     --target=armeb-unknown-linux \
1403 // RUN:     --gcc-toolchain="" \
1404 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1405 // RUN:   | FileCheck --check-prefix=CHECK-ARMEB %s
1406 // CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1407 // CHECK-ARMEB-NOT: "--be8"
1408 // CHECK-ARMEB: "-m" "armebelf_linux_eabi"
1409 
1410 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1411 // RUN:     --target=armebv7-unknown-linux \
1412 // RUN:     --gcc-toolchain="" \
1413 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1414 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1415 // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1416 // CHECK-ARMV7EB: "--be8"
1417 // CHECK-ARMV7EB: "-m" "armebelf_linux_eabi"
1418