1 // General tests that the header search paths detected by the driver and passed
2 // to CC1 are sane.
3 //
4 // Test a simulated installation of libc++ on Linux, both through sysroot and
5 // the installation path of Clang.
6 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
7 // RUN:     -target x86_64-unknown-linux-gnu \
8 // RUN:     -stdlib=libc++ \
9 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
10 // RUN:     -resource-dir=%S/Inputs/resource_dir \
11 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
12 // RUN:     --gcc-toolchain="" \
13 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
14 // CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
15 // CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
16 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/x86_64-unknown-linux-gnu/c++/v1"
17 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
18 // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
19 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
20 // RUN:     -target x86_64-unknown-linux-gnu \
21 // RUN:     -stdlib=libc++ \
22 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
23 // RUN:     -resource-dir=%S/Inputs/resource_dir \
24 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
25 // RUN:     --gcc-toolchain="" \
26 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
27 // CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
28 // CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
29 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/x86_64-unknown-linux-gnu/c++/v1"
30 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
31 // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
32 //
33 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
34 // RUN:     -target x86_64-unknown-linux-gnu \
35 // RUN:     -stdlib=libc++ \
36 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
37 // RUN:     -resource-dir=%S/Inputs/resource_dir \
38 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxxv2_tree \
39 // RUN:     --gcc-toolchain="" \
40 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXXV2-SYSROOT %s
41 // CHECK-BASIC-LIBCXXV2-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
42 // CHECK-BASIC-LIBCXXV2-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
43 // CHECK-BASIC-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/x86_64-unknown-linux-gnu/c++/v2"
44 // CHECK-BASIC-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v2"
45 // CHECK-BASIC-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
46 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
47 // RUN:     -target x86_64-unknown-linux-gnu \
48 // RUN:     -stdlib=libc++ \
49 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxxv2_tree/usr/bin \
50 // RUN:     -resource-dir=%S/Inputs/resource_dir \
51 // RUN:     --sysroot=%S/Inputs/basic_linux_libcxxv2_tree \
52 // RUN:     --gcc-toolchain="" \
53 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXXV2-INSTALL %s
54 // CHECK-BASIC-LIBCXXV2-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
55 // CHECK-BASIC-LIBCXXV2-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
56 // CHECK-BASIC-LIBCXXV2-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/x86_64-unknown-linux-gnu/c++/v2"
57 // CHECK-BASIC-LIBCXXV2-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v2"
58 // CHECK-BASIC-LIBCXXV2-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
59 //
60 // Test Linux with both libc++ and libstdc++ installed.
61 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
62 // RUN:     -target x86_64-unknown-linux-gnu \
63 // RUN:     -stdlib=libc++ \
64 // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
65 // RUN:     -resource-dir=%S/Inputs/resource_dir \
66 // RUN:     --sysroot=%S/Inputs/basic_linux_libstdcxx_libcxxv2_tree \
67 // RUN:     --gcc-toolchain="" \
68 // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT %s
69 // CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
70 // CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
71 // CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/x86_64-unknown-linux-gnu/c++/v2"
72 // CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v2"
73 // CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
74 
75 // Test Gentoo's weirdness both before and after they changed it in their GCC
76 // 4.6.4 release.
77 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
78 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
79 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.6.2_tree \
80 // RUN:     --gcc-toolchain="" \
81 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-6-2 %s
82 // CHECK-GENTOO-4-6-2: "{{.*}}clang{{.*}}" "-cc1"
83 // CHECK-GENTOO-4-6-2: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
84 // CHECK-GENTOO-4-6-2: "-isysroot" "[[SYSROOT:[^"]+]]"
85 // CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4"
86 // CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu"
87 // CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward"
88 // CHECK-GENTOO-4-6-2: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
89 // CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
90 // CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/include"
91 // CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
92 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
93 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
94 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.6.4_tree \
95 // RUN:     --gcc-toolchain="" \
96 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-6-4 %s
97 // CHECK-GENTOO-4-6-4: "{{.*}}clang{{.*}}" "-cc1"
98 // CHECK-GENTOO-4-6-4: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
99 // CHECK-GENTOO-4-6-4: "-isysroot" "[[SYSROOT:[^"]+]]"
100 // CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6"
101 // CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6/x86_64-pc-linux-gnu"
102 // CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6/backward"
103 // CHECK-GENTOO-4-6-4: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
104 // CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
105 // CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/include"
106 // CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
107 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
108 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
109 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.3_tree \
110 // RUN:     --gcc-toolchain="" \
111 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3 %s
112 // CHECK-GENTOO-4-9-3: "{{.*}}clang{{.*}}" "-cc1"
113 // CHECK-GENTOO-4-9-3: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
114 // CHECK-GENTOO-4-9-3: "-isysroot" "[[SYSROOT:[^"]+]]"
115 // CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3"
116 // CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/x86_64-pc-linux-gnu"
117 // CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/backward"
118 // CHECK-GENTOO-4-9-3: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
119 // CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
120 // CHECK-GENTOO-4-9-3: "-internal-externc-isystem" "[[SYSROOT]]/include"
121 // CHECK-GENTOO-4-9-3: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
122 //
123 // Test support for Gentoo's gcc-config -- clang should prefer the older
124 // (4.9.3) version over the newer (5.4.0) due to preference specified
125 // in /etc/env.d/gcc/x86_64-pc-linux-gnu.
126 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
127 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
128 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
129 // RUN:     --gcc-toolchain="" \
130 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3 %s
131 //
132 // Test that gcc-config support does not break multilib.
133 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
134 // RUN:     -target x86_64-unknown-linux-gnux32 -stdlib=libstdc++ \
135 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
136 // RUN:     --gcc-toolchain="" \
137 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3-X32 %s
138 // CHECK-GENTOO-4-9-3-X32: "{{.*}}clang{{.*}}" "-cc1"
139 // CHECK-GENTOO-4-9-3-X32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
140 // CHECK-GENTOO-4-9-3-X32: "-isysroot" "[[SYSROOT:[^"]+]]"
141 // CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3"
142 // CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/x86_64-pc-linux-gnu/x32"
143 // CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/backward"
144 // CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
145 // CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
146 // CHECK-GENTOO-4-9-3-X32: "-internal-externc-isystem" "[[SYSROOT]]/include"
147 // CHECK-GENTOO-4-9-3-X32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
148 //
149 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
150 // RUN:     -target i386-unknown-linux-gnu -stdlib=libstdc++ \
151 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
152 // RUN:     --gcc-toolchain="" \
153 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3-32 %s
154 // CHECK-GENTOO-4-9-3-32: "{{.*}}clang{{.*}}" "-cc1"
155 // CHECK-GENTOO-4-9-3-32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
156 // CHECK-GENTOO-4-9-3-32: "-isysroot" "[[SYSROOT:[^"]+]]"
157 // CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3"
158 // CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/x86_64-pc-linux-gnu/32"
159 // CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3/backward"
160 // CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
161 // CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
162 // CHECK-GENTOO-4-9-3-32: "-internal-externc-isystem" "[[SYSROOT]]/include"
163 // CHECK-GENTOO-4-9-3-32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
164 //
165 // Test support for parsing Gentoo's gcc-config -- clang should parse the
166 // /etc/env.d/gcc/config-x86_64-pc-linux-gnu file to find CURRENT gcc used.
167 // Then should pick the multilibs from version 4.9.x specified in
168 // /etc/env.d/gcc/x86_64-pc-linux-gnu-4.9.3.
169 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
170 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
171 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
172 // RUN:     --gcc-toolchain="" \
173 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X %s
174 //
175 // CHECK-GENTOO-4-9-X: "{{.*}}clang{{.*}}" "-cc1"
176 // CHECK-GENTOO-4-9-X: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
177 // CHECK-GENTOO-4-9-X: "-isysroot" "[[SYSROOT:[^"]+]]"
178 // CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3"
179 // CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/x86_64-pc-linux-gnu"
180 // CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/backward"
181 // CHECK-GENTOO-4-9-X: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
182 // CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
183 // CHECK-GENTOO-4-9-X: "-internal-externc-isystem" "[[SYSROOT]]/include"
184 // CHECK-GENTOO-4-9-X: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
185 //
186 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
187 // RUN:     -target x86_64-unknown-linux-gnux32 -stdlib=libstdc++ \
188 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
189 // RUN:     --gcc-toolchain="" \
190 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X-X32 %s
191 // CHECK-GENTOO-4-9-X-X32: "{{.*}}clang{{.*}}" "-cc1"
192 // CHECK-GENTOO-4-9-X-X32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
193 // CHECK-GENTOO-4-9-X-X32: "-isysroot" "[[SYSROOT:[^"]+]]"
194 // CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3"
195 // CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/x86_64-pc-linux-gnu/x32"
196 // CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/backward"
197 // CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
198 // CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
199 // CHECK-GENTOO-4-9-X-X32: "-internal-externc-isystem" "[[SYSROOT]]/include"
200 // CHECK-GENTOO-4-9-X-X32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
201 //
202 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
203 // RUN:     -target i386-unknown-linux-gnu -stdlib=libstdc++ \
204 // RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
205 // RUN:     --gcc-toolchain="" \
206 // RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X-32 %s
207 // CHECK-GENTOO-4-9-X-32: "{{.*}}clang{{.*}}" "-cc1"
208 // CHECK-GENTOO-4-9-X-32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
209 // CHECK-GENTOO-4-9-X-32: "-isysroot" "[[SYSROOT:[^"]+]]"
210 // CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3"
211 // CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/x86_64-pc-linux-gnu/32"
212 // CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3/backward"
213 // CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
214 // CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
215 // CHECK-GENTOO-4-9-X-32: "-internal-externc-isystem" "[[SYSROOT]]/include"
216 // CHECK-GENTOO-4-9-X-32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
217 //
218 // Check header search on Debian 6 / MIPS64
219 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
220 // RUN:     -target mips64-unknown-linux-gnuabi64 -stdlib=libstdc++ \
221 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
222 // RUN:     --gcc-toolchain="" \
223 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64-GNUABI %s
224 // CHECK-MIPS64-GNUABI: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
225 // CHECK-MIPS64-GNUABI: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
226 // CHECK-MIPS64-GNUABI: "-isysroot" "[[SYSROOT:[^"]+]]"
227 // CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9"
228 // CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9/mips64-linux-gnuabi64"
229 // CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9/backward"
230 // CHECK-MIPS64-GNUABI: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
231 // CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
232 // CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/mips64-linux-gnuabi64"
233 // CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/include"
234 // CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
235 //
236 // Check header search on Debian 6 / MIPS64
237 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
238 // RUN:     -target mips64el-unknown-linux-gnuabi64 -stdlib=libstdc++ \
239 // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
240 // RUN:     --gcc-toolchain="" \
241 // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABI %s
242 // CHECK-MIPS64EL-GNUABI: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
243 // CHECK-MIPS64EL-GNUABI: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
244 // CHECK-MIPS64EL-GNUABI: "-isysroot" "[[SYSROOT:[^"]+]]"
245 // CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9"
246 // CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9/mips64el-linux-gnuabi64"
247 // CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9/backward"
248 // CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
249 // CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
250 // CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/mips64el-linux-gnuabi64"
251 // CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/include"
252 // CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
253 
254 
255 // Check header search on OpenEmbedded ARM.
256 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
257 // RUN:     -target arm-oe-linux-gnueabi -stdlib=libstdc++ \
258 // RUN:     --sysroot=%S/Inputs/openembedded_arm_linux_tree \
259 // RUN:     --gcc-toolchain="" \
260 // RUN:   | FileCheck --check-prefix=CHECK-OE-ARM %s
261 
262 // CHECK-OE-ARM: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
263 // CHECK-OE-ARM: "-isysroot" "[[SYSROOT:[^"]+]]"
264 // CHECK-OE-ARM: "-internal-isystem" "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../include/c++/6.3.0"
265 // CHECK-OE-ARM: "-internal-isystem" "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../include/c++/6.3.0/backward"
266 
267 // Check header search on OpenEmbedded AArch64.
268 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
269 // RUN:     -target aarch64-oe-linux -stdlib=libstdc++ \
270 // RUN:     --sysroot=%S/Inputs/openembedded_aarch64_linux_tree \
271 // RUN:     --gcc-toolchain="" \
272 // RUN:   | FileCheck --check-prefix=CHECK-OE-AARCH64 %s
273 
274 // CHECK-OE-AARCH64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
275 // CHECK-OE-AARCH64: "-isysroot" "[[SYSROOT:[^"]+]]"
276 // CHECK-OE-AARCH64: "-internal-isystem" "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../include/c++/6.3.0"
277 // CHECK-OE-AARCH64: "-internal-isystem" "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../include/c++/6.3.0/backward"
278 
279 // Check header search with Cray's gcc package.
280 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
281 // RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
282 // RUN:     --sysroot=%S/Inputs/cray_suse_gcc_tree \
283 // RUN:     --gcc-toolchain="%S/Inputs/cray_suse_gcc_tree/opt/gcc/8.2.0/snos" \
284 // RUN:   | FileCheck --check-prefix=CHECK-CRAY-X86 %s
285 
286 // CHECK-CRAY-X86: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
287 // CHECK-CRAY-X86: "-isysroot" "[[SYSROOT:[^"]+]]"
288 // CHECK-CRAY-X86: "-internal-isystem" "[[SYSROOT]]/opt/gcc/8.2.0/snos/lib/gcc/x86_64-suse-linux/8.2.0/../../../../include/g++"
289 // CHECK-CRAY-X86: "-internal-isystem" "[[SYSROOT]]/opt/gcc/8.2.0/snos/lib/gcc/x86_64-suse-linux/8.2.0/../../../../include/g++/backward"
290