Clang Project

clang_source_code/test/Driver/linux-ld.c
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 --target=mips64-linux-gnuabin32 \
1011// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABIN32 %s
1012// CHECK-MIPS64EL-GNUABIN32: "{{.*}}ld{{(.exe)?}}"
1013// CHECK-MIPS64EL-GNUABIN32: "-m" "elf32btsmipn32"
1014// CHECK-MIPS64EL-GNUABIN32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
1015// CHECK-MIPS64EL-GNUABIN32-NOT: "--hash-style={{gnu|both}}"
1016//
1017// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64-linux-gnuabi64 \
1018// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABI64 %s
1019// CHECK-MIPS64EL-GNUABI64: "{{.*}}ld{{(.exe)?}}"
1020// CHECK-MIPS64EL-GNUABI64: "-m" "elf64btsmip"
1021// CHECK-MIPS64EL-GNUABI64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
1022// CHECK-MIPS64EL-GNUABI64-NOT: "--hash-style={{gnu|both}}"
1023//
1024// RUN: %clang %s -### -o %t.o 2>&1 \
1025// RUN:     --target=sparc-unknown-linux-gnu \
1026// RUN:   | FileCheck --check-prefix=CHECK-SPARCV8 %s
1027// CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
1028// CHECK-SPARCV8: "-m" "elf32_sparc"
1029// CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
1030//
1031// RUN: %clang %s -### -o %t.o 2>&1 \
1032// RUN:     --target=sparcel-unknown-linux-gnu \
1033// RUN:   | FileCheck --check-prefix=CHECK-SPARCV8EL %s
1034// CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}"
1035// CHECK-SPARCV8EL: "-m" "elf32_sparc"
1036// CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
1037//
1038// RUN: %clang %s -### -o %t.o 2>&1 \
1039// RUN:     --target=sparcv9-unknown-linux-gnu \
1040// RUN:   | FileCheck --check-prefix=CHECK-SPARCV9 %s
1041// CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
1042// CHECK-SPARCV9: "-m" "elf64_sparc"
1043// CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2"
1044//
1045// Thoroughly exercise the Debian multiarch environment.
1046// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1047// RUN:     --target=i686-linux-gnu \
1048// RUN:     --gcc-toolchain="" \
1049// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1050// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
1051// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1052// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1053// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
1054// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
1055// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
1056// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
1057// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
1058// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
1059// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1060// RUN:     --target=x86_64-linux-gnu \
1061// RUN:     --gcc-toolchain="" \
1062// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1063// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
1064// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1065// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1066// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
1067// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
1068// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
1069// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
1070// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
1071// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
1072// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1073// RUN:     --target=powerpc-linux-gnu \
1074// RUN:     --gcc-toolchain="" \
1075// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1076// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
1077// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1078// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1079// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
1080// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
1081// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
1082// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
1083// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
1084// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
1085// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1086// RUN:     --target=powerpc64le-linux-gnu \
1087// RUN:     --gcc-toolchain="" \
1088// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1089// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64LE %s
1090// CHECK-DEBIAN-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1091// CHECK-DEBIAN-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1092// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5"
1093// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../../powerpc64le-linux-gnu"
1094// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
1095// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../.."
1096// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/lib"
1097// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib"
1098// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1099// RUN:     --target=powerpc64-linux-gnu \
1100// RUN:     --gcc-toolchain="" \
1101// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1102// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
1103// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1104// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1105// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
1106// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
1107// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
1108// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
1109// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
1110// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
1111// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1112// RUN:     --target=mips-linux-gnu \
1113// RUN:     --gcc-toolchain="" \
1114// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1115// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
1116// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1117// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1118// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1119// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
1120// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
1121// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1122// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
1123// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
1124// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1125// RUN:     --target=mipsel-linux-gnu \
1126// RUN:     --gcc-toolchain="" \
1127// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1128// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
1129// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1130// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
1131// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1132// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
1133// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
1134// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1135// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
1136// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1137// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1138// RUN:     --target=mips64-linux-gnu \
1139// RUN:     --gcc-toolchain="" \
1140// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1141// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
1142// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1143// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
1144// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
1145// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1146// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1147// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
1148// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
1149// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1150// RUN:     --target=mips64el-linux-gnu \
1151// RUN:     --gcc-toolchain="" \
1152// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1153// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
1154// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1155// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
1156// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
1157// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1158// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1159// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
1160// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1161// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1162// RUN:     --target=mips64-linux-gnu -mabi=n32 \
1163// RUN:     --gcc-toolchain="" \
1164// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1165// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
1166// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1167// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
1168// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
1169// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1170// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1171// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
1172// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
1173// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1174// RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1175// RUN:     --gcc-toolchain="" \
1176// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
1177// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
1178// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1179// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
1180// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
1181// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1182// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1183// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1184// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1185//
1186// Check linker paths on Debian 8 / Sparc
1187// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1188// RUN:     --target=sparc-linux-gnu \
1189// RUN:     --gcc-toolchain="" \
1190// RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1191// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32 %s
1192// CHECK-DEBIAN-SPARC32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1193// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crt1.o"
1194// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crti.o"
1195// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
1196// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1197// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu"
1198// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib"
1199// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib/sparc-linux-gnu"
1200// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/sparc-linux-gnu"
1201// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib"
1202// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib"
1203// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtend.o"
1204// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crtn.o"
1205//
1206// Check linker paths on Debian 8 / Sparc, with the oldstyle multilib packages
1207// RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
1208// RUN:     --target=sparc-linux-gnu \
1209// RUN:     --gcc-toolchain="" \
1210// RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1211// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32-LIB64 %s
1212// CHECK-DEBIAN-SPARC32-LIB64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1213// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crt1.o"
1214// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crti.o"
1215// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtbegin.o"
1216// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64"
1217// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64"
1218// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib/../lib64"
1219// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/../lib64"
1220// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1221// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib"
1222// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib"
1223// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtend.o"
1224// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crtn.o"
1225//
1226// Check linker paths on Debian 8 / Sparc64
1227// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1228// RUN:     --target=sparc64-linux-gnu \
1229// RUN:     --gcc-toolchain="" \
1230// RUN:     --sysroot=%S/Inputs/debian_8_sparc64_tree \
1231// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC64 %s
1232// CHECK-DEBIAN-SPARC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1233// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crt1.o"
1234// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crti.o"
1235// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
1236// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9"
1237// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu"
1238// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/sparc64-linux-gnu"
1239// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/../lib64"
1240// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/sparc64-linux-gnu"
1241// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../.."
1242// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib"
1243// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib"
1244// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtend.o"
1245// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crtn.o"
1246//
1247// Test linker invocation on Android.
1248// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1249// RUN:     --target=arm-linux-androideabi -rtlib=platform \
1250// RUN:     --gcc-toolchain="" \
1251// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1252// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1253// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1254// RUN:     --target=arm-linux-android -rtlib=platform \
1255// RUN:     --gcc-toolchain="" \
1256// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1257// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1258// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1259// RUN:     --target=aarch64-linux-android -rtlib=platform \
1260// RUN:     --gcc-toolchain="" \
1261// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1262// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1263// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1264// RUN:     --target=arm64-linux-android -rtlib=platform \
1265// RUN:     --gcc-toolchain="" \
1266// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1267// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1268// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1269// RUN:     --target=mipsel-linux-android -rtlib=platform \
1270// RUN:     --gcc-toolchain="" \
1271// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1272// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1273// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1274// RUN:     --target=mips64el-linux-android -rtlib=platform \
1275// RUN:     --gcc-toolchain="" \
1276// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1277// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1278// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1279// RUN:     --target=i686-linux-android -rtlib=platform \
1280// RUN:     --gcc-toolchain="" \
1281// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1282// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1283// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1284// RUN:     --target=x86_64-linux-android -rtlib=platform \
1285// RUN:     --gcc-toolchain="" \
1286// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1287// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1288// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1289// CHECK-ANDROID: "-z" "now"
1290// CHECK-ANDROID: "-z" "relro"
1291// CHECK-ANDROID: "--enable-new-dtags"
1292// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1293// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
1294// CHECK-ANDROID-NOT: "gcc_s"
1295// CHECK-ANDROID: "-lgcc"
1296// CHECK-ANDROID: "-ldl"
1297// CHECK-ANDROID-NOT: "gcc_s"
1298// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
1299// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1300// RUN:     --target=arm-linux-androideabi -rtlib=platform \
1301// RUN:     --gcc-toolchain="" \
1302// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1303// RUN:     -shared \
1304// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1305// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1306// RUN:     --target=arm-linux-android -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=aarch64-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=arm64-linux-android -rtlib=platform \
1319// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1320// RUN:     -shared \
1321// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1322// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1323// RUN:     --target=mipsel-linux-android -rtlib=platform \
1324// RUN:     --gcc-toolchain="" \
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=mips64el-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=i686-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=x86_64-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// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1347// CHECK-ANDROID-SO-NOT: "-Bsymbolic"
1348// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
1349// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
1350// CHECK-ANDROID-SO-NOT: "gcc_s"
1351// CHECK-ANDROID-SO: "-lgcc"
1352// CHECK-ANDROID-SO: "-ldl"
1353// CHECK-ANDROID-SO-NOT: "gcc_s"
1354// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
1355// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1356// RUN:     --target=arm-linux-androideabi -rtlib=platform \
1357// RUN:     --gcc-toolchain="" \
1358// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1359// RUN:     -static \
1360// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1361// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1362// RUN:     --target=arm-linux-android -rtlib=platform \
1363// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1364// RUN:     -static \
1365// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1366// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1367// RUN:     --target=aarch64-linux-android -rtlib=platform \
1368// RUN:     --gcc-toolchain="" \
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=arm64-linux-android -rtlib=platform \
1374// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1375// RUN:     -static \
1376// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1377// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1378// RUN:     --target=mipsel-linux-android -rtlib=platform \
1379// RUN:     --gcc-toolchain="" \
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=mips64el-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=i686-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=x86_64-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// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1402// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
1403// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
1404// CHECK-ANDROID-STATIC-NOT: "gcc_s"
1405// CHECK-ANDROID-STATIC: "-lgcc"
1406// CHECK-ANDROID-STATIC-NOT: "-ldl"
1407// CHECK-ANDROID-STATIC-NOT: "gcc_s"
1408// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
1409// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1410// RUN:     --target=arm-linux-androideabi -rtlib=platform \
1411// RUN:     --gcc-toolchain="" \
1412// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1413// RUN:     -pie \
1414// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1415// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1416// RUN:     --target=arm-linux-android -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=aarch64-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=arm64-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=mipsel-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=mips64el-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=i686-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=x86_64-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// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1458// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1459// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
1460// CHECK-ANDROID-PIE-NOT: "gcc_s"
1461// CHECK-ANDROID-PIE: "-lgcc"
1462// CHECK-ANDROID-PIE-NOT: "gcc_s"
1463// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
1464// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1465// RUN:     --target=arm-linux-androideabi \
1466// RUN:     --gcc-toolchain="" \
1467// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1468// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1469// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1470// RUN:     --target=arm-linux-android \
1471// RUN:     --gcc-toolchain="" \
1472// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1473// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1474// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1475// RUN:     --target=mipsel-linux-android \
1476// RUN:     --gcc-toolchain="" \
1477// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1478// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1479// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1480// RUN:     --target=aarch64-linux-android \
1481// RUN:     --gcc-toolchain="" \
1482// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1483// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1484// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1485// RUN:     --target=arm64-linux-android \
1486// RUN:     --gcc-toolchain="" \
1487// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1488// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1489// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1490// RUN:     --target=mips64el-linux-android \
1491// RUN:     --gcc-toolchain="" \
1492// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1493// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1494// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1495// RUN:     --target=i686-linux-android \
1496// RUN:     --gcc-toolchain="" \
1497// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1498// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1499// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1500// RUN:     --target=x86_64-linux-android \
1501// RUN:     --gcc-toolchain="" \
1502// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1503// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1504// CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
1505// CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
1506//
1507// Test that -pthread does not add -lpthread on Android.
1508// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1509// RUN:     --target=arm-linux-androideabi -pthread \
1510// RUN:     --gcc-toolchain="" \
1511// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1512// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1513// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1514// RUN:     --target=arm-linux-android -pthread \
1515// RUN:     --gcc-toolchain="" \
1516// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1517// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1518// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1519// RUN:     --target=aarch64-linux-android -pthread \
1520// RUN:     --gcc-toolchain="" \
1521// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1522// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1523// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1524// RUN:     --target=arm64-linux-android -pthread \
1525// RUN:     --gcc-toolchain="" \
1526// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1527// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1528// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1529// RUN:     --target=mipsel-linux-android -pthread \
1530// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1531// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1532// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1533// RUN:     --target=mips64el-linux-android -pthread \
1534// RUN:     --gcc-toolchain="" \
1535// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1536// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1537// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1538// RUN:     --target=i686-linux-android -pthread \
1539// RUN:     --gcc-toolchain="" \
1540// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1541// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1542// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1543// RUN:     --target=x86_64-linux-android -pthread \
1544// RUN:     --gcc-toolchain="" \
1545// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1546// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1547// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1548// RUN:     --target=arm-linux-androideabi -pthread \
1549// RUN:     --gcc-toolchain="" \
1550// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1551// RUN:     -shared \
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-android -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=aarch64-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=arm64-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=mipsel-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=mips64el-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=i686-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=x86_64-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// CHECK-ANDROID-PTHREAD-NOT: -lpthread
1596//
1597// RUN: %clang -no-canonical-prefixes %t.o -### -o %t 2>&1 \
1598// RUN:     --target=arm-linux-androideabi -pthread \
1599// RUN:     --gcc-toolchain="" \
1600// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1601// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s
1602// CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'
1603//
1604// Check linker invocation on Debian 6 MIPS 32/64-bit.
1605// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1606// RUN:     --target=mipsel-linux-gnu \
1607// RUN:     --gcc-toolchain="" \
1608// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1609// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
1610// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1611// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
1612// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
1613// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
1614// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
1615// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
1616// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
1617// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
1618// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1619// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
1620// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1621//
1622// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1623// RUN:     --target=mips64el-linux-gnu \
1624// RUN:     --gcc-toolchain="" \
1625// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1626// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
1627// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1628// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
1629// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
1630// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
1631// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
1632// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
1633// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
1634// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
1635// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1636// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
1637// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1638//
1639// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1640// RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1641// RUN:     --gcc-toolchain="" \
1642// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1643// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
1644// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1645// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
1646// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
1647// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
1648// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
1649// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
1650// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
1651// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
1652// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1653// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1654// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1655//
1656// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1657// RUN:     --target=mips64-linux-gnuabi64 -mabi=n64 \
1658// RUN:     --gcc-toolchain="" \
1659// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1660// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1661// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1662// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crt1.o"
1663// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crti.o"
1664// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1665// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1666// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64"
1667// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"
1668// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"
1669// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1670// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../.."
1671// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"
1672// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"
1673// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1674// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crtn.o"
1675//
1676// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1677// RUN:     --target=mips64el-linux-gnuabi64 -mabi=n64 \
1678// RUN:     --gcc-toolchain="" \
1679// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1680// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1681// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1682// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"
1683// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crti.o"
1684// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1685// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1686// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64"
1687// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"
1688// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"
1689// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1690// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../.."
1691// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"
1692// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"
1693// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1694// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"
1695//
1696// Test linker invocation for Freescale SDK (OpenEmbedded).
1697// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1698// RUN:     --target=powerpc-fsl-linux \
1699// RUN:     --gcc-toolchain="" \
1700// RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
1701// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
1702// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1703// CHECK-FSL-PPC: "-m" "elf32ppclinux"
1704// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
1705// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
1706// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
1707// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1708// RUN:     --target=powerpc64-fsl-linux \
1709// RUN:     --gcc-toolchain="" \
1710// RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
1711// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
1712// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1713// CHECK-FSL-PPC64: "-m" "elf64ppc"
1714// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
1715// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
1716// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
1717//
1718// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
1719// RUN: %clang --target=x86_64-unknown-linux -### %s \
1720// RUN:        --gcc-toolchain="" \
1721// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1722// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1723// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
1724// RUN:        --gcc-toolchain="" \
1725// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1726// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1727// RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
1728// RUN:        --gcc-toolchain="" \
1729// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1730// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1731// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
1732// RUN:        --gcc-toolchain="" \
1733// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1734// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1735// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
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 -O3 -Ofast\
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 -ffast-math -fno-fast-math \
1744// RUN:        --gcc-toolchain="" \
1745// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1746// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1747// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
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 -fno-unsafe-math-optimizations \
1752// RUN:        --gcc-toolchain="" \
1753// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1754// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1755// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -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 -fno-unsafe-math-optimizations -Ofast \
1760// RUN:        --gcc-toolchain="" \
1761// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1762// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1763// We don't have crtfastmath.o in the i386 tree, use it to check that file
1764// detection works.
1765// RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
1766// RUN:        --gcc-toolchain="" \
1767// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1768// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1769// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
1770// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
1771
1772// Check that we link in gcrt1.o when compiling with -pg
1773// RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
1774// RUN:        --gcc-toolchain="" \
1775// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1776// RUN:   | FileCheck --check-prefix=CHECK-PG %s
1777// CHECK-PG: gcrt1.o
1778
1779// GCC forwards -u to the linker.
1780// RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
1781// RUN:        --gcc-toolchain="" \
1782// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1783// RUN:   | FileCheck --check-prefix=CHECK-u %s
1784// CHECK-u: "-u" "asdf"
1785
1786// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1787// RUN:     --target=armeb-unknown-linux \
1788// RUN:     --gcc-toolchain="" \
1789// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1790// RUN:   | FileCheck --check-prefix=CHECK-ARMEB %s
1791// CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1792// CHECK-ARMEB-NOT: "--be8"
1793// CHECK-ARMEB: "-EB"
1794// CHECK-ARMEB: "-m" "armelfb_linux_eabi"
1795
1796// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1797// RUN:     --target=armebv7-unknown-linux \
1798// RUN:     --gcc-toolchain="" \
1799// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1800// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1801// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1802// CHECK-ARMV7EB: "--be8"
1803// CHECK-ARMV7EB: "-EB"
1804// CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
1805
1806// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1807// RUN:     --target=armv7-unknown-linux \
1808// RUN:     -mbig-endian \
1809// RUN:     --gcc-toolchain="" \
1810// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1811// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1812
1813// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1814// RUN:     --target=armebv7-unknown-linux \
1815// RUN:     -mbig-endian \
1816// RUN:     --gcc-toolchain="" \
1817// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1818// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1819
1820// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1821// RUN:     --target=armv7-unknown-linux \
1822// RUN:     --gcc-toolchain="" \
1823// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1824// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1825// CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1826// CHECK-ARMV7EL-NOT: "--be8"
1827// CHECK-ARMV7EL: "-EL"
1828// CHECK-ARMV7EL: "-m" "armelf_linux_eabi"
1829
1830// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1831// RUN:     --target=armebv7-unknown-linux \
1832// RUN:     -mlittle-endian \
1833// RUN:     --gcc-toolchain="" \
1834// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1835// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1836
1837// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1838// RUN:     --target=armv7-unknown-linux \
1839// RUN:     -mlittle-endian \
1840// RUN:     --gcc-toolchain="" \
1841// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1842// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s
1843
1844// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1845// RUN:     --target=aarch64_be-unknown-linux \
1846// RUN:     --gcc-toolchain="" \
1847// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1848// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1849// CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1850// CHECK-AARCH64BE-NOT: "--be8"
1851// CHECK-AARCH64BE: "-EB"
1852// CHECK-AARCH64BE: "-m" "aarch64linuxb"
1853
1854// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1855// RUN:     --target=aarch64-unknown-linux \
1856// RUN:     -mbig-endian \
1857// RUN:     --gcc-toolchain="" \
1858// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1859// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1860
1861// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1862// RUN:     --target=aarch64_be-unknown-linux \
1863// RUN:     -mbig-endian \
1864// RUN:     --gcc-toolchain="" \
1865// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1866// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s
1867
1868// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1869// RUN:     --target=aarch64-unknown-linux \
1870// RUN:     --gcc-toolchain="" \
1871// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1872// RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s
1873// CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1874// CHECK-AARCH64LE-NOT: "--be8"
1875// CHECK-AARCH64LE: "-EL"
1876// CHECK-AARCH64LE: "-m" "aarch64linux"
1877
1878// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1879// RUN:     --target=aarch64_be-unknown-linux \
1880// RUN:     -mlittle-endian \
1881// RUN:     --gcc-toolchain="" \
1882// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1883// RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s
1884
1885// Check dynamic-linker for musl-libc
1886// RUN: %clang %s -### -o %t.o 2>&1 \
1887// RUN:     --target=i386-pc-linux-musl \
1888// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86 %s
1889// RUN: %clang %s -### -o %t.o 2>&1 \
1890// RUN:     --target=x86_64-pc-linux-musl \
1891// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s
1892// RUN: %clang %s -### -o %t.o 2>&1 \
1893// RUN:     --target=mips-pc-linux-musl \
1894// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS %s
1895// RUN: %clang %s -### -o %t.o 2>&1 \
1896// RUN:     --target=mipsel-pc-linux-musl \
1897// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s
1898// RUN: %clang %s -### -o %t.o 2>&1 \
1899// RUN:     --target=mips64-pc-linux-musl \
1900// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s
1901// RUN: %clang %s -### -o %t.o 2>&1 \
1902// RUN:     --target=mips64el-pc-linux-musl \
1903// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s
1904// RUN: %clang %s -### -o %t.o 2>&1 \
1905// RUN:     --target=powerpc-pc-linux-musl \
1906// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC %s
1907// RUN: %clang %s -### -o %t.o 2>&1 \
1908// RUN:     --target=powerpc64-pc-linux-musl \
1909// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s
1910// RUN: %clang %s -### -o %t.o 2>&1 \
1911// RUN:     --target=thumb-pc-linux-musleabi \
1912// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1913// RUN: %clang %s -### -o %t.o 2>&1 \
1914// RUN:     --target=thumb-pc-linux-musleabihf \
1915// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1916// RUN: %clang %s -### -o %t.o 2>&1 \
1917// RUN:     --target=thumbv7-pc-linux-musleabi -mhard-float \
1918// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1919// RUN: %clang %s -### -o %t.o 2>&1 \
1920// RUN:     --target=thumbeb-pc-linux-musleabi \
1921// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1922// RUN: %clang %s -### -o %t.o 2>&1 \
1923// RUN:     --target=thumbeb-pc-linux-musleabihf \
1924// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1925// RUN: %clang %s -### -o %t.o 2>&1 \
1926// RUN:     --target=thumbv7eb-pc-linux-musleabi -mhard-float \
1927// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1928// RUN: %clang %s -### -o %t.o 2>&1 \
1929// RUN:     --target=arm-pc-linux-musleabi \
1930// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1931// RUN: %clang %s -### -o %t.o 2>&1 \
1932// RUN:     --target=arm-pc-linux-musleabihf \
1933// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1934// RUN: %clang %s -### -o %t.o 2>&1 \
1935// RUN:     --target=armv7-pc-linux-musleabi -mhard-float \
1936// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1937// RUN: %clang %s -### -o %t.o 2>&1 \
1938// RUN:     --target=armeb-pc-linux-musleabi \
1939// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1940// RUN: %clang %s -### -o %t.o 2>&1 \
1941// RUN:     --target=armeb-pc-linux-musleabihf \
1942// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1943// RUN: %clang %s -### -o %t.o 2>&1 \
1944// RUN:     --target=armv7eb-pc-linux-musleabi -mhard-float \
1945// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1946// RUN: %clang %s -### -o %t.o 2>&1 \
1947// RUN:     --target=aarch64-pc-linux-musleabi \
1948// RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s
1949// RUN: %clang %s -### -o %t.o 2>&1 \
1950// RUN:     --target=aarch64_be-pc-linux-musleabi \
1951// RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
1952// CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"
1953// CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
1954// CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"
1955// CHECK-MUSL-MIPSEL:     "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"
1956// CHECK-MUSL-MIPS64:     "-dynamic-linker" "/lib/ld-musl-mips64.so.1"
1957// CHECK-MUSL-MIPS64EL:   "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"
1958// CHECK-MUSL-PPC:        "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"
1959// CHECK-MUSL-PPC64:      "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"
1960// CHECK-MUSL-ARM:        "-dynamic-linker" "/lib/ld-musl-arm.so.1"
1961// CHECK-MUSL-ARMHF:      "-dynamic-linker" "/lib/ld-musl-armhf.so.1"
1962// CHECK-MUSL-ARMEB:      "-dynamic-linker" "/lib/ld-musl-armeb.so.1"
1963// CHECK-MUSL-ARMEBHF:    "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"
1964// CHECK-MUSL-AARCH64:    "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"
1965// CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"
1966
1967// Check whether multilib gcc install works fine on Gentoo with gcc-config
1968// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1969// RUN:     --target=x86_64-unknown-linux-gnu -rtlib=platform \
1970// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1971// RUN:     --gcc-toolchain="" \
1972// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO %s
1973// CHECK-LD-GENTOO-NOT: warning:
1974// CHECK-LD-GENTOO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1975// CHECK-LD-GENTOO: "--eh-frame-hdr"
1976// CHECK-LD-GENTOO: "-m" "elf_x86_64"
1977// CHECK-LD-GENTOO: "-dynamic-linker"
1978// CHECK-LD-GENTOO: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3{{/|\\\\}}crtbegin.o"
1979// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3"
1980// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1981// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1982// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1983// CHECK-LD-GENTOO: "-lc"
1984// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1985// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1986// RUN:     --target=i686-unknown-linux-gnu -rtlib=platform \
1987// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1988// RUN:     --gcc-toolchain="" \
1989// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-32 %s
1990// CHECK-LD-GENTOO-32-NOT: warning:
1991// CHECK-LD-GENTOO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1992// CHECK-LD-GENTOO-32: "--eh-frame-hdr"
1993// CHECK-LD-GENTOO-32: "-m" "elf_i386"
1994// CHECK-LD-GENTOO-32: "-dynamic-linker"
1995// CHECK-LD-GENTOO-32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32{{/|\\\\}}crtbegin.o"
1996// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32"
1997// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1998// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1999// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2000// CHECK-LD-GENTOO-32: "-lc"
2001// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2002// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2003// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform \
2004// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
2005// RUN:     --gcc-toolchain="" \
2006// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-X32 %s
2007// CHECK-LD-GENTOO-X32-NOT: warning:
2008// CHECK-LD-GENTOO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2009// CHECK-LD-GENTOO-X32: "--eh-frame-hdr"
2010// CHECK-LD-GENTOO-X32: "-m" "elf32_x86_64"
2011// CHECK-LD-GENTOO-X32: "-dynamic-linker"
2012// CHECK-LD-GENTOO-X32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32{{/|\\\\}}crtbegin.o"
2013// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32"
2014// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
2015// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
2016// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2017// CHECK-LD-GENTOO-X32: "-lc"
2018// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2019
2020// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2021// RUN:     --target=x86_64-unknown-linux-gnu \
2022// RUN:     --gcc-toolchain="%S/Inputs/rhel_7_tree/opt/rh/devtoolset-7/root/usr" \
2023// RUN:     --sysroot=%S/Inputs/rhel_7_tree \
2024// RUN:   | FileCheck --check-prefix=CHECK-LD-RHEL7-DTS %s
2025// CHECK-LD-RHEL7-DTS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2026// CHECK-LD-RHLE7-DTS: Selected GCC installation: [[GCC_INSTALL:[[SYSROOT]]/lib/gcc/x86_64-redhat-linux/7]]
2027// CHECK-LD-RHEL7-DTS-NOT: /usr/bin/ld
2028// CHECK-LD-RHLE7-DTS: [[GCC_INSTALL]/../../../bin/ld
2029
2030// Check whether gcc7 install works fine on Amazon Linux AMI
2031// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2032// RUN:     --target=x86_64-amazon-linux -rtlib=libgcc \
2033// RUN:     --gcc-toolchain="" \
2034// RUN:     --sysroot=%S/Inputs/ami_linux_tree \
2035// RUN:   | FileCheck --check-prefix=CHECK-LD-AMI %s
2036// CHECK-LD-AMI-NOT: warning:
2037// CHECK-LD-AMI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
2038// CHECK-LD-AMI: "--eh-frame-hdr"
2039// CHECK-LD-AMI: "-m" "elf_x86_64"
2040// CHECK-LD-AMI: "-dynamic-linker"
2041// CHECK-LD-AMI: "{{.*}}/usr/lib/gcc/x86_64-amazon-linux/7{{/|\\\\}}crtbegin.o"
2042// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7"
2043// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7/../../../../lib64"
2044// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7/../../.."
2045// CHECK-LD-AMI: "-L[[SYSROOT]]/lib"
2046// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib"
2047// CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2048// CHECK-LD-AMI: "-lc"
2049// CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2050
2051// Check whether the OpenEmbedded ARM libs are added correctly.
2052// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2053// RUN:     --target=arm-oe-linux-gnueabi -rtlib=libgcc \
2054// RUN:     --gcc-toolchain="" \
2055// RUN:     --sysroot=%S/Inputs/openembedded_arm_linux_tree \
2056// RUN:   | FileCheck --check-prefix=CHECK-OE-ARM %s
2057
2058// CHECK-OE-ARM: "-cc1" "-triple" "armv4t-oe-linux-gnueabi"
2059// CHECK-OE-ARM: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
2060// CHECK-OE-ARM: "-m" "armelf_linux_eabi" "-dynamic-linker"
2061// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crt1.o"
2062// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crti.o"
2063// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtbegin.o"
2064// CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0"
2065// CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi"
2066// CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib"
2067// CHECK-OE-ARM: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2068// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtend.o"
2069// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crtn.o"
2070
2071// Check whether the OpenEmbedded AArch64 libs are added correctly.
2072// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2073// RUN:     --target=aarch64-oe-linux -rtlib=libgcc \
2074// RUN:     --gcc-toolchain="" \
2075// RUN:     --sysroot=%S/Inputs/openembedded_aarch64_linux_tree \
2076// RUN:   | FileCheck --check-prefix=CHECK-OE-AARCH64 %s
2077
2078// CHECK-OE-AARCH64: "-cc1" "-triple" "aarch64-oe-linux"
2079// CHECK-OE-AARCH64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
2080// CHECK-OE-AARCH64: "-m" "aarch64linux" "-dynamic-linker"
2081// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crt1.o"
2082// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crti.o"
2083// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtbegin.o"
2084// CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0"
2085// CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64"
2086// CHECK-OE-AARCH64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
2087// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtend.o"
2088// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crtn.o"
2089