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