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