1 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
2 // RUN:     -target armv6m-none-eabi \
3 // RUN:     -T semihosted.lds \
4 // RUN:     -L some/directory/user/asked/for \
5 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
6 // RUN:   | FileCheck --check-prefix=CHECK-V6M-C %s
7 // CHECK-V6M-C: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "thumbv6m-none-unknown-eabi"
8 // CHECK-V6M-C-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
9 // CHECK-V6M-C-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
10 // CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
11 // CHECk-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
12 // CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
13 // CHECK-V6M-C-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
14 // CHECK-V6M-C-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
15 // CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
16 // CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
17 // CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
18 // CHECK-V6M-C-SAME: "-o" "{{.*}}.o"
19 
20 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
21 // RUN:     -target armv6m-none-eabi \
22 // RUN:     -nostdlibinc -nobuiltininc \
23 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
24 // RUN:   | FileCheck --check-prefix=CHECK-V6M-LIBINC %s
25 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
26 // RUN:     -target armv6m-none-eabi \
27 // RUN:     -nostdinc \
28 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
29 // RUN:   | FileCheck --check-prefix=CHECK-V6M-LIBINC %s
30 // CHECK-V6M-LIBINC-NOT: "-internal-isystem"
31 
32 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
33 // RUN:     -target armv6m-none-eabi \
34 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
35 // RUN:   | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s
36 // CHECK-V6M-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
37 // CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
38 // CHECK-V6M-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
39 // CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
40 // CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
41 // CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
42 // CHECK-V6M-DEFAULTCXX-SAME: "-o" "{{.*}}.o"
43 
44 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
45 // RUN:     -target armv6m-none-eabi \
46 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
47 // RUN:     -stdlib=libc++ \
48 // RUN:   | FileCheck --check-prefix=CHECK-V6M-LIBCXX %s
49 // CHECK-V6M-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
50 // CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
51 // CHECK-V6M-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
52 // CHECK-V6M-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
53 // CHECK-V6M-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
54 // CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
55 // CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
56 // CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
57 // CHECK-V6M-LIBCXX-SAME: "-o" "{{.*}}.o"
58 
59 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
60 // RUN:     -target armv6m-none-eabi \
61 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
62 // RUN:     -stdlib=libstdc++ \
63 // RUN:   | FileCheck --check-prefix=CHECK-V6M-LIBSTDCXX %s
64 // CHECK-V6M-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
65 // CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
66 // CHECK-V6M-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0"
67 // CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
68 // CHECK-V6M-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
69 // CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
70 // CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
71 // CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
72 // CHECK-V6M-LIBSTDCXX-SAME: "-o" "{{.*}}.o"
73 
74 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
75 // RUN:     -target armv6m-none-eabi \
76 // RUN:     --sysroot=%S/Inputs/baremetal_arm \
77 // RUN:     -nodefaultlibs \
78 // RUN:   | FileCheck --check-prefix=CHECK-V6M-NDL %s
79 // CHECK-V6M-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
80 // CHECK-V6M-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
81 // CHECK-V6M-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
82 // CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" "-o" "{{.*}}.o"
83 
84 // RUN: %clangxx -target arm-none-eabi -v 2>&1 \
85 // RUN:   | FileCheck %s --check-prefix=CHECK-THREAD-MODEL
86 // CHECK-THREAD-MODEL: Thread model: posix
87 
88 // RUN: %clangxx -target arm-none-eabi -mthread-model single -v 2>&1 \
89 // RUN:   | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-SINGLE
90 // CHECK-THREAD-MODEL-SINGLE: Thread model: single
91 
92 // RUN: %clangxx -target arm-none-eabi -mthread-model posix -v 2>&1 \
93 // RUN:   | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-POSIX
94 // CHECK-THREAD-MODEL-POSIX: Thread model: posix
95 
96 // RUN: %clang -### -target arm-none-eabi -rtlib=libgcc -v %s 2>&1 \
97 // RUN:   | FileCheck %s --check-prefix=CHECK-RTLIB-GCC
98 // CHECK-RTLIB-GCC: -lgcc
99 
100 // RUN: %clang -### -target arm-none-eabi -v %s 2>&1 \
101 // RUN:   | FileCheck %s --check-prefix=CHECK-SYSROOT-INC
102 // CHECK-SYSROOT-INC-NOT: "-internal-isystem" "include"
103 
104 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
105 // RUN:     -target riscv64-unknown-elf \
106 // RUN:     -L some/directory/user/asked/for \
107 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
108 // RUN:   | FileCheck --check-prefix=CHECK-RV64 %s
109 // CHECK-RV64: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv64-unknown-unknown-elf"
110 // CHECK-RV64-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
111 // CHECK-RV64-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
112 // CHECK-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
113 // CHECk-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
114 // CHECK-RV64-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
115 // CHECK-RV64-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
116 // CHECK-RV64-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
117 // CHECK-RV64-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
118 // CHECK-RV64-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
119 // CHECK-RV64-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
120 // CHECK-RV64-SAME: "-o" "{{.*}}.o"
121 
122 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
123 // RUN:     -target riscv64-unknown-elf \
124 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
125 // RUN:   | FileCheck --check-prefix=CHECK-RV64-DEFAULTCXX %s
126 // CHECK-RV64-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
127 // CHECK-RV64-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
128 // CHECK-RV64-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
129 // CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
130 // CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
131 // CHECK-RV64-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
132 // CHECK-RV64-DEFAULTCXX-SAME: "-o" "{{.*}}.o"
133 
134 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
135 // RUN:     -target riscv64-unknown-elf \
136 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
137 // RUN:     -stdlib=libc++ \
138 // RUN:   | FileCheck --check-prefix=CHECK-RV64-LIBCXX %s
139 // CHECK-RV64-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
140 // CHECK-RV64-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
141 // CHECK-RV64-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
142 // CHECK-RV64-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
143 // CHECK-RV64-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
144 // CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
145 // CHECK-RV64-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
146 // CHECK-RV64-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
147 // CHECK-RV64-LIBCXX-SAME: "-o" "{{.*}}.o"
148 
149 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
150 // RUN:     -target riscv64-unknown-elf \
151 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
152 // RUN:     -stdlib=libstdc++ \
153 // RUN:   | FileCheck --check-prefix=CHECK-RV64-LIBSTDCXX %s
154 // CHECK-RV64-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
155 // CHECK-RV64-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
156 // CHECK-RV64-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
157 // CHECK-RV64-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
158 // CHECK-RV64-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
159 // CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
160 // CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
161 // CHECK-RV64-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
162 // CHECK-RV64-LIBSTDCXX-SAME: "-o" "{{.*}}.o"
163 
164 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
165 // RUN:     -target riscv32-unknown-elf \
166 // RUN:     -L some/directory/user/asked/for \
167 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
168 // RUN:   | FileCheck --check-prefix=CHECK-RV32 %s
169 // CHECK-RV32: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf"
170 // CHECK-RV32-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
171 // CHECK-RV32-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
172 // CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
173 // CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
174 // CHECK-RV32-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
175 // CHECK-RV32-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
176 // CHECK-RV32-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
177 // CHECK-RV32-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
178 // CHECK-RV32-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
179 // CHECK-RV32-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
180 // CHECK-RV32-SAME: "-o" "{{.*}}.o"
181 
182 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
183 // RUN:     -target riscv32-unknown-elf \
184 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
185 // RUN:   | FileCheck --check-prefix=CHECK-RV32-DEFAULTCXX %s
186 // CHECK-RV32-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
187 // CHECK-RV32-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
188 // CHECK-RV32-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
189 // CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
190 // CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
191 // CHECK-RV32-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
192 // CHECK-RV32-DEFAULTCXX-SAME: "-o" "{{.*}}.o"
193 
194 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
195 // RUN:     -target riscv32-unknown-elf \
196 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
197 // RUN:     -stdlib=libc++ \
198 // RUN:   | FileCheck --check-prefix=CHECK-RV32-LIBCXX %s
199 // CHECK-RV32-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
200 // CHECK-RV32-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
201 // CHECK-RV32-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
202 // CHECK-RV32-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
203 // CHECK-RV32-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
204 // CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
205 // CHECK-RV32-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
206 // CHECK-RV32-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
207 // CHECK-RV32-LIBCXX-SAME: "-o" "{{.*}}.o"
208 
209 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
210 // RUN:     -target riscv32-unknown-elf \
211 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
212 // RUN:     -stdlib=libstdc++ \
213 // RUN:   | FileCheck --check-prefix=CHECK-RV32-LIBSTDCXX %s
214 // CHECK-RV32-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
215 // CHECK-RV32-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
216 // CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
217 // CHECK-RV32-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
218 // CHECK-RV32-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
219 // CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
220 // CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
221 // CHECK-RV32-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
222 // CHECK-RV32-LIBSTDCXX-SAME: "-o" "{{.*}}.o"
223 
224 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
225 // RUN:     -target riscv64-unknown-elf \
226 // RUN:     -nostdlibinc -nobuiltininc \
227 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
228 // RUN:   | FileCheck --check-prefix=CHECK-RV64-LIBINC %s
229 
230 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
231 // RUN:     -target riscv64-unknown-elf \
232 // RUN:     -nostdinc \
233 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
234 // RUN:   | FileCheck --check-prefix=CHECK-RV64-LIBINC %s
235 // CHECK-RV64-LIBINC-NOT: "-internal-isystem"
236 
237 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
238 // RUN:     -target riscv64-unknown-elf \
239 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
240 // RUN:     -nodefaultlibs \
241 // RUN:   | FileCheck --check-prefix=CHECK-RV64-NDL %s
242 // CHECK-RV64-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
243 // CHECK-RV64-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
244 // CHECK-RV64-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
245 // CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
246 // CHECK-RV64-NDL-SAME: "-o" "{{.*}}.o"
247 
248 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
249 // RUN:     -target riscv64-unknown-elf \
250 // RUN:     -march=rv64imafdc -mabi=lp64d \
251 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
252 // RUN:   | FileCheck --check-prefix=CHECK-RV64FD %s
253 
254 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
255 // RUN:     -target riscv64-unknown-elf \
256 // RUN:     -march=rv64gc -mabi=lp64d \
257 // RUN:     --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
258 // RUN:   | FileCheck --check-prefix=CHECK-RV64FD %s
259 
260 // CHECK-RV64FD: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv64-unknown-unknown-elf"
261 // CHECK-RV64FD-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
262 // CHECK-RV64FD-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
263 // CHECK-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
264 // CHECk-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include"
265 // CHECK-RV64FD-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
266 // CHECK-RV64FD-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
267 // CHECK-RV64FD-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d"
268 // CHECK-RV64FD-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}lib"
269 
270 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
271 // RUN:     -target riscv32-unknown-elf \
272 // RUN:     -march=rv32i -mabi=ilp32 \
273 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
274 // RUN:   | FileCheck --check-prefix=CHECK-RV32I %s
275 
276 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
277 // RUN:     -target riscv32-unknown-elf \
278 // RUN:     -march=rv32ic -mabi=ilp32 \
279 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
280 // RUN:   | FileCheck --check-prefix=CHECK-RV32I %s
281 
282 // CHECK-RV32I: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf"
283 // CHECK-RV32I-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
284 // CHECK-RV32I-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
285 // CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
286 // CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include"
287 // CHECK-RV32I-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
288 // CHECK-RV32I-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
289 // CHECK-RV32I-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32i{{[/\\]+}}ilp32"
290 // CHECK-RV32I-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}lib"
291 
292 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
293 // RUN:     -target riscv32-unknown-elf \
294 // RUN:     -march=rv32im -mabi=ilp32 \
295 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
296 // RUN:   | FileCheck --check-prefix=CHECK-RV32IM %s
297 
298 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
299 // RUN:     -target riscv32-unknown-elf \
300 // RUN:     -march=rv32imc -mabi=ilp32 \
301 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
302 // RUN:   | FileCheck --check-prefix=CHECK-RV32IM %s
303 
304 // CHECK-RV32IM: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf"
305 // CHECK-RV32IM-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
306 // CHECK-RV32IM-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
307 // CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
308 // CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include"
309 // CHECK-RV32IM-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
310 // CHECK-RV32IM-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
311 // CHECK-RV32IM-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32im{{[/\\]+}}ilp32"
312 // CHECK-RV32IM-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}lib"
313 
314 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
315 // RUN:     -target riscv32-unknown-elf \
316 // RUN:     -march=rv32iac -mabi=ilp32 \
317 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
318 // RUN:   | FileCheck --check-prefix=CHECK-RV32IAC %s
319 
320 // CHECK-RV32IAC: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf"
321 // CHECK-RV32IAC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
322 // CHECK-RV32IAC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
323 // CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
324 // CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include"
325 // CHECK-RV32IAC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
326 // CHECK-RV32IAC-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
327 // CHECK-RV32IAC-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32iac{{[/\\]+}}ilp32"
328 // CHECK-RV32IAC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}lib"
329 
330 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
331 // RUN:     -target riscv32-unknown-elf \
332 // RUN:     -march=rv32imafc -mabi=ilp32f \
333 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
334 // RUN:   | FileCheck --check-prefix=CHECK-RV32IMAFC %s
335 
336 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
337 // RUN:     -target riscv32-unknown-elf \
338 // RUN:     -march=rv32imafdc -mabi=ilp32f \
339 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
340 // RUN:   | FileCheck --check-prefix=CHECK-RV32IMAFC %s
341 
342 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
343 // RUN:     -target riscv32-unknown-elf \
344 // RUN:     -march=rv32gc -mabi=ilp32f \
345 // RUN:     --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
346 // RUN:   | FileCheck --check-prefix=CHECK-RV32IMAFC %s
347 
348 // CHECK-RV32IMAFC: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf"
349 // CHECK-RV32IMAFC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
350 // CHECK-RV32IMAFC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"
351 // CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
352 // CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include"
353 // CHECK-RV32IMAFC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
354 // CHECK-RV32IMAFC-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
355 // CHECK-RV32IMAFC-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f"
356 // CHECK-RV32IMAFC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}lib"
357