Clang Project

clang_source_code/test/Driver/linux-header-search.cpp
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/c++/v1"
17// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
18// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
19// RUN:     -target x86_64-unknown-linux-gnu \
20// RUN:     -stdlib=libc++ \
21// RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
22// RUN:     -resource-dir=%S/Inputs/resource_dir \
23// RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
24// RUN:     --gcc-toolchain="" \
25// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
26// CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
27// CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
28// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
29// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
30//
31// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
32// RUN:     -target x86_64-unknown-linux-gnu \
33// RUN:     -stdlib=libc++ \
34// RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
35// RUN:     -resource-dir=%S/Inputs/resource_dir \
36// RUN:     --sysroot=%S/Inputs/basic_linux_libcxxv2_tree \
37// RUN:     --gcc-toolchain="" \
38// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXXV2-SYSROOT %s
39// CHECK-BASIC-LIBCXXV2-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
40// CHECK-BASIC-LIBCXXV2-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
41// CHECK-BASIC-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v2"
42// CHECK-BASIC-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
43// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
44// RUN:     -target x86_64-unknown-linux-gnu \
45// RUN:     -stdlib=libc++ \
46// RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxxv2_tree/usr/bin \
47// RUN:     -resource-dir=%S/Inputs/resource_dir \
48// RUN:     --sysroot=%S/Inputs/basic_linux_libcxxv2_tree \
49// RUN:     --gcc-toolchain="" \
50// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXXV2-INSTALL %s
51// CHECK-BASIC-LIBCXXV2-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
52// CHECK-BASIC-LIBCXXV2-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
53// CHECK-BASIC-LIBCXXV2-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v2"
54// CHECK-BASIC-LIBCXXV2-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
55//
56// Test Linux with both libc++ and libstdc++ installed.
57// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
58// RUN:     -target x86_64-unknown-linux-gnu \
59// RUN:     -stdlib=libc++ \
60// RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
61// RUN:     -resource-dir=%S/Inputs/resource_dir \
62// RUN:     --sysroot=%S/Inputs/basic_linux_libstdcxx_libcxxv2_tree \
63// RUN:     --gcc-toolchain="" \
64// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT %s
65// CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
66// CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
67// CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v2"
68// CHECK-BASIC-LIBSTDCXX-LIBCXXV2-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
69//
70// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
71// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
72// RUN:     -target i386-unknown-linux -stdlib=libstdc++ \
73// RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
74// RUN:     --gcc-toolchain="" \
75// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
76// CHECK-UBUNTU-11-04: "{{.*}}clang{{.*}}" "-cc1"
77// CHECK-UBUNTU-11-04: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
78// CHECK-UBUNTU-11-04: "-isysroot" "[[SYSROOT:[^"]+]]"
79// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5"
80// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/i686-linux-gnu"
81// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/backward"
82// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
83// CHECK-UBUNTU-11-04: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
84// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
85// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
86//
87// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
88// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
89// RUN:     --sysroot=%S/Inputs/ubuntu_13.04_multiarch_tree \
90// RUN:     --gcc-toolchain="" \
91// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-13-04 %s
92// CHECK-UBUNTU-13-04: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
93// CHECK-UBUNTU-13-04: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
94// CHECK-UBUNTU-13-04: "-isysroot" "[[SYSROOT:[^"]+]]"
95// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7"
96// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7"
97// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward"
98// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
99// CHECK-UBUNTU-13-04: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
100// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
101// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
102// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
103//
104// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
105// RUN:     -target x86_64-unknown-linux-gnux32 -stdlib=libstdc++ \
106// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
107// RUN:     --gcc-toolchain="" \
108// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04 %s
109// CHECK-UBUNTU-14-04: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
110// CHECK-UBUNTU-14-04: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
111// CHECK-UBUNTU-14-04: "-isysroot" "[[SYSROOT:[^"]+]]"
112// CHECK-UBUNTU-14-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8"
113// CHECK-UBUNTU-14-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8/x32"
114// CHECK-UBUNTU-14-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"
115// CHECK-UBUNTU-14-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
116// CHECK-UBUNTU-14-04: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
117// CHECK-UBUNTU-14-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
118// CHECK-UBUNTU-14-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
119// CHECK-UBUNTU-14-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
120///
121// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
122// RUN:     -target arm-linux-gnueabihf -stdlib=libstdc++ \
123// RUN:     --sysroot=%S/Inputs/ubuntu_13.04_multiarch_tree \
124// RUN:     --gcc-toolchain="" \
125// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-13-04-CROSS %s
126// CHECK-UBUNTU-13-04-CROSS: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
127// CHECK-UBUNTU-13-04-CROSS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
128// CHECK-UBUNTU-13-04-CROSS: "-isysroot" "[[SYSROOT:[^"]+]]"
129// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../include/c++/4.7"
130// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../include/arm-linux-gnueabihf/c++/4.7"
131// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../include/c++/4.7/backward"
132// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
133// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
134// CHECK-UBUNTU-13-04-CROSS: "-internal-externc-isystem" "[[SYSROOT]]/include"
135// CHECK-UBUNTU-13-04-CROSS: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
136//
137// Test Ubuntu/Debian's new version of multiarch, with -m32.
138// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
139// RUN:     -target x86_64-unknown-linux-gnu -m32 -stdlib=libstdc++ \
140// RUN:     --sysroot=%S/Inputs/ubuntu_13.04_multiarch_tree \
141// RUN:     --gcc-toolchain="" \
142// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-13-04-M32 %s
143// CHECK-UBUNTU-13-04-M32: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
144// CHECK-UBUNTU-13-04-M32: "-triple" "i386-unknown-linux-gnu"
145// CHECK-UBUNTU-13-04-M32: "-isysroot" "[[SYSROOT:[^"]+]]"
146// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7"
147// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7/32"
148// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward"
149//
150// Test Ubuntu/Debian's Ubuntu 14.04 config variant, with -m32
151// and an empty 4.9 directory.
152// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
153// RUN:     -target x86_64-unknown-linux-gnu -m32 -stdlib=libstdc++ \
154// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
155// RUN:     --gcc-toolchain="" \
156// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-M32 %s
157// CHECK-UBUNTU-14-04-M32: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
158// CHECK-UBUNTU-14-04-M32: "-triple" "i386-unknown-linux-gnu"
159// CHECK-UBUNTU-14-04-M32: "-isysroot" "[[SYSROOT:[^"]+]]"
160// CHECK-UBUNTU-14-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8"
161// CHECK-UBUNTU-14-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8/32"
162// CHECK-UBUNTU-14-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"
163//
164// Test Ubuntu/Debian's Ubuntu 14.04 with -m32 and an i686 cross compiler
165// installed rather than relying on multilib. Also happens to look like an
166// actual i686 Ubuntu system.
167// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
168// RUN:     -target x86_64-unknown-linux-gnu -m32 -stdlib=libstdc++ \
169// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree2 \
170// RUN:     --gcc-toolchain="" \
171// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-I686 %s
172// CHECK-UBUNTU-14-04-I686: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
173// CHECK-UBUNTU-14-04-I686: "-triple" "i386-unknown-linux-gnu"
174// CHECK-UBUNTU-14-04-I686: "-isysroot" "[[SYSROOT:[^"]+]]"
175// CHECK-UBUNTU-14-04-I686: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8"
176// CHECK-UBUNTU-14-04-I686: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/i386-linux-gnu/c++/4.8"
177// CHECK-UBUNTU-14-04-I686: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8/backward"
178//
179// Test Ubuntu/Debian's Ubuntu 14.04 for powerpc64le
180// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
181// RUN:     -target powerpc64le-unknown-linux-gnu -m32 -stdlib=libstdc++ \
182// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
183// RUN:     --gcc-toolchain="" \
184// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
185// CHECK-UBUNTU-14-04-PPC64LE: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
186// CHECK-UBUNTU-14-04-PPC64LE: "-triple" "powerpc64le-unknown-linux-gnu"
187// CHECK-UBUNTU-14-04-PPC64LE: "-isysroot" "[[SYSROOT:[^"]+]]"
188// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/c++/4.8"
189// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/powerpc64le-linux-gnu/c++/4.8"
190// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/c++/4.8/backward"
191// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc64le-linux-gnu"
192// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/include"
193// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
194//
195// Thoroughly exercise the Debian multiarch environment.
196// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
197// RUN:     -target i686-linux-gnu -stdlib=libstdc++ \
198// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
199// RUN:     --gcc-toolchain="" \
200// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
201// CHECK-DEBIAN-X86: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
202// CHECK-DEBIAN-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
203// CHECK-DEBIAN-X86: "-isysroot" "[[SYSROOT:[^"]+]]"
204// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5"
205// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/i686-linux-gnu"
206// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/backward"
207// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
208// CHECK-DEBIAN-X86: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
209// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/i386-linux-gnu"
210// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/include"
211// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
212// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
213// RUN:     -target x86_64-linux-gnu -stdlib=libstdc++ \
214// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
215// RUN:     --gcc-toolchain="" \
216// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
217// CHECK-DEBIAN-X86-64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
218// CHECK-DEBIAN-X86-64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
219// CHECK-DEBIAN-X86-64: "-isysroot" "[[SYSROOT:[^"]+]]"
220// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5"
221// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/x86_64-linux-gnu"
222// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
223// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
224// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
225// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
226// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/include"
227// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
228// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
229// RUN:     -target powerpc-linux-gnu -stdlib=libstdc++ \
230// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
231// RUN:     --gcc-toolchain="" \
232// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
233// CHECK-DEBIAN-PPC: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
234// CHECK-DEBIAN-PPC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
235// CHECK-DEBIAN-PPC: "-isysroot" "[[SYSROOT:[^"]+]]"
236// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5"
237// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/powerpc-linux-gnu"
238// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/backward"
239// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
240// CHECK-DEBIAN-PPC: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
241// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc-linux-gnu"
242// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/include"
243// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
244// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
245// RUN:     -target powerpc64-linux-gnu -stdlib=libstdc++ \
246// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
247// RUN:     --gcc-toolchain="" \
248// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
249// CHECK-DEBIAN-PPC64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
250// CHECK-DEBIAN-PPC64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
251// CHECK-DEBIAN-PPC64: "-isysroot" "[[SYSROOT:[^"]+]]"
252// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5"
253// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/powerpc64-linux-gnu"
254// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
255// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
256// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
257// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc64-linux-gnu"
258// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/include"
259// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
260//
261// Test Gentoo's weirdness both before and after they changed it in their GCC
262// 4.6.4 release.
263// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
264// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
265// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.6.2_tree \
266// RUN:     --gcc-toolchain="" \
267// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-6-2 %s
268// CHECK-GENTOO-4-6-2: "{{.*}}clang{{.*}}" "-cc1"
269// CHECK-GENTOO-4-6-2: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
270// CHECK-GENTOO-4-6-2: "-isysroot" "[[SYSROOT:[^"]+]]"
271// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4"
272// 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"
273// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward"
274// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
275// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
276// CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/include"
277// CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
278// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
279// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
280// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.6.4_tree \
281// RUN:     --gcc-toolchain="" \
282// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-6-4 %s
283// CHECK-GENTOO-4-6-4: "{{.*}}clang{{.*}}" "-cc1"
284// CHECK-GENTOO-4-6-4: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
285// CHECK-GENTOO-4-6-4: "-isysroot" "[[SYSROOT:[^"]+]]"
286// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6"
287// 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"
288// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6/backward"
289// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
290// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
291// CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/include"
292// CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
293// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
294// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
295// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.3_tree \
296// RUN:     --gcc-toolchain="" \
297// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3 %s
298// CHECK-GENTOO-4-9-3: "{{.*}}clang{{.*}}" "-cc1"
299// CHECK-GENTOO-4-9-3: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
300// CHECK-GENTOO-4-9-3: "-isysroot" "[[SYSROOT:[^"]+]]"
301// CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4.9.3"
302// 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"
303// 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"
304// CHECK-GENTOO-4-9-3: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
305// CHECK-GENTOO-4-9-3: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
306// CHECK-GENTOO-4-9-3: "-internal-externc-isystem" "[[SYSROOT]]/include"
307// CHECK-GENTOO-4-9-3: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
308//
309// Test support for Gentoo's gcc-config -- clang should prefer the older
310// (4.9.3) version over the newer (5.4.0) due to preference specified
311// in /etc/env.d/gcc/x86_64-pc-linux-gnu.
312// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
313// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
314// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
315// RUN:     --gcc-toolchain="" \
316// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3 %s
317//
318// Test that gcc-config support does not break multilib.
319// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
320// RUN:     -target x86_64-unknown-linux-gnux32 -stdlib=libstdc++ \
321// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
322// RUN:     --gcc-toolchain="" \
323// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3-X32 %s
324// CHECK-GENTOO-4-9-3-X32: "{{.*}}clang{{.*}}" "-cc1"
325// CHECK-GENTOO-4-9-3-X32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
326// CHECK-GENTOO-4-9-3-X32: "-isysroot" "[[SYSROOT:[^"]+]]"
327// 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"
328// 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"
329// 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"
330// CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
331// CHECK-GENTOO-4-9-3-X32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
332// CHECK-GENTOO-4-9-3-X32: "-internal-externc-isystem" "[[SYSROOT]]/include"
333// CHECK-GENTOO-4-9-3-X32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
334//
335// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
336// RUN:     -target i386-unknown-linux-gnu -stdlib=libstdc++ \
337// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
338// RUN:     --gcc-toolchain="" \
339// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-3-32 %s
340// CHECK-GENTOO-4-9-3-32: "{{.*}}clang{{.*}}" "-cc1"
341// CHECK-GENTOO-4-9-3-32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
342// CHECK-GENTOO-4-9-3-32: "-isysroot" "[[SYSROOT:[^"]+]]"
343// 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"
344// 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"
345// 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"
346// CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
347// CHECK-GENTOO-4-9-3-32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
348// CHECK-GENTOO-4-9-3-32: "-internal-externc-isystem" "[[SYSROOT]]/include"
349// CHECK-GENTOO-4-9-3-32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
350//
351// Test support for parsing Gentoo's gcc-config -- clang should parse the
352// /etc/env.d/gcc/config-x86_64-pc-linux-gnu file to find CURRENT gcc used.
353// Then should pick the multilibs from version 4.9.x specified in
354// /etc/env.d/gcc/x86_64-pc-linux-gnu-4.9.3.
355// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
356// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
357// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
358// RUN:     --gcc-toolchain="" \
359// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X %s
360//
361// CHECK-GENTOO-4-9-X: "{{.*}}clang{{.*}}" "-cc1"
362// CHECK-GENTOO-4-9-X: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
363// CHECK-GENTOO-4-9-X: "-isysroot" "[[SYSROOT:[^"]+]]"
364// CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4.9.3"
365// 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"
366// 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"
367// CHECK-GENTOO-4-9-X: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
368// CHECK-GENTOO-4-9-X: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
369// CHECK-GENTOO-4-9-X: "-internal-externc-isystem" "[[SYSROOT]]/include"
370// CHECK-GENTOO-4-9-X: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
371//
372// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
373// RUN:     -target x86_64-unknown-linux-gnux32 -stdlib=libstdc++ \
374// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
375// RUN:     --gcc-toolchain="" \
376// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X-X32 %s
377// CHECK-GENTOO-4-9-X-X32: "{{.*}}clang{{.*}}" "-cc1"
378// CHECK-GENTOO-4-9-X-X32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
379// CHECK-GENTOO-4-9-X-X32: "-isysroot" "[[SYSROOT:[^"]+]]"
380// 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"
381// 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"
382// 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"
383// CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
384// CHECK-GENTOO-4-9-X-X32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
385// CHECK-GENTOO-4-9-X-X32: "-internal-externc-isystem" "[[SYSROOT]]/include"
386// CHECK-GENTOO-4-9-X-X32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
387//
388// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
389// RUN:     -target i386-unknown-linux-gnu -stdlib=libstdc++ \
390// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_4.9.x_tree \
391// RUN:     --gcc-toolchain="" \
392// RUN:   | FileCheck --check-prefix=CHECK-GENTOO-4-9-X-32 %s
393// CHECK-GENTOO-4-9-X-32: "{{.*}}clang{{.*}}" "-cc1"
394// CHECK-GENTOO-4-9-X-32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
395// CHECK-GENTOO-4-9-X-32: "-isysroot" "[[SYSROOT:[^"]+]]"
396// 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"
397// 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"
398// 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"
399// CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
400// CHECK-GENTOO-4-9-X-32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
401// CHECK-GENTOO-4-9-X-32: "-internal-externc-isystem" "[[SYSROOT]]/include"
402// CHECK-GENTOO-4-9-X-32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
403//
404// Check header search on Debian 6 / MIPS64
405// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
406// RUN:     -target mips64-unknown-linux-gnuabi64 -stdlib=libstdc++ \
407// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
408// RUN:     --gcc-toolchain="" \
409// RUN:   | FileCheck --check-prefix=CHECK-MIPS64-GNUABI %s
410// CHECK-MIPS64-GNUABI: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
411// CHECK-MIPS64-GNUABI: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
412// CHECK-MIPS64-GNUABI: "-isysroot" "[[SYSROOT:[^"]+]]"
413// CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9"
414// CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9/mips64-linux-gnuabi64"
415// CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../../include/c++/4.9/backward"
416// CHECK-MIPS64-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
417// CHECK-MIPS64-GNUABI: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
418// CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/mips64-linux-gnuabi64"
419// CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/include"
420// CHECK-MIPS64-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
421//
422// Check header search on Debian 6 / MIPS64
423// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
424// RUN:     -target mips64el-unknown-linux-gnuabi64 -stdlib=libstdc++ \
425// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
426// RUN:     --gcc-toolchain="" \
427// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABI %s
428// CHECK-MIPS64EL-GNUABI: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
429// CHECK-MIPS64EL-GNUABI: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
430// CHECK-MIPS64EL-GNUABI: "-isysroot" "[[SYSROOT:[^"]+]]"
431// CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9"
432// CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9/mips64el-linux-gnuabi64"
433// CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../include/c++/4.9/backward"
434// CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
435// CHECK-MIPS64EL-GNUABI: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
436// CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/mips64el-linux-gnuabi64"
437// CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/include"
438// CHECK-MIPS64EL-GNUABI: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
439
440// Check header search on Debian 8 / Sparc
441// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
442// RUN:     -target sparc-unknown-linux-gnu -stdlib=libstdc++ \
443// RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
444// RUN:     --gcc-toolchain="" \
445// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32 %s
446// CHECK-DEBIAN-SPARC32: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
447// CHECK-DEBIAN-SPARC32: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
448// CHECK-DEBIAN-SPARC32: "-isysroot" "[[SYSROOT:[^"]+]]"
449// CHECK-DEBIAN-SPARC32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/c++/4.9"
450// CHECK-DEBIAN-SPARC32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/sparc-linux-gnu/c++/4.9"
451// CHECK-DEBIAN-SPARC32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/c++/4.9/backward"
452// CHECK-DEBIAN-SPARC32: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
453// CHECK-DEBIAN-SPARC32: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
454// CHECK-DEBIAN-SPARC32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/sparc-linux-gnu"
455// CHECK-DEBIAN-SPARC32: "-internal-externc-isystem" "[[SYSROOT]]/include"
456// CHECK-DEBIAN-SPARC32: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
457
458// Check header search on Debian 8 / Sparc, with the oldstyle multilib packages
459// RUN: %clang -no-canonical-prefixes -m64 %s -### -fsyntax-only 2>&1 \
460// RUN:     -target sparc-unknown-linux-gnu -stdlib=libstdc++ \
461// RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
462// RUN:     --gcc-toolchain="" \
463// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32-LIB64 %s
464// CHECK-DEBIAN-SPARC32-LIB64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
465// CHECK-DEBIAN-SPARC32-LIB64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
466// CHECK-DEBIAN-SPARC32-LIB64: "-isysroot" "[[SYSROOT:[^"]+]]"
467// CHECK-DEBIAN-SPARC32-LIB64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/c++/4.9"
468// CHECK-DEBIAN-SPARC32-LIB64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/sparc-linux-gnu/c++/4.9/64"
469// CHECK-DEBIAN-SPARC32-LIB64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../include/c++/4.9/backward"
470// CHECK-DEBIAN-SPARC32-LIB64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
471// CHECK-DEBIAN-SPARC32-LIB64: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
472/* TODO: GCC 4.9 includes the following dir in its search path, which
473   seems questionable. Clang doesn't. Not sure if clang should be
474   doing that too. */
475// CHECK-DEBIAN-SPARC32-LIB64-todo: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/sparc-linux-gnu"
476// CHECK-DEBIAN-SPARC32-LIB64: "-internal-externc-isystem" "[[SYSROOT]]/include"
477// CHECK-DEBIAN-SPARC32-LIB64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
478
479// Check header search on Debian 8 / Sparc64
480// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
481// RUN:     -target sparc64-unknown-linux-gnu -stdlib=libstdc++ \
482// RUN:     --sysroot=%S/Inputs/debian_8_sparc64_tree \
483// RUN:     --gcc-toolchain="" \
484// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC64 %s
485// CHECK-DEBIAN-SPARC64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
486// CHECK-DEBIAN-SPARC64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
487// CHECK-DEBIAN-SPARC64: "-isysroot" "[[SYSROOT:[^"]+]]"
488// CHECK-DEBIAN-SPARC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../../include/c++/4.9"
489// CHECK-DEBIAN-SPARC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../../include/sparc64-linux-gnu/c++/4.9"
490// CHECK-DEBIAN-SPARC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../../include/c++/4.9/backward"
491// CHECK-DEBIAN-SPARC64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
492// CHECK-DEBIAN-SPARC64: "-internal-isystem" "[[RESOURCE_DIR]]{{/|\\\\}}include"
493// CHECK-DEBIAN-SPARC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/sparc64-linux-gnu"
494// CHECK-DEBIAN-SPARC64: "-internal-externc-isystem" "[[SYSROOT]]/include"
495// CHECK-DEBIAN-SPARC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
496
497// Check header search on OpenEmbedded ARM.
498// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
499// RUN:     -target arm-oe-linux-gnueabi -stdlib=libstdc++ \
500// RUN:     --sysroot=%S/Inputs/openembedded_arm_linux_tree \
501// RUN:     --gcc-toolchain="" \
502// RUN:   | FileCheck --check-prefix=CHECK-OE-ARM %s
503
504// CHECK-OE-ARM: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
505// CHECK-OE-ARM: "-isysroot" "[[SYSROOT:[^"]+]]"
506// CHECK-OE-ARM: "-internal-isystem" "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../include/c++/6.3.0"
507// CHECK-OE-ARM: "-internal-isystem" "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../include/c++/6.3.0/backward"
508
509// Check header search on OpenEmbedded AArch64.
510// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
511// RUN:     -target aarch64-oe-linux -stdlib=libstdc++ \
512// RUN:     --sysroot=%S/Inputs/openembedded_aarch64_linux_tree \
513// RUN:     --gcc-toolchain="" \
514// RUN:   | FileCheck --check-prefix=CHECK-OE-AARCH64 %s
515
516// CHECK-OE-AARCH64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
517// CHECK-OE-AARCH64: "-isysroot" "[[SYSROOT:[^"]+]]"
518// CHECK-OE-AARCH64: "-internal-isystem" "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../include/c++/6.3.0"
519// CHECK-OE-AARCH64: "-internal-isystem" "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../include/c++/6.3.0/backward"
520
521// Check header search with Cray's gcc package.
522// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
523// RUN:     -target x86_64-unknown-linux-gnu -stdlib=libstdc++ \
524// RUN:     --sysroot=%S/Inputs/cray_suse_gcc_tree \
525// RUN:     --gcc-toolchain="%S/Inputs/cray_suse_gcc_tree/opt/gcc/8.2.0/snos" \
526// RUN:   | FileCheck --check-prefix=CHECK-CRAY-X86 %s
527
528// CHECK-CRAY-X86: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
529// CHECK-CRAY-X86: "-isysroot" "[[SYSROOT:[^"]+]]"
530// CHECK-CRAY-X86: "-internal-isystem" "[[SYSROOT]]/opt/gcc/8.2.0/snos/lib/gcc/x86_64-suse-linux/8.2.0/../../../../include/g++"
531// CHECK-CRAY-X86: "-internal-isystem" "[[SYSROOT]]/opt/gcc/8.2.0/snos/lib/gcc/x86_64-suse-linux/8.2.0/../../../../include/g++/backward"
532