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 -rtlib=platform \
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 -rtlib=platform \
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"
70 // CHECK-LD-RT: "-lc"
71 // CHECK-LD-RT: libclang_rt.builtins-x86_64.a"
72 //
73 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
74 // RUN:     --target=i686-unknown-linux \
75 // RUN:     --gcc-toolchain="" \
76 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
77 // RUN:     --rtlib=compiler-rt \
78 // RUN:   | FileCheck --check-prefix=CHECK-LD-RT-I686 %s
79 // CHECK-LD-RT-I686-NOT: warning:
80 // CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
81 // CHECK-LD-RT-I686: "--eh-frame-hdr"
82 // CHECK-LD-RT-I686: "-m" "elf_i386"
83 // CHECK-LD-RT-I686: "-dynamic-linker"
84 // CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
85 // CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0"
86 // CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib"
87 // CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.."
88 // CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib"
89 // CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib"
90 // CHECK-LD-RT-I686: libclang_rt.builtins-i386.a"
91 // CHECK-LD-RT-I686: "-lc"
92 // CHECK-LD-RT-I686: libclang_rt.builtins-i386.a"
93 //
94 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
95 // RUN:     --target=arm-linux-androideabi \
96 // RUN:     --gcc-toolchain="" \
97 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
98 // RUN:     --rtlib=compiler-rt \
99 // RUN:   | FileCheck --check-prefix=CHECK-LD-RT-ANDROID %s
100 // CHECK-LD-RT-ANDROID-NOT: warning:
101 // CHECK-LD-RT-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
102 // CHECK-LD-RT-ANDROID: "--eh-frame-hdr"
103 // CHECK-LD-RT-ANDROID: "-m" "armelf_linux_eabi"
104 // CHECK-LD-RT-ANDROID: "-dynamic-linker"
105 // CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
106 // CHECK-LD-RT-ANDROID: "-lc"
107 // CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
108 //
109 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
110 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
111 // RUN:     --gcc-toolchain="" \
112 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
113 // RUN:     --rtlib=libgcc \
114 // RUN:   | FileCheck --check-prefix=CHECK-LD-GCC %s
115 // CHECK-LD-GCC-NOT: warning:
116 // CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
117 // CHECK-LD-GCC: "--eh-frame-hdr"
118 // CHECK-LD-GCC: "-m" "elf_x86_64"
119 // CHECK-LD-GCC: "-dynamic-linker"
120 // CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
121 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
122 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
123 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
124 // CHECK-LD-GCC: "-L[[SYSROOT]]/lib"
125 // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"
126 // CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
127 // CHECK-LD-GCC: "-lc"
128 // CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
129 //
130 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
131 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
132 // RUN:     -static-libgcc \
133 // RUN:     --gcc-toolchain="" \
134 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
135 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
136 // CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
137 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
138 // CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
139 // CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
140 // CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
141 // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
142 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
143 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
144 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
145 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
146 // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
147 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
148 // CHECK-LD-64-STATIC-LIBGCC: "-lc"
149 // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
150 //
151 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
152 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
153 // RUN:     --gcc-toolchain="" \
154 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
155 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC %s
156 // CHECK-CLANG-NO-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
157 // CHECK-CLANG-NO-LIBGCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
158 // CHECK-CLANG-NO-LIBGCC: "-lc"
159 // CHECK-CLANG-NO-LIBGCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
160 //
161 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
162 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
163 // RUN:     --gcc-toolchain="" \
164 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
165 // RUN:   | FileCheck --check-prefix=CHECK-CLANGXX-NO-LIBGCC %s
166 // CHECK-CLANGXX-NO-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
167 // CHECK-CLANGXX-NO-LIBGCC: "-lgcc_s" "-lgcc"
168 // CHECK-CLANGXX-NO-LIBGCC: "-lc"
169 // CHECK-CLANGXX-NO-LIBGCC: "-lgcc_s" "-lgcc"
170 //
171 // RUN: %clang -static -no-canonical-prefixes %s -### -o %t.o 2>&1 \
172 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
173 // RUN:     --gcc-toolchain="" \
174 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
175 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC-STATIC %s
176 // CHECK-CLANG-NO-LIBGCC-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
177 // CHECK-CLANG-NO-LIBGCC-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
178 //
179 // RUN: %clang -static-pie -no-canonical-prefixes %s -### -o %t.o 2>&1 \
180 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
181 // RUN:     --gcc-toolchain="" \
182 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
183 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE %s
184 // CHECK-CLANG-LD-STATIC-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
185 // CHECK-CLANG-LD-STATIC-PIE: "-static"
186 // CHECK-CLANG-LD-STATIC-PIE: "-pie"
187 // CHECK-CLANG-LD-STATIC-PIE: "--no-dynamic-linker"
188 // CHECK-CLANG-LD-STATIC-PIE: "-m" "elf_x86_64"
189 // CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o"
190 // CHECK-CLANG-LD-STATIC-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
191 //
192 // RUN: %clang -dynamic -no-canonical-prefixes %s -### -o %t.o 2>&1 \
193 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
194 // RUN:     --gcc-toolchain="" \
195 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
196 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC-DYNAMIC %s
197 // CHECK-CLANG-NO-LIBGCC-DYNAMIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
198 // CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
199 // CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lc"
200 // CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
201 //
202 // RUN: %clang -static-libgcc -no-canonical-prefixes %s -### -o %t.o 2>&1 \
203 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
204 // RUN:     --gcc-toolchain="" \
205 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
206 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-STATIC-LIBGCC %s
207 // CHECK-CLANG-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
208 // CHECK-CLANG-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
209 // CHECK-CLANG-STATIC-LIBGCC: "-lc"
210 // CHECK-CLANG-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
211 //
212 // RUN: %clang -static-libgcc -dynamic -no-canonical-prefixes %s -### -o %t.o 2>&1 \
213 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
214 // RUN:     --gcc-toolchain="" \
215 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
216 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-STATIC-LIBGCC-DYNAMIC %s
217 // CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
218 // CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lgcc" "-lgcc_eh"
219 // CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lc"
220 // CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lgcc" "-lgcc_eh"
221 //
222 // RUN: %clang -shared-libgcc -no-canonical-prefixes %s -### -o %t.o 2>&1 \
223 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
224 // RUN:     --gcc-toolchain="" \
225 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
226 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-SHARED-LIBGCC %s
227 // CHECK-CLANG-SHARED-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
228 // CHECK-CLANG-SHARED-LIBGCC: "-lgcc_s" "-lgcc"
229 // CHECK-CLANG-SHARED-LIBGCC: "-lc"
230 // CHECK-CLANG-SHARED-LIBGCC: "-lgcc_s" "-lgcc"
231 //
232 // RUN: %clang -shared-libgcc -dynamic -no-canonical-prefixes %s -### -o %t.o 2>&1 \
233 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
234 // RUN:     --gcc-toolchain="" \
235 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
236 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-SHARED-LIBGCC-DYNAMIC %s
237 // CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lgcc_s" "-lgcc"
238 // CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lc"
239 // CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lgcc_s" "-lgcc"
240 //
241 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
242 // RUN:     --target=aarch64-linux-android -rtlib=platform \
243 // RUN:     --gcc-toolchain="" \
244 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
245 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-NONE %s
246 // CHECK-CLANG-ANDROID-NONE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
247 // CHECK-CLANG-ANDROID-NONE: "-lgcc" "-ldl" "-lc"
248 //
249 // RUN: %clang -shared -no-canonical-prefixes %s -### -o %t.o 2>&1 \
250 // RUN:     --target=aarch64-linux-android -rtlib=platform \
251 // RUN:     --gcc-toolchain="" \
252 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
253 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-SHARED %s
254 // CHECK-CLANG-ANDROID-SHARED: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
255 // CHECK-CLANG-ANDROID-SHARED: "-lgcc" "-ldl" "-lc"
256 //
257 // RUN: %clang -static -no-canonical-prefixes %s -### -o %t.o 2>&1 \
258 // RUN:     --target=aarch64-linux-android -rtlib=platform \
259 // RUN:     --gcc-toolchain="" \
260 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
261 // RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-STATIC %s
262 // CHECK-CLANG-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
263 // CHECK-CLANG-ANDROID-STATIC: "--start-group" "-lgcc" "-lc" "--end-group"
264 //
265 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1      \
266 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
267 // RUN:     -static \
268 // RUN:     --gcc-toolchain="" \
269 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
270 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
271 // CHECK-LD-64-STATIC-NOT: warning:
272 // CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
273 // CHECK-LD-64-STATIC: "--eh-frame-hdr"
274 // CHECK-LD-64-STATIC: "-m" "elf_x86_64"
275 // CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
276 // CHECK-LD-64-STATIC: "-static"
277 // CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbeginT.o"
278 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
279 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
280 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
281 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
282 // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
283 // CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
284 //
285 // Check that flags can be combined. The -static dominates.
286 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
287 // RUN:     --target=x86_64-unknown-linux -rtlib=platform \
288 // RUN:     -static-libgcc -static \
289 // RUN:     --gcc-toolchain="" \
290 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
291 // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
292 //
293 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
294 // RUN:     --target=i386-unknown-linux -m32 \
295 // RUN:     --gcc-toolchain="" \
296 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
297 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s
298 // CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
299 // CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
300 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
301 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
302 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
303 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
304 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
305 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
306 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
307 // CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
308 // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
309 //
310 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
311 // RUN:     --target=i386-unknown-linux -m64 \
312 // RUN:     --gcc-toolchain="" \
313 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
314 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s
315 // CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
316 // CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64{{/|\\\\}}crtbegin.o"
317 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
318 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
319 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
320 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
321 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
322 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
323 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
324 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
325 // CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
326 // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
327 //
328 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
329 // RUN:     --target=x86_64-unknown-linux -m64 \
330 // RUN:     --gcc-toolchain="" \
331 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
332 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s
333 // CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
334 // CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
335 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
336 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
337 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
338 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
339 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
340 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
341 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
342 // CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
343 // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
344 //
345 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
346 // RUN:     --target=x86_64-unknown-linux -m32 \
347 // RUN:     --gcc-toolchain="" \
348 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
349 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s
350 // CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
351 // CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
352 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
353 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
354 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
355 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
356 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
357 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
358 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
359 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
360 // CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
361 // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
362 //
363 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
364 // RUN:     --target=x86_64-unknown-linux-gnux32 \
365 // RUN:     --gcc-toolchain="" \
366 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
367 // RUN:   | FileCheck --check-prefix=CHECK-X32 %s
368 // CHECK-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
369 // CHECK-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
370 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
371 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
372 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
373 // CHECK-X32: "-L[[SYSROOT]]/lib/../libx32"
374 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
375 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
376 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
377 // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
378 // CHECK-X32: "-L[[SYSROOT]]/lib"
379 // CHECK-X32: "-L[[SYSROOT]]/usr/lib"
380 //
381 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
382 // RUN:     --target=x86_64-unknown-linux -mx32 \
383 // RUN:     --gcc-toolchain="" \
384 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
385 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-X32 %s
386 // CHECK-64-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
387 // CHECK-64-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
388 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
389 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
390 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
391 // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
392 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
393 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
394 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
395 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
396 // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib"
397 // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib"
398 //
399 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
400 // RUN:     --target=i386-unknown-linux -mx32 \
401 // RUN:     --gcc-toolchain="" \
402 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
403 // RUN:   | FileCheck --check-prefix=CHECK-32-TO-X32 %s
404 // CHECK-32-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
405 // CHECK-32-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
406 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
407 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
408 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
409 // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
410 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
411 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
412 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
413 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
414 // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib"
415 // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib"
416 //
417 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
418 // RUN:     --target=x86_64-unknown-linux-gnux32 -m64 \
419 // RUN:     --gcc-toolchain="" \
420 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
421 // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-64 %s
422 // CHECK-X32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
423 // CHECK-X32-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
424 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
425 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
426 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
427 // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
428 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
429 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
430 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
431 // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib"
432 // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib"
433 //
434 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
435 // RUN:     --target=x86_64-unknown-linux-gnux32 -m32 \
436 // RUN:     --gcc-toolchain="" \
437 // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
438 // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-32 %s
439 // CHECK-X32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
440 // CHECK-X32-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
441 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
442 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
443 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
444 // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
445 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
446 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
447 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
448 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
449 // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib"
450 // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib"
451 //
452 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
453 // RUN:     --target=x86_64-unknown-linux -m32 \
454 // RUN:     --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \
455 // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
456 // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
457 // CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
458 // CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
459 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
460 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
461 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
462 // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
463 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
464 // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
465 //
466 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
467 // RUN:     --target=i386-unknown-linux -m32 \
468 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
469 // RUN:     --gcc-toolchain="" \
470 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
471 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
472 // CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
473 // CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0{{/|\\\\}}crtbegin.o"
474 // CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
475 //
476 // Check that with 64-bit builds, we don't actually use the install directory
477 // as its version of GCC is lower than our sysrooted version.
478 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
479 // RUN:     --target=x86_64-unknown-linux -m64 \
480 // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
481 // RUN:     --gcc-toolchain="" \
482 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
483 // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
484 // CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
485 // CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
486 // CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
487 //
488 // Check that we support unusual patch version formats, including missing that
489 // component.
490 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
491 // RUN:     --target=i386-unknown-linux -m32 \
492 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
493 // RUN:     --gcc-toolchain="" \
494 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
495 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
496 // CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
497 // CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7{{/|\\\\}}crtbegin.o"
498 // CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
499 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
500 // RUN:     --target=i386-unknown-linux -m32 \
501 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
502 // RUN:     --gcc-toolchain="" \
503 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
504 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
505 // CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
506 // CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x{{/|\\\\}}crtbegin.o"
507 // CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
508 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
509 // RUN:     --target=i386-unknown-linux -m32 \
510 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
511 // RUN:     --gcc-toolchain="" \
512 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
513 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
514 // CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
515 // CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5{{/|\\\\}}crtbegin.o"
516 // CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
517 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
518 // RUN:     --target=i386-unknown-linux -m32 \
519 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
520 // RUN:     --gcc-toolchain="" \
521 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
522 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
523 // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
524 // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99{{/|\\\\}}crtbegin.o"
525 // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
526 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
527 // RUN:     --target=i386-unknown-linux -m32 \
528 // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing5/bin \
529 // RUN:     --gcc-toolchain="" \
530 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
531 // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION5 %s
532 // CHECK-GCC-VERSION5: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
533 // CHECK-GCC-VERSION5: "{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5{{/|\\\\}}crtbegin.o"
534 // CHECK-GCC-VERSION5: "-L{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5"
535 //
536 // Test a simulated installation of libc++ on Linux, both through sysroot and
537 // the installation path of Clang.
538 // RUN: %clangxx -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
539 // RUN:     -target x86_64-unknown-linux-gnu \
540 // RUN:     -stdlib=libc++ \
541 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
542 // RUN:     --gcc-toolchain="" \
543 // RUN:     -resource-dir=%S/Inputs/resource_dir \
544 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
545 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
546 // CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
547 // CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
548 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
549 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
550 // CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"
551 // RUN: %clang -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
552 // RUN:     -target x86_64-unknown-linux-gnu \
553 // RUN:     -stdlib=libc++ \
554 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
555 // RUN:     --gcc-toolchain="" \
556 // RUN:     -resource-dir=%S/Inputs/resource_dir \
557 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
558 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
559 // CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
560 // CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
561 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
562 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
563 // CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"
564 // CHECK-BASIC-LIBCXX-INSTALL: "-L[[SYSROOT]]/usr/bin/../lib"
565 //
566 // Test that we can use -stdlib=libc++ in a build system even when it
567 // occasionally links C code instead of C++ code.
568 // RUN: %clang -no-canonical-prefixes -x c %s -### -o %t.o 2>&1 \
569 // RUN:     -target x86_64-unknown-linux-gnu \
570 // RUN:     -stdlib=libc++ \
571 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
572 // RUN:     --gcc-toolchain="" \
573 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
574 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-C-LINK %s
575 // CHECK-BASIC-LIBCXX-C-LINK-NOT: warning:
576 // CHECK-BASIC-LIBCXX-C-LINK: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
577 // CHECK-BASIC-LIBCXX-C-LINK: "-isysroot" "[[SYSROOT:[^"]+]]"
578 // CHECK-BASIC-LIBCXX-C-LINK-NOT: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
579 // CHECK-BASIC-LIBCXX-C-LINK: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
580 // CHECK-BASIC-LIBCXX-C-LINK: "--sysroot=[[SYSROOT]]"
581 // CHECK-BASIC-LIBCXX-C-LINK: "-L[[SYSROOT]]/usr/bin/../lib"
582 //
583 // Test a very broken version of multiarch that shipped in Ubuntu 11.04.
584 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
585 // RUN:     --target=i386-unknown-linux \
586 // RUN:     --gcc-toolchain="" \
587 // RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
588 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
589 // CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
590 // CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
591 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
592 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
593 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
594 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
595 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
596 // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
597 //
598 // Check multi arch support on Ubuntu 12.04 LTS.
599 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
600 // RUN:     --target=arm-unknown-linux-gnueabihf \
601 // RUN:     --gcc-toolchain="" \
602 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
603 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
604 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
605 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crt1.o"
606 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crti.o"
607 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"
608 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
609 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
610 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
611 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
612 // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
613 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"
614 // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crtn.o"
615 //
616 // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.
617 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
618 // RUN:     --target=arm-linux-gnueabihf \
619 // RUN:     --gcc-toolchain="" \
620 // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
621 // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s
622 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
623 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "{{(/usr/arm--linux-gnueabihf)?}}/lib/ld-linux-armhf.so.3"
624 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"
625 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"
626 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"
627 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"
628 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"
629 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"
630 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/../lib"
631 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"
632 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"
633 // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"
634 //
635 // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.
636 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
637 // RUN:     --target=arm-linux-gnueabi \
638 // RUN:     --gcc-toolchain="" \
639 // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
640 // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s
641 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
642 // CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "{{(/usr/arm--linux-gnueabi)?}}/lib/ld-linux.so.3"
643 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"
644 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"
645 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"
646 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"
647 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"
648 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"
649 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/../lib"
650 // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"
651 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"
652 // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"
653 //
654 // Check Ubuntu 14.04 on powerpc64le.
655 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
656 // RUN:     --target=powerpc64le-unknown-linux-gnu \
657 // RUN:     --gcc-toolchain="" \
658 // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
659 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
660 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
661 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crt1.o"
662 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crti.o"
663 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtbegin.o"
664 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8"
665 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu"
666 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/lib/powerpc64le-linux-gnu"
667 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
668 // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../.."
669 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtend.o"
670 // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crtn.o"
671 //
672 // Check Ubuntu 14.04 on x32.
673 // "/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o" "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32/crtn.o"
674 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
675 // RUN:     --target=x86_64-unknown-linux-gnux32 \
676 // RUN:     --gcc-toolchain="" \
677 // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
678 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-X32 %s
679 // CHECK-UBUNTU-14-04-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
680 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crt1.o"
681 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crti.o"
682 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtbegin.o"
683 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/x32"
684 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32"
685 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/lib/../libx32"
686 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
687 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu/../../libx32"
688 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8"
689 // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.."
690 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtend.o"
691 // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crtn.o"
692 //
693 // Check fedora 18 on arm.
694 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
695 // RUN:     --target=armv7-unknown-linux-gnueabihf \
696 // RUN:     --gcc-toolchain="" \
697 // RUN:     --sysroot=%S/Inputs/fedora_18_tree \
698 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
699 // CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
700 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"
701 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crti.o"
702 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"
703 // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
704 // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib"
705 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"
706 // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crtn.o"
707 //
708 // Check Fedora 21 on AArch64.
709 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
710 // RUN:     --target=arm64-unknown-linux-gnu \
711 // RUN:     --gcc-toolchain="" \
712 // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
713 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
714 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
715 // RUN:     --target=aarch64-unknown-linux-gnu \
716 // RUN:     --gcc-toolchain="" \
717 // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
718 // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
719 // CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
720 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"
721 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"
722 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"
723 // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"
724 // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"
725 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"
726 // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"
727 //
728 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
729 // RUN:     --target=arm-unknown-linux-gnueabi \
730 // RUN:     --gcc-toolchain="" \
731 // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
732 // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
733 // CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
734 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
735 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
736 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
737 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
738 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
739 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
740 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
741 // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
742 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
743 // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crtn.o"
744 //
745 // Test the setup that shipped in SUSE 10.3 on ppc64.
746 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
747 // RUN:     --target=powerpc64-suse-linux \
748 // RUN:     --gcc-toolchain="" \
749 // RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
750 // RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
751 // CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
752 // CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
753 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
754 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
755 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
756 // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
757 //
758 // Check openSuse Leap 42.2 on AArch64
759 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
760 // RUN:     --target=arm64-unknown-linux-gnu \
761 // RUN:     --gcc-toolchain="" \
762 // RUN:     --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \
763 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s
764 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
765 // RUN:     --target=aarch64-unknown-linux-gnu \
766 // RUN:     --gcc-toolchain="" \
767 // RUN:     --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \
768 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s
769 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
770 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crt1.o"
771 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crti.o"
772 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtbegin.o"
773 // CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8"
774 // CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64"
775 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtend.o"
776 // CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crtn.o"
777 //
778 // Check openSUSE Tumbleweed on armv6hl
779 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
780 // RUN:     --target=armv6hl-suse-linux-gnueabi \
781 // RUN:     --gcc-toolchain="" \
782 // RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \
783 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s
784 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
785 // RUN:     --target=armv6hl-suse-linux-gnueabi \
786 // RUN:     --gcc-toolchain="" \
787 // RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \
788 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s
789 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
790 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"
791 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"
792 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"
793 // CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5"
794 // CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib"
795 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"
796 // CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"
797 //
798 // Check openSUSE Tumbleweed on armv7hl
799 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
800 // RUN:     --target=armv7hl-suse-linux-gnueabi \
801 // RUN:     --gcc-toolchain="" \
802 // RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \
803 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s
804 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
805 // RUN:     --target=armv7hl-suse-linux-gnueabi \
806 // RUN:     --gcc-toolchain="" \
807 // RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \
808 // RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s
809 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
810 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"
811 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"
812 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"
813 // CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5"
814 // CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib"
815 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"
816 // CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"
817 //
818 // Check dynamic-linker for different archs
819 // RUN: %clang %s -### -o %t.o 2>&1 \
820 // RUN:     --target=arm-linux-gnueabi \
821 // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
822 // CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
823 // CHECK-ARM: "-m" "armelf_linux_eabi"
824 // CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
825 //
826 // RUN: %clang %s -### -o %t.o 2>&1 \
827 // RUN:     --target=arm-linux-gnueabi -mfloat-abi=hard \
828 // RUN:   | FileCheck --check-prefix=CHECK-ARM-ABIHF %s
829 // CHECK-ARM-ABIHF: "{{.*}}ld{{(.exe)?}}"
830 // CHECK-ARM-ABIHF: "-m" "armelf_linux_eabi"
831 // CHECK-ARM-ABIHF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
832 //
833 // RUN: %clang %s -### -o %t.o 2>&1 \
834 // RUN:     --target=arm-linux-gnueabihf \
835 // RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s
836 // CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
837 // CHECK-ARM-HF: "-m" "armelf_linux_eabi"
838 // CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
839 //
840 // RUN: %clang %s -### -o %t.o 2>&1 \
841 // RUN:     --target=powerpc64-linux-gnu \
842 // RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s
843 // CHECK-PPC64: "{{.*}}ld{{(.exe)?}}"
844 // CHECK-PPC64: "-m" "elf64ppc"
845 // CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
846 //
847 // RUN: %clang %s -### -o %t.o 2>&1 \
848 // RUN:     --target=powerpc64-linux-gnu -mabi=elfv1 \
849 // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
850 // RUN: %clang %s -### -o %t.o 2>&1 \
851 // RUN:     --target=powerpc64-linux-gnu -mabi=elfv1-qpx \
852 // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
853 // CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}"
854 // CHECK-PPC64-ELFv1: "-m" "elf64ppc"
855 // CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
856 //
857 // RUN: %clang %s -### -o %t.o 2>&1 \
858 // RUN:     --target=powerpc64-linux-gnu -mabi=elfv2 \
859 // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s
860 // CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}"
861 // CHECK-PPC64-ELFv2: "-m" "elf64ppc"
862 // CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
863 //
864 // RUN: %clang %s -### -o %t.o 2>&1 \
865 // RUN:     --target=powerpc64le-linux-gnu \
866 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE %s
867 // CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}"
868 // CHECK-PPC64LE: "-m" "elf64lppc"
869 // CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
870 //
871 // RUN: %clang %s -### -o %t.o 2>&1 \
872 // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv1 \
873 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s
874 // CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}"
875 // CHECK-PPC64LE-ELFv1: "-m" "elf64lppc"
876 // CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
877 //
878 // RUN: %clang %s -### -o %t.o 2>&1 \
879 // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv2 \
880 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s
881 // CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}"
882 // CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"
883 // CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
884 //
885 // Check that we do not pass --hash-style=gnu or --hash-style=both to
886 // hexagon linux linker
887 // RUN: %clang %s -### -o %t.o 2>&1 \
888 // RUN:     --target=hexagon-linux-gnu \
889 // RUN:   | FileCheck --check-prefix=CHECK-HEXAGON %s
890 // CHECK-HEXAGON: "{{.*}}{{hexagon-link|ld}}{{(.exe)?}}"
891 // CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}"
892 //
893 // Check that we do not pass --hash-style=gnu and --hash-style=both to linker
894 // and provide correct path to the dynamic linker and emulation mode when build
895 // for MIPS platforms.
896 // RUN: %clang %s -### -o %t.o 2>&1 \
897 // RUN:     --target=mips-linux-gnu \
898 // RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
899 // CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
900 // CHECK-MIPS: "-m" "elf32btsmip"
901 // CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
902 // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
903 //
904 // RUN: %clang %s -### -o %t.o 2>&1 \
905 // RUN:     --target=mipsel-linux-gnu \
906 // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
907 // CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
908 // CHECK-MIPSEL: "-m" "elf32ltsmip"
909 // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
910 // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
911 //
912 // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mnan=2008 \
913 // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL-NAN2008 %s
914 // CHECK-MIPSEL-NAN2008: "{{.*}}ld{{(.exe)?}}"
915 // CHECK-MIPSEL-NAN2008: "-m" "elf32ltsmip"
916 // CHECK-MIPSEL-NAN2008: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
917 // CHECK-MIPSEL-NAN2008-NOT: "--hash-style={{gnu|both}}"
918 //
919 // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mcpu=mips32r6 \
920 // RUN:   | FileCheck --check-prefix=CHECK-MIPS32R6EL %s
921 // CHECK-MIPS32R6EL: "{{.*}}ld{{(.exe)?}}"
922 // CHECK-MIPS32R6EL: "-m" "elf32ltsmip"
923 // CHECK-MIPS32R6EL: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
924 // CHECK-MIPS32R6EL-NOT: "--hash-style={{gnu|both}}"
925 //
926 // RUN: %clang %s -### -o %t.o 2>&1 \
927 // RUN:     --target=mips64-linux-gnu \
928 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
929 // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
930 // CHECK-MIPS64: "-m" "elf64btsmip"
931 // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
932 // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
933 //
934 // RUN: %clang %s -### -o %t.o 2>&1 \
935 // RUN:     --target=mips64el-linux-gnu \
936 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
937 // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
938 // CHECK-MIPS64EL: "-m" "elf64ltsmip"
939 // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
940 // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
941 //
942 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mnan=2008 \
943 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s
944 // CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}"
945 // CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip"
946 // CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
947 // CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}"
948 //
949 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \
950 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64R6EL %s
951 // CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}"
952 // CHECK-MIPS64R6EL: "-m" "elf64ltsmip"
953 // CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
954 // CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}"
955 //
956 // RUN: %clang %s -### -o %t.o 2>&1 \
957 // RUN:     --target=mips64-linux-gnu -mabi=n32 \
958 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
959 // CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
960 // CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
961 // CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
962 // CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
963 //
964 // RUN: %clang %s -### -o %t.o 2>&1 \
965 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
966 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
967 // CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
968 // CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
969 // CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
970 // CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
971 //
972 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mabi=n32 \
973 // RUN:   -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s
974 // CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}"
975 // CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32"
976 // CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld-linux-mipsn8.so.1"
977 // CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}"
978 //
979 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-redhat-linux \
980 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-REDHAT %s
981 // CHECK-MIPS64EL-REDHAT: "{{.*}}ld{{(.exe)?}}"
982 // CHECK-MIPS64EL-REDHAT: "-m" "elf64ltsmip"
983 // CHECK-MIPS64EL-REDHAT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
984 // CHECK-MIPS64EL-REDHAT-NOT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-musl-mipsel.so.1"
985 // CHECK-MIPS64EL-REDHAT-NOT: "--hash-style={{gnu|both}}"
986 
987 // Check that we pass --hash-style=both for pre-M Android versions and
988 // --hash-style=gnu for newer Android versions.
989 // RUN: %clang %s -### -o %t.o 2>&1 \
990 // RUN:     --target=armv7-linux-android21 \
991 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-HASH-STYLE-L %s
992 // CHECK-ANDROID-HASH-STYLE-L: "{{.*}}ld{{(.exe)?}}"
993 // CHECK-ANDROID-HASH-STYLE-L: "--hash-style=both"
994 //
995 // RUN: %clang %s -### -o %t.o 2>&1 \
996 // RUN:     --target=armv7-linux-android23 \
997 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-HASH-STYLE-M %s
998 // CHECK-ANDROID-HASH-STYLE-M: "{{.*}}ld{{(.exe)?}}"
999 // CHECK-ANDROID-HASH-STYLE-M: "--hash-style=gnu"
1000 
1001 // RUN: %clang %s -### -o %t.o 2>&1 \
1002 // RUN:     --target=armv7-linux-android21 \
1003 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NOEXECSTACK %s
1004 // CHECK-ANDROID-NOEXECSTACK: "{{.*}}ld{{(.exe)?}}"
1005 // CHECK-ANDROID-NOEXECSTACK: "-z" "noexecstack"
1006 // CHECK-ANDROID-NOEXECSTACK-NOT: "-z" "execstack"
1007 // CHECK-ANDROID-NOEXECSTACK-NOT: "-z,execstack"
1008 // CHECK-ANDROID-NOEXECSTACK-NOT: "-zexecstack"
1009 
1010 +// RUN: %clang %s -### -o %t.o 2>&1 \
1011 +// RUN:     --target=armv7-linux-android21 \
1012 +// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-WARN-SHARED-TEXTREL %s
1013 +// CHECK-ANDROID-WARN-SHARED-TEXTREL: "{{.*}}ld{{(.exe)?}}"
1014 +// CHECK-ANDROID-WARN-SHARED-TEXTREL: "--warn-shared-textrel"
1015 
1016 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64-linux-gnuabin32 \
1017 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABIN32 %s
1018 // CHECK-MIPS64EL-GNUABIN32: "{{.*}}ld{{(.exe)?}}"
1019 // CHECK-MIPS64EL-GNUABIN32: "-m" "elf32btsmipn32"
1020 // CHECK-MIPS64EL-GNUABIN32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
1021 // CHECK-MIPS64EL-GNUABIN32-NOT: "--hash-style={{gnu|both}}"
1022 //
1023 // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64-linux-gnuabi64 \
1024 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABI64 %s
1025 // CHECK-MIPS64EL-GNUABI64: "{{.*}}ld{{(.exe)?}}"
1026 // CHECK-MIPS64EL-GNUABI64: "-m" "elf64btsmip"
1027 // CHECK-MIPS64EL-GNUABI64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
1028 // CHECK-MIPS64EL-GNUABI64-NOT: "--hash-style={{gnu|both}}"
1029 //
1030 // RUN: %clang %s -### -o %t.o 2>&1 \
1031 // RUN:     --target=sparc-unknown-linux-gnu \
1032 // RUN:   | FileCheck --check-prefix=CHECK-SPARCV8 %s
1033 // CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
1034 // CHECK-SPARCV8: "-m" "elf32_sparc"
1035 // CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
1036 //
1037 // RUN: %clang %s -### -o %t.o 2>&1 \
1038 // RUN:     --target=sparcel-unknown-linux-gnu \
1039 // RUN:   | FileCheck --check-prefix=CHECK-SPARCV8EL %s
1040 // CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}"
1041 // CHECK-SPARCV8EL: "-m" "elf32_sparc"
1042 // CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
1043 //
1044 // RUN: %clang %s -### -o %t.o 2>&1 \
1045 // RUN:     --target=sparcv9-unknown-linux-gnu \
1046 // RUN:   | FileCheck --check-prefix=CHECK-SPARCV9 %s
1047 // CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
1048 // CHECK-SPARCV9: "-m" "elf64_sparc"
1049 // CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2"
1050 //
1051 // Thoroughly exercise the Debian multiarch environment.
1052 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1053 // RUN:     --target=i686-linux-gnu \
1054 // RUN:     --gcc-toolchain="" \
1055 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1056 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
1057 // CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1058 // CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1059 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
1060 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
1061 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
1062 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
1063 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
1064 // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
1065 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1066 // RUN:     --target=x86_64-linux-gnu \
1067 // RUN:     --gcc-toolchain="" \
1068 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1069 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
1070 // CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1071 // CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1072 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
1073 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
1074 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
1075 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
1076 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
1077 // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
1078 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1079 // RUN:     --target=powerpc-linux-gnu \
1080 // RUN:     --gcc-toolchain="" \
1081 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1082 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
1083 // CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1084 // CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1085 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
1086 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
1087 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
1088 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
1089 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
1090 // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
1091 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1092 // RUN:     --target=powerpc64le-linux-gnu \
1093 // RUN:     --gcc-toolchain="" \
1094 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1095 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64LE %s
1096 // CHECK-DEBIAN-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1097 // CHECK-DEBIAN-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1098 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5"
1099 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../../powerpc64le-linux-gnu"
1100 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
1101 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../.."
1102 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/lib"
1103 // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib"
1104 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1105 // RUN:     --target=powerpc64-linux-gnu \
1106 // RUN:     --gcc-toolchain="" \
1107 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1108 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
1109 // CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1110 // CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1111 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
1112 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
1113 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
1114 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
1115 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
1116 // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
1117 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1118 // RUN:     --target=mips-linux-gnu \
1119 // RUN:     --gcc-toolchain="" \
1120 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1121 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
1122 // CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1123 // CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1124 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1125 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
1126 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
1127 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1128 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
1129 // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
1130 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1131 // RUN:     --target=mipsel-linux-gnu \
1132 // RUN:     --gcc-toolchain="" \
1133 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1134 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
1135 // CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1136 // CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1137 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1138 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
1139 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
1140 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1141 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
1142 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1143 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1144 // RUN:     --target=mips64-linux-gnu \
1145 // RUN:     --gcc-toolchain="" \
1146 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1147 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
1148 // CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1149 // CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
1150 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
1151 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1152 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1153 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
1154 // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
1155 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1156 // RUN:     --target=mips64el-linux-gnu \
1157 // RUN:     --gcc-toolchain="" \
1158 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1159 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
1160 // CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1161 // CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
1162 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
1163 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1164 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1165 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
1166 // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1167 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1168 // RUN:     --target=mips64-linux-gnu -mabi=n32 \
1169 // RUN:     --gcc-toolchain="" \
1170 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1171 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
1172 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1173 // CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
1174 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
1175 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1176 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1177 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
1178 // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
1179 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1180 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1181 // RUN:     --gcc-toolchain="" \
1182 // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1183 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
1184 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1185 // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
1186 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
1187 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1188 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1189 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1190 // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1191 //
1192 // Check linker paths on Debian 8 / Sparc
1193 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1194 // RUN:     --target=sparc-linux-gnu \
1195 // RUN:     --gcc-toolchain="" \
1196 // RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1197 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32 %s
1198 // CHECK-DEBIAN-SPARC32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1199 // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crt1.o"
1200 // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crti.o"
1201 // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
1202 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1203 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu"
1204 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib"
1205 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib/sparc-linux-gnu"
1206 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/sparc-linux-gnu"
1207 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib"
1208 // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib"
1209 // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtend.o"
1210 // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crtn.o"
1211 //
1212 // Check linker paths on Debian 8 / Sparc, with the oldstyle multilib packages
1213 // RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
1214 // RUN:     --target=sparc-linux-gnu \
1215 // RUN:     --gcc-toolchain="" \
1216 // RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1217 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32-LIB64 %s
1218 // CHECK-DEBIAN-SPARC32-LIB64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1219 // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crt1.o"
1220 // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crti.o"
1221 // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtbegin.o"
1222 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64"
1223 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64"
1224 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib/../lib64"
1225 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/../lib64"
1226 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1227 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib"
1228 // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib"
1229 // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtend.o"
1230 // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crtn.o"
1231 //
1232 // Check linker paths on Debian 8 / Sparc64
1233 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1234 // RUN:     --target=sparc64-linux-gnu \
1235 // RUN:     --gcc-toolchain="" \
1236 // RUN:     --sysroot=%S/Inputs/debian_8_sparc64_tree \
1237 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC64 %s
1238 // CHECK-DEBIAN-SPARC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1239 // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crt1.o"
1240 // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crti.o"
1241 // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
1242 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9"
1243 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu"
1244 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/sparc64-linux-gnu"
1245 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/../lib64"
1246 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/sparc64-linux-gnu"
1247 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../.."
1248 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib"
1249 // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib"
1250 // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtend.o"
1251 // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crtn.o"
1252 //
1253 // Test linker invocation on Android.
1254 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1255 // RUN:     --target=arm-linux-androideabi -rtlib=platform \
1256 // RUN:     --gcc-toolchain="" \
1257 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1258 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1259 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1260 // RUN:     --target=arm-linux-android -rtlib=platform \
1261 // RUN:     --gcc-toolchain="" \
1262 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1263 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1264 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1265 // RUN:     --target=aarch64-linux-android -rtlib=platform \
1266 // RUN:     --gcc-toolchain="" \
1267 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1268 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1269 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1270 // RUN:     --target=arm64-linux-android -rtlib=platform \
1271 // RUN:     --gcc-toolchain="" \
1272 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1273 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1274 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1275 // RUN:     --target=mipsel-linux-android -rtlib=platform \
1276 // RUN:     --gcc-toolchain="" \
1277 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1278 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1279 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1280 // RUN:     --target=mips64el-linux-android -rtlib=platform \
1281 // RUN:     --gcc-toolchain="" \
1282 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1283 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1284 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1285 // RUN:     --target=i686-linux-android -rtlib=platform \
1286 // RUN:     --gcc-toolchain="" \
1287 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1288 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1289 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1290 // RUN:     --target=x86_64-linux-android -rtlib=platform \
1291 // RUN:     --gcc-toolchain="" \
1292 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1293 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1294 // CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1295 // CHECK-ANDROID: "-z" "now"
1296 // CHECK-ANDROID: "-z" "relro"
1297 // CHECK-ANDROID: "--enable-new-dtags"
1298 // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1299 // CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
1300 // CHECK-ANDROID-NOT: "gcc_s"
1301 // CHECK-ANDROID: "-lgcc"
1302 // CHECK-ANDROID: "-ldl"
1303 // CHECK-ANDROID-NOT: "gcc_s"
1304 // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
1305 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1306 // RUN:     --target=arm-linux-androideabi -rtlib=platform \
1307 // RUN:     --gcc-toolchain="" \
1308 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1309 // RUN:     -shared \
1310 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1311 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1312 // RUN:     --target=arm-linux-android -rtlib=platform \
1313 // RUN:     --gcc-toolchain="" \
1314 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1315 // RUN:     -shared \
1316 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1317 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1318 // RUN:     --target=aarch64-linux-android -rtlib=platform \
1319 // RUN:     --gcc-toolchain="" \
1320 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1321 // RUN:     -shared \
1322 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1323 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1324 // RUN:     --target=arm64-linux-android -rtlib=platform \
1325 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1326 // RUN:     -shared \
1327 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1328 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1329 // RUN:     --target=mipsel-linux-android -rtlib=platform \
1330 // RUN:     --gcc-toolchain="" \
1331 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1332 // RUN:     -shared \
1333 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1334 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1335 // RUN:     --target=mips64el-linux-android -rtlib=platform \
1336 // RUN:     --gcc-toolchain="" \
1337 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1338 // RUN:     -shared \
1339 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1340 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1341 // RUN:     --target=i686-linux-android -rtlib=platform \
1342 // RUN:     --gcc-toolchain="" \
1343 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1344 // RUN:     -shared \
1345 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1346 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1347 // RUN:     --target=x86_64-linux-android -rtlib=platform \
1348 // RUN:     --gcc-toolchain="" \
1349 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1350 // RUN:     -shared \
1351 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1352 // CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1353 // CHECK-ANDROID-SO-NOT: "-Bsymbolic"
1354 // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
1355 // CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
1356 // CHECK-ANDROID-SO-NOT: "gcc_s"
1357 // CHECK-ANDROID-SO: "-lgcc"
1358 // CHECK-ANDROID-SO: "-ldl"
1359 // CHECK-ANDROID-SO-NOT: "gcc_s"
1360 // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
1361 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1362 // RUN:     --target=arm-linux-androideabi -rtlib=platform \
1363 // RUN:     --gcc-toolchain="" \
1364 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1365 // RUN:     -static \
1366 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1367 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1368 // RUN:     --target=arm-linux-android -rtlib=platform \
1369 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1370 // RUN:     -static \
1371 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1372 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1373 // RUN:     --target=aarch64-linux-android -rtlib=platform \
1374 // RUN:     --gcc-toolchain="" \
1375 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1376 // RUN:     -static \
1377 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1378 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1379 // RUN:     --target=arm64-linux-android -rtlib=platform \
1380 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1381 // RUN:     -static \
1382 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1383 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1384 // RUN:     --target=mipsel-linux-android -rtlib=platform \
1385 // RUN:     --gcc-toolchain="" \
1386 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1387 // RUN:     -static \
1388 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1389 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1390 // RUN:     --target=mips64el-linux-android -rtlib=platform \
1391 // RUN:     --gcc-toolchain="" \
1392 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1393 // RUN:     -static \
1394 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1395 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1396 // RUN:     --target=i686-linux-android -rtlib=platform \
1397 // RUN:     --gcc-toolchain="" \
1398 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1399 // RUN:     -static \
1400 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1401 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1402 // RUN:     --target=x86_64-linux-android -rtlib=platform \
1403 // RUN:     --gcc-toolchain="" \
1404 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1405 // RUN:     -static \
1406 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1407 // CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1408 // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
1409 // CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
1410 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1411 // CHECK-ANDROID-STATIC: "-lgcc"
1412 // CHECK-ANDROID-STATIC-NOT: "-ldl"
1413 // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1414 // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
1415 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1416 // RUN:     --target=arm-linux-androideabi -rtlib=platform \
1417 // RUN:     --gcc-toolchain="" \
1418 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1419 // RUN:     -pie \
1420 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1421 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1422 // RUN:     --target=arm-linux-android -rtlib=platform \
1423 // RUN:     --gcc-toolchain="" \
1424 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1425 // RUN:     -pie \
1426 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1427 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1428 // RUN:     --target=aarch64-linux-android -rtlib=platform \
1429 // RUN:     --gcc-toolchain="" \
1430 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1431 // RUN:     -pie \
1432 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1433 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1434 // RUN:     --target=arm64-linux-android -rtlib=platform \
1435 // RUN:     --gcc-toolchain="" \
1436 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1437 // RUN:     -pie \
1438 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1439 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1440 // RUN:     --target=mipsel-linux-android -rtlib=platform \
1441 // RUN:     --gcc-toolchain="" \
1442 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1443 // RUN:     -pie \
1444 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1445 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1446 // RUN:     --target=mips64el-linux-android -rtlib=platform \
1447 // RUN:     --gcc-toolchain="" \
1448 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1449 // RUN:     -pie \
1450 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1451 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1452 // RUN:     --target=i686-linux-android -rtlib=platform \
1453 // RUN:     --gcc-toolchain="" \
1454 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1455 // RUN:     -pie \
1456 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1457 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1458 // RUN:     --target=x86_64-linux-android -rtlib=platform \
1459 // RUN:     --gcc-toolchain="" \
1460 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1461 // RUN:     -pie \
1462 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1463 // CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1464 // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1465 // CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
1466 // CHECK-ANDROID-PIE-NOT: "gcc_s"
1467 // CHECK-ANDROID-PIE: "-lgcc"
1468 // CHECK-ANDROID-PIE-NOT: "gcc_s"
1469 // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
1470 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1471 // RUN:     --target=arm-linux-androideabi \
1472 // RUN:     --gcc-toolchain="" \
1473 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1474 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1475 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1476 // RUN:     --target=arm-linux-android \
1477 // RUN:     --gcc-toolchain="" \
1478 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1479 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1480 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1481 // RUN:     --target=mipsel-linux-android \
1482 // RUN:     --gcc-toolchain="" \
1483 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1484 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1485 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1486 // RUN:     --target=aarch64-linux-android \
1487 // RUN:     --gcc-toolchain="" \
1488 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1489 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1490 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1491 // RUN:     --target=arm64-linux-android \
1492 // RUN:     --gcc-toolchain="" \
1493 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1494 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1495 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1496 // RUN:     --target=mips64el-linux-android \
1497 // RUN:     --gcc-toolchain="" \
1498 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1499 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1500 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1501 // RUN:     --target=i686-linux-android \
1502 // RUN:     --gcc-toolchain="" \
1503 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1504 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1505 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1506 // RUN:     --target=x86_64-linux-android \
1507 // RUN:     --gcc-toolchain="" \
1508 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1509 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1510 // CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
1511 // CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
1512 //
1513 // Test that -pthread does not add -lpthread on Android.
1514 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1515 // RUN:     --target=arm-linux-androideabi -pthread \
1516 // RUN:     --gcc-toolchain="" \
1517 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1518 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1519 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1520 // RUN:     --target=arm-linux-android -pthread \
1521 // RUN:     --gcc-toolchain="" \
1522 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1523 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1524 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1525 // RUN:     --target=aarch64-linux-android -pthread \
1526 // RUN:     --gcc-toolchain="" \
1527 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1528 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1529 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1530 // RUN:     --target=arm64-linux-android -pthread \
1531 // RUN:     --gcc-toolchain="" \
1532 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1533 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1534 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1535 // RUN:     --target=mipsel-linux-android -pthread \
1536 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1537 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1538 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1539 // RUN:     --target=mips64el-linux-android -pthread \
1540 // RUN:     --gcc-toolchain="" \
1541 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1542 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1543 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1544 // RUN:     --target=i686-linux-android -pthread \
1545 // RUN:     --gcc-toolchain="" \
1546 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1547 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1548 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1549 // RUN:     --target=x86_64-linux-android -pthread \
1550 // RUN:     --gcc-toolchain="" \
1551 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1552 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1553 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1554 // RUN:     --target=arm-linux-androideabi -pthread \
1555 // RUN:     --gcc-toolchain="" \
1556 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1557 // RUN:     -shared \
1558 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1559 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1560 // RUN:     --target=arm-linux-android -pthread \
1561 // RUN:     --gcc-toolchain="" \
1562 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1563 // RUN:     -shared \
1564 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1565 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1566 // RUN:     --target=aarch64-linux-android -pthread \
1567 // RUN:     --gcc-toolchain="" \
1568 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1569 // RUN:     -shared \
1570 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1571 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1572 // RUN:     --target=arm64-linux-android -pthread \
1573 // RUN:     --gcc-toolchain="" \
1574 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1575 // RUN:     -shared \
1576 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1577 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1578 // RUN:     --target=mipsel-linux-android -pthread \
1579 // RUN:     --gcc-toolchain="" \
1580 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1581 // RUN:     -shared \
1582 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1583 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1584 // RUN:     --target=mips64el-linux-android -pthread \
1585 // RUN:     --gcc-toolchain="" \
1586 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1587 // RUN:     -shared \
1588 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1589 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1590 // RUN:     --target=i686-linux-android -pthread \
1591 // RUN:     --gcc-toolchain="" \
1592 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1593 // RUN:     -shared \
1594 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1595 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1596 // RUN:     --target=x86_64-linux-android -pthread \
1597 // RUN:     --gcc-toolchain="" \
1598 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1599 // RUN:     -shared \
1600 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1601 // CHECK-ANDROID-PTHREAD-NOT: -lpthread
1602 //
1603 // RUN: %clang -no-canonical-prefixes %t.o -### -o %t 2>&1 \
1604 // RUN:     --target=arm-linux-androideabi -pthread \
1605 // RUN:     --gcc-toolchain="" \
1606 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1607 // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s
1608 // CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'
1609 //
1610 // Check linker invocation on Debian 6 MIPS 32/64-bit.
1611 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1612 // RUN:     --target=mipsel-linux-gnu \
1613 // RUN:     --gcc-toolchain="" \
1614 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1615 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
1616 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1617 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
1618 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
1619 // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
1620 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
1621 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
1622 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
1623 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
1624 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1625 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
1626 // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1627 //
1628 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1629 // RUN:     --target=mips64el-linux-gnu \
1630 // RUN:     --gcc-toolchain="" \
1631 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1632 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
1633 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1634 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
1635 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
1636 // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
1637 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
1638 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
1639 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
1640 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
1641 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1642 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
1643 // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1644 //
1645 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1646 // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1647 // RUN:     --gcc-toolchain="" \
1648 // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1649 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
1650 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1651 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
1652 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
1653 // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
1654 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
1655 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
1656 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
1657 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
1658 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1659 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1660 // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1661 //
1662 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1663 // RUN:     --target=mips64-unknown-linux-gnu \
1664 // RUN:     --gcc-toolchain="" \
1665 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1666 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1667 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1668 // RUN:     --target=mips64-linux-gnuabi64 -mabi=n64 \
1669 // RUN:     --gcc-toolchain="" \
1670 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1671 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1672 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1673 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crt1.o"
1674 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crti.o"
1675 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1676 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1677 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64"
1678 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"
1679 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"
1680 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1681 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../.."
1682 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"
1683 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"
1684 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1685 // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crtn.o"
1686 //
1687 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1688 // RUN:     --target=mips64el-unknown-linux-gnu \
1689 // RUN:     --gcc-toolchain="" \
1690 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1691 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1692 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1693 // RUN:     --target=mips64el-linux-gnuabi64 -mabi=n64 \
1694 // RUN:     --gcc-toolchain="" \
1695 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1696 // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1697 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1698 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"
1699 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crti.o"
1700 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1701 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1702 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64"
1703 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"
1704 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"
1705 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1706 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../.."
1707 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"
1708 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"
1709 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1710 // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"
1711 //
1712 // Test linker invocation for Freescale SDK (OpenEmbedded).
1713 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1714 // RUN:     --target=powerpc-fsl-linux \
1715 // RUN:     --gcc-toolchain="" \
1716 // RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
1717 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
1718 // CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1719 // CHECK-FSL-PPC: "-m" "elf32ppclinux"
1720 // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
1721 // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
1722 // CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
1723 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1724 // RUN:     --target=powerpc64-fsl-linux \
1725 // RUN:     --gcc-toolchain="" \
1726 // RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
1727 // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
1728 // CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1729 // CHECK-FSL-PPC64: "-m" "elf64ppc"
1730 // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
1731 // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
1732 // CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
1733 //
1734 // Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
1735 // RUN: %clang --target=x86_64-unknown-linux -### %s \
1736 // RUN:        --gcc-toolchain="" \
1737 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1738 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1739 // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
1740 // RUN:        --gcc-toolchain="" \
1741 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1742 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1743 // RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
1744 // RUN:        --gcc-toolchain="" \
1745 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1746 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1747 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
1748 // RUN:        --gcc-toolchain="" \
1749 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1750 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1751 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
1752 // RUN:        --gcc-toolchain="" \
1753 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1754 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1755 // RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
1756 // RUN:        --gcc-toolchain="" \
1757 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1758 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1759 // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
1760 // RUN:        --gcc-toolchain="" \
1761 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1762 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1763 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
1764 // RUN:        --gcc-toolchain="" \
1765 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1766 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1767 // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
1768 // RUN:        --gcc-toolchain="" \
1769 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1770 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1771 // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast  \
1772 // RUN:        --gcc-toolchain="" \
1773 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1774 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1775 // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
1776 // RUN:        --gcc-toolchain="" \
1777 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1778 // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1779 // We don't have crtfastmath.o in the i386 tree, use it to check that file
1780 // detection works.
1781 // RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
1782 // RUN:        --gcc-toolchain="" \
1783 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1784 // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1785 // CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
1786 // CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
1787 
1788 // Check that we link in gcrt1.o when compiling with -pg
1789 // RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
1790 // RUN:        --gcc-toolchain="" \
1791 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1792 // RUN:   | FileCheck --check-prefix=CHECK-PG %s
1793 // CHECK-PG: gcrt1.o
1794 
1795 // GCC forwards -u to the linker.
1796 // RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
1797 // RUN:        --gcc-toolchain="" \
1798 // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1799 // RUN:   | FileCheck --check-prefix=CHECK-u %s
1800 // CHECK-u: "-u" "asdf"
1801 
1802 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1803 // RUN:     --target=armeb-unknown-linux \
1804 // RUN:     --gcc-toolchain="" \
1805 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1806 // RUN:   | FileCheck --check-prefix=CHECK-ARMEB %s
1807 // CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1808 // CHECK-ARMEB-NOT: "--be8"
1809 // CHECK-ARMEB: "-EB"
1810 // CHECK-ARMEB: "-m" "armelfb_linux_eabi"
1811 
1812 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1813 // RUN:     --target=armebv7-unknown-linux \
1814 // RUN:     --gcc-toolchain="" \
1815 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1816 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1817 // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1818 // CHECK-ARMV7EB: "--be8"
1819 // CHECK-ARMV7EB: "-EB"
1820 // CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
1821 
1822 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1823 // RUN:     --target=armv7-unknown-linux \
1824 // RUN:     -mbig-endian \
1825 // RUN:     --gcc-toolchain="" \
1826 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1827 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1828 
1829 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1830 // RUN:     --target=armebv7-unknown-linux \
1831 // RUN:     -mbig-endian \
1832 // RUN:     --gcc-toolchain="" \
1833 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1834 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1835 
1836 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1837 // RUN:     --target=armv7-unknown-linux \
1838 // RUN:     --gcc-toolchain="" \
1839 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1840 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1841 // CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1842 // CHECK-ARMV7EL-NOT: "--be8"
1843 // CHECK-ARMV7EL: "-EL"
1844 // CHECK-ARMV7EL: "-m" "armelf_linux_eabi"
1845 
1846 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1847 // RUN:     --target=armebv7-unknown-linux \
1848 // RUN:     -mlittle-endian \
1849 // RUN:     --gcc-toolchain="" \
1850 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1851 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1852 
1853 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1854 // RUN:     --target=armv7-unknown-linux \
1855 // RUN:     -mlittle-endian \
1856 // RUN:     --gcc-toolchain="" \
1857 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1858 // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1859 
1860 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1861 // RUN:     --target=aarch64_be-unknown-linux \
1862 // RUN:     --gcc-toolchain="" \
1863 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1864 // RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1865 // CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1866 // CHECK-AARCH64BE-NOT: "--be8"
1867 // CHECK-AARCH64BE: "-EB"
1868 // CHECK-AARCH64BE: "-m" "aarch64linuxb"
1869 
1870 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1871 // RUN:     --target=aarch64-unknown-linux \
1872 // RUN:     -mbig-endian \
1873 // RUN:     --gcc-toolchain="" \
1874 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1875 // RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1876 
1877 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1878 // RUN:     --target=aarch64_be-unknown-linux \
1879 // RUN:     -mbig-endian \
1880 // RUN:     --gcc-toolchain="" \
1881 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1882 // RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1883 
1884 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1885 // RUN:     --target=aarch64-unknown-linux \
1886 // RUN:     --gcc-toolchain="" \
1887 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1888 // RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s
1889 // CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1890 // CHECK-AARCH64LE-NOT: "--be8"
1891 // CHECK-AARCH64LE: "-EL"
1892 // CHECK-AARCH64LE: "-m" "aarch64linux"
1893 
1894 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1895 // RUN:     --target=aarch64_be-unknown-linux \
1896 // RUN:     -mlittle-endian \
1897 // RUN:     --gcc-toolchain="" \
1898 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1899 // RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s
1900 
1901 // Check dynamic-linker for musl-libc
1902 // RUN: %clang %s -### -o %t.o 2>&1 \
1903 // RUN:     --target=i386-pc-linux-musl \
1904 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86 %s
1905 // RUN: %clang %s -### -o %t.o 2>&1 \
1906 // RUN:     --target=x86_64-pc-linux-musl \
1907 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s
1908 // RUN: %clang %s -### -o %t.o 2>&1 \
1909 // RUN:     --target=mips-pc-linux-musl \
1910 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS %s
1911 // RUN: %clang %s -### -o %t.o 2>&1 \
1912 // RUN:     --target=mipsel-pc-linux-musl \
1913 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s
1914 // RUN: %clang %s -### -o %t.o 2>&1 \
1915 // RUN:     --target=mips64-pc-linux-musl \
1916 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s
1917 // RUN: %clang %s -### -o %t.o 2>&1 \
1918 // RUN:     --target=mips64el-pc-linux-musl \
1919 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s
1920 // RUN: %clang %s -### -o %t.o 2>&1 \
1921 // RUN:     --target=powerpc-pc-linux-musl \
1922 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC %s
1923 // RUN: %clang %s -### -o %t.o 2>&1 \
1924 // RUN:     --target=powerpc64-pc-linux-musl \
1925 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s
1926 // RUN: %clang %s -### -o %t.o 2>&1 \
1927 // RUN:     --target=thumb-pc-linux-musleabi \
1928 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1929 // RUN: %clang %s -### -o %t.o 2>&1 \
1930 // RUN:     --target=thumb-pc-linux-musleabihf \
1931 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1932 // RUN: %clang %s -### -o %t.o 2>&1 \
1933 // RUN:     --target=thumbv7-pc-linux-musleabi -mhard-float \
1934 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1935 // RUN: %clang %s -### -o %t.o 2>&1 \
1936 // RUN:     --target=thumbeb-pc-linux-musleabi \
1937 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1938 // RUN: %clang %s -### -o %t.o 2>&1 \
1939 // RUN:     --target=thumbeb-pc-linux-musleabihf \
1940 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1941 // RUN: %clang %s -### -o %t.o 2>&1 \
1942 // RUN:     --target=thumbv7eb-pc-linux-musleabi -mhard-float \
1943 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1944 // RUN: %clang %s -### -o %t.o 2>&1 \
1945 // RUN:     --target=arm-pc-linux-musleabi \
1946 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1947 // RUN: %clang %s -### -o %t.o 2>&1 \
1948 // RUN:     --target=arm-pc-linux-musleabihf \
1949 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1950 // RUN: %clang %s -### -o %t.o 2>&1 \
1951 // RUN:     --target=armv7-pc-linux-musleabi -mhard-float \
1952 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1953 // RUN: %clang %s -### -o %t.o 2>&1 \
1954 // RUN:     --target=armeb-pc-linux-musleabi \
1955 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1956 // RUN: %clang %s -### -o %t.o 2>&1 \
1957 // RUN:     --target=armeb-pc-linux-musleabihf \
1958 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1959 // RUN: %clang %s -### -o %t.o 2>&1 \
1960 // RUN:     --target=armv7eb-pc-linux-musleabi -mhard-float \
1961 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1962 // RUN: %clang %s -### -o %t.o 2>&1 \
1963 // RUN:     --target=aarch64-pc-linux-musleabi \
1964 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s
1965 // RUN: %clang %s -### -o %t.o 2>&1 \
1966 // RUN:     --target=aarch64_be-pc-linux-musleabi \
1967 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
1968 // CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"
1969 // CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
1970 // CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"
1971 // CHECK-MUSL-MIPSEL:     "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"
1972 // CHECK-MUSL-MIPS64:     "-dynamic-linker" "/lib/ld-musl-mips64.so.1"
1973 // CHECK-MUSL-MIPS64EL:   "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"
1974 // CHECK-MUSL-PPC:        "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"
1975 // CHECK-MUSL-PPC64:      "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"
1976 // CHECK-MUSL-ARM:        "-dynamic-linker" "/lib/ld-musl-arm.so.1"
1977 // CHECK-MUSL-ARMHF:      "-dynamic-linker" "/lib/ld-musl-armhf.so.1"
1978 // CHECK-MUSL-ARMEB:      "-dynamic-linker" "/lib/ld-musl-armeb.so.1"
1979 // CHECK-MUSL-ARMEBHF:    "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"
1980 // CHECK-MUSL-AARCH64:    "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"
1981 // CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"
1982 
1983 // Check whether multilib gcc install works fine on Gentoo with gcc-config
1984 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1985 // RUN:     --target=x86_64-unknown-linux-gnu -rtlib=platform \
1986 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1987 // RUN:     --gcc-toolchain="" \
1988 // RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO %s
1989 // CHECK-LD-GENTOO-NOT: warning:
1990 // CHECK-LD-GENTOO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1991 // CHECK-LD-GENTOO: "--eh-frame-hdr"
1992 // CHECK-LD-GENTOO: "-m" "elf_x86_64"
1993 // CHECK-LD-GENTOO: "-dynamic-linker"
1994 // CHECK-LD-GENTOO: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3{{/|\\\\}}crtbegin.o"
1995 // CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3"
1996 // CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1997 // CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1998 // CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1999 // CHECK-LD-GENTOO: "-lc"
2000 // CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2001 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2002 // RUN:     --target=i686-unknown-linux-gnu -rtlib=platform \
2003 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
2004 // RUN:     --gcc-toolchain="" \
2005 // RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-32 %s
2006 // CHECK-LD-GENTOO-32-NOT: warning:
2007 // CHECK-LD-GENTOO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2008 // CHECK-LD-GENTOO-32: "--eh-frame-hdr"
2009 // CHECK-LD-GENTOO-32: "-m" "elf_i386"
2010 // CHECK-LD-GENTOO-32: "-dynamic-linker"
2011 // CHECK-LD-GENTOO-32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32{{/|\\\\}}crtbegin.o"
2012 // CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32"
2013 // CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
2014 // CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
2015 // CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2016 // CHECK-LD-GENTOO-32: "-lc"
2017 // CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2018 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2019 // RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform \
2020 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
2021 // RUN:     --gcc-toolchain="" \
2022 // RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-X32 %s
2023 // CHECK-LD-GENTOO-X32-NOT: warning:
2024 // CHECK-LD-GENTOO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2025 // CHECK-LD-GENTOO-X32: "--eh-frame-hdr"
2026 // CHECK-LD-GENTOO-X32: "-m" "elf32_x86_64"
2027 // CHECK-LD-GENTOO-X32: "-dynamic-linker"
2028 // CHECK-LD-GENTOO-X32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32{{/|\\\\}}crtbegin.o"
2029 // CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32"
2030 // CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
2031 // CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
2032 // CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2033 // CHECK-LD-GENTOO-X32: "-lc"
2034 // CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2035 
2036 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2037 // RUN:     --target=x86_64-unknown-linux-gnu \
2038 // RUN:     --gcc-toolchain="%S/Inputs/rhel_7_tree/opt/rh/devtoolset-7/root/usr" \
2039 // RUN:     --sysroot=%S/Inputs/rhel_7_tree \
2040 // RUN:   | FileCheck --check-prefix=CHECK-LD-RHEL7-DTS %s
2041 // CHECK-LD-RHEL7-DTS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2042 // CHECK-LD-RHLE7-DTS: Selected GCC installation: [[GCC_INSTALL:[[SYSROOT]]/lib/gcc/x86_64-redhat-linux/7]]
2043 // CHECK-LD-RHEL7-DTS-NOT: /usr/bin/ld
2044 // CHECK-LD-RHLE7-DTS: [[GCC_INSTALL]/../../../bin/ld
2045 
2046 // Check whether gcc7 install works fine on Amazon Linux AMI
2047 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2048 // RUN:     --target=x86_64-amazon-linux -rtlib=libgcc \
2049 // RUN:     --gcc-toolchain="" \
2050 // RUN:     --sysroot=%S/Inputs/ami_linux_tree \
2051 // RUN:   | FileCheck --check-prefix=CHECK-LD-AMI %s
2052 // CHECK-LD-AMI-NOT: warning:
2053 // CHECK-LD-AMI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2054 // CHECK-LD-AMI: "--eh-frame-hdr"
2055 // CHECK-LD-AMI: "-m" "elf_x86_64"
2056 // CHECK-LD-AMI: "-dynamic-linker"
2057 // CHECK-LD-AMI: "{{.*}}/usr/lib/gcc/x86_64-amazon-linux/7{{/|\\\\}}crtbegin.o"
2058 // CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7"
2059 // CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7/../../../../lib64"
2060 // CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7/../../.."
2061 // CHECK-LD-AMI: "-L[[SYSROOT]]/lib"
2062 // CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib"
2063 // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2064 // CHECK-LD-AMI: "-lc"
2065 // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2066 
2067 // Check whether the OpenEmbedded ARM libs are added correctly.
2068 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2069 // RUN:     --target=arm-oe-linux-gnueabi -rtlib=libgcc \
2070 // RUN:     --gcc-toolchain="" \
2071 // RUN:     --sysroot=%S/Inputs/openembedded_arm_linux_tree \
2072 // RUN:   | FileCheck --check-prefix=CHECK-OE-ARM %s
2073 
2074 // CHECK-OE-ARM: "-cc1" "-triple" "armv4t-oe-linux-gnueabi"
2075 // CHECK-OE-ARM: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
2076 // CHECK-OE-ARM: "-m" "armelf_linux_eabi" "-dynamic-linker"
2077 // CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crt1.o"
2078 // CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crti.o"
2079 // CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtbegin.o"
2080 // CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0"
2081 // CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi"
2082 // CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib"
2083 // CHECK-OE-ARM: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2084 // CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtend.o"
2085 // CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crtn.o"
2086 
2087 // Check whether the OpenEmbedded AArch64 libs are added correctly.
2088 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2089 // RUN:     --target=aarch64-oe-linux -rtlib=libgcc \
2090 // RUN:     --gcc-toolchain="" \
2091 // RUN:     --sysroot=%S/Inputs/openembedded_aarch64_linux_tree \
2092 // RUN:   | FileCheck --check-prefix=CHECK-OE-AARCH64 %s
2093 
2094 // CHECK-OE-AARCH64: "-cc1" "-triple" "aarch64-oe-linux"
2095 // CHECK-OE-AARCH64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
2096 // CHECK-OE-AARCH64: "-m" "aarch64linux" "-dynamic-linker"
2097 // CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crt1.o"
2098 // CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crti.o"
2099 // CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtbegin.o"
2100 // CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0"
2101 // CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64"
2102 // CHECK-OE-AARCH64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2103 // CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtend.o"
2104 // CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crtn.o"
2105