Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c74186f

Browse files
committedApr 4, 2025·
[Driver] Forward sysroot from Driver to linker in BareMetal ToolChain Object
RISCVToolChain object passes `--sysroot` option from clang to gnuld. Adding the supprt for the same in BareMetal toolchain object. This is done as a part of the effort to merge RISCVToolchain object into BareMetal toolchain object. This is the 5th patch in the series of patches for merging RISCVToolchain object into BareMetal toolchain object. RFC: https://discourse.llvm.org/t/merging-riscvtoolchain-and-baremetal-toolchains/75524 Change-Id: Ie830bf6d126fea46dc225e5ef97e14349765ba07
1 parent b3b8c8e commit c74186f

File tree

4 files changed

+82
-25
lines changed

4 files changed

+82
-25
lines changed
 

‎clang/lib/Driver/ToolChains/BareMetal.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,9 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
529529
const llvm::Triple::ArchType Arch = TC.getArch();
530530
const llvm::Triple &Triple = getToolChain().getEffectiveTriple();
531531

532+
if (!D.SysRoot.empty())
533+
CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
534+
532535
CmdArgs.push_back("-Bstatic");
533536

534537
if (TC.getTriple().isRISCV() && Args.hasArg(options::OPT_mno_relax))

‎clang/test/Driver/aarch64-toolchain.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// C-AARCH64-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
1818
// C-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
1919
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
20+
// C-AARCH64-BAREMETAL: "--sysroot={{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
2021
// C-AARCH64-BAREMETAL: "-Bstatic" "-EL"
2122
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
2223
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
@@ -53,6 +54,7 @@
5354
// CXX-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include/c++/8.2.1"
5455
// CXX-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
5556
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
57+
// CXX-AARCH64-BAREMETAL: "--sysroot={{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
5658
// CXX-AARCH64-BAREMETAL: "-Bstatic" "-EL"
5759
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
5860
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
@@ -89,7 +91,8 @@
8991
// CXX-AARCH64-BAREMETAL-LIBCXX: "-isysroot" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
9092
// CXX-AARCH64-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include/c++/v1"
9193
// CXX-AARCH64-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
92-
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld
94+
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
95+
// CXX-AARCH64-BAREMETAL-LIBCXX: "--sysroot={{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
9396
// CXX-AARCH64-BAREMETAL-LIBCXX: "-Bstatic" "-EL"
9497
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
9598
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"

‎clang/test/Driver/arm-toolchain.c

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// C-ARM-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
1818
// C-ARM-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
1919
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
20+
// C-ARM-BAREMETAL: "--sysroot={{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
2021
// C-ARM-BAREMETAL: "-Bstatic" "-EL"
2122
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
2223
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
@@ -54,6 +55,7 @@
5455
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/8.2.1"
5556
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
5657
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
58+
// CXX-ARM-BAREMETAL: "--sysroot={{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
5759
// CXX-ARM-BAREMETAL: "-Bstatic" "-EL"
5860
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
5961
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
@@ -92,6 +94,7 @@
9294
// CXX-ARM-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/v1"
9395
// CXX-ARM-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
9496
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
97+
// CXX-ARM-BAREMETAL-LIBCXX: "--sysroot={{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
9598
// CXX-ARM-BAREMETAL-LIBCXX: "-Bstatic" "-EL"
9699
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
97100
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"

‎clang/test/Driver/baremetal.cpp

+72-24
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
// CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
1616
// CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
1717
// CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
18-
// CHECK-V6M-C-NEXT: ld{{(.exe)?}}" "-Bstatic" "-EL"
18+
// CHECK-V6M-C-NEXT: ld{{(.exe)?}}"
19+
// CHECK-V6M-C-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
20+
// CHECK-V6M-C-SAME: "-Bstatic" "-EL"
1921
// CHECK-V6M-C-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"
2022
// CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
2123
// CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
@@ -55,7 +57,9 @@
5557
// CHECK-ARMV7M-PER-TARGET: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
5658
// CHECK-ARMV7M-PER-TARGET: "-isysroot" "[[SYSROOT:[^"]*]]"
5759
// CHECK-ARMV7M-PER-TARGET: "-x" "c++" "{{.*}}baremetal.cpp"
58-
// CHECK-ARMV7M-PER-TARGET: ld{{(.exe)?}}" "-Bstatic" "-EL"
60+
// CHECK-ARMV7M-PER-TARGET: ld{{(.exe)?}}"
61+
// CHECK-ARMV7M-PER-TARGET: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
62+
// CHECK-ARMV7M-PER-TARGET: "-Bstatic" "-EL"
5963
// CHECK-ARMV7M-PER_TARGET: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"
6064
// CHECK-ARMV7M-PER-TARGET: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
6165
// CHECK-ARMV7M-PER-TARGET: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}armv7m-vendor-none-eabi
@@ -66,7 +70,9 @@
6670
// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \
6771
// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s
6872
// CHECK-V6M-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
69-
// CHECK-V6M-DEFAULTCXX: ld{{(.exe)?}}" "-Bstatic" "-EL"
73+
// CHECK-V6M-DEFAULTCXX: ld{{(.exe)?}}"
74+
// CHECK-V6M-DEFAULTCXX: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
75+
// CHECK-V6M-DEFAULTCXX: "-Bstatic" "-EL"
7076
// CHECK-V6M-DEFAULTCXX-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"
7177
// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
7278
// CHECK-V6M-DEFAULTCXX-SAME: "{{.*}}.o"
@@ -81,7 +87,9 @@
8187
// CHECK-V6M-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
8288
// CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
8389
// CHECK-V6M-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
84-
// CHECK-V6M-LIBCXX: ld{{(.exe)?}}" "-Bstatic" "-EL"
90+
// CHECK-V6M-LIBCXX: ld{{(.exe)?}}"
91+
// CHECK-V6M-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
92+
// CHECK-V6M-LIBCXX-SAME: "-Bstatic" "-EL"
8593
// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
8694
// CHECK-V6M-LIBCXX-SAME: "{{.*}}.o"
8795
// CHECK-V6M-LIBCXX-SAME: "-lc++"
@@ -97,7 +105,9 @@
97105
// CHECK-V6M-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
98106
// CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
99107
// CHECK-V6M-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0"
100-
// CHECK-V6M-LIBSTDCXX: ld{{(.exe)?}}" "-Bstatic" "-EL"
108+
// CHECK-V6M-LIBSTDCXX: ld{{(.exe)?}}"
109+
// CHECK-V6M-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
110+
// CHECK-V6M-LIBSTDCXX-SAME: "-Bstatic" "-EL"
101111
// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
102112
// CHECK-V6M-LIBSTDCXX-SAME: "{{.*}}.o"
103113
// CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lm"
@@ -110,7 +120,9 @@
110120
// RUN: -nodefaultlibs \
111121
// RUN: | FileCheck --check-prefix=CHECK-V6M-NDL %s
112122
// CHECK-V6M-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
113-
// CHECK-V6M-NDL: ld{{(.exe)?}}" "-Bstatic" "-EL"
123+
// CHECK-V6M-NDL: ld{{(.exe)?}}"
124+
// CHECK-V6M-NDL: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
125+
// CHECK-V6M-NDL: "-Bstatic" "-EL"
114126
// CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
115127

116128
// RUN: rm -rf %T/baremetal_cxx_sysroot
@@ -156,7 +168,9 @@
156168

157169
// RUN: %clang -### %s --target=armebv7-none-eabi --sysroot=%S/Inputs/baremetal_arm 2>&1 \
158170
// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s
159-
// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "-Bstatic" "--be8" "-EB"
171+
// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}"
172+
// CHECK-ARMV7EB: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
173+
// CHECK-ARMV7EB: "-Bstatic" "--be8" "-EB"
160174

161175
// RUN: %clang -### %s --target=armv7-none-eabi -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \
162176
// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s
@@ -166,7 +180,9 @@
166180

167181
// RUN: %clang -### %s --target=armv7-none-eabi --sysroot=%S/Inputs/baremetal_arm 2>&1 \
168182
// RUN: | FileCheck --check-prefix=CHECK-ARMV7EL %s
169-
// CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}" "-Bstatic" "-EL"
183+
// CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}"
184+
// CHECK-ARMV7EL: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
185+
// CHECK-ARMV7EL: "-Bstatic" "-EL"
170186
// CHECK-ARMV7EL-NOT: "--be8"
171187

172188
// RUN: %clang -### %s --target=armebv7-none-eabi -mlittle-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \
@@ -177,7 +193,9 @@
177193

178194
// RUN: %clang -### %s --target=aarch64_be-none-elf --sysroot=%S/Inputs/baremetal_arm 2>&1 \
179195
// RUN: | FileCheck --check-prefix=CHECK-AARCH64BE %s
180-
// CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}" "-Bstatic" "-EB"
196+
// CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}"
197+
// CHECK-AARCH64BE: sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
198+
// CHECK-AARCH64BE: "-Bstatic" "-EB"
181199
// CHECK-AARCH64BE-NOT: "--be8"
182200

183201
// RUN: %clang -### %s --target=aarch64-none-elf -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \
@@ -188,7 +206,9 @@
188206

189207
// RUN: %clang -### %s --target=aarch64-none-elf --sysroot=%S/Inputs/baremetal_arm 2>&1 \
190208
// RUN: | FileCheck --check-prefix=CHECK-AARCH64LE %s
191-
// CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}" "-Bstatic" "-EL"
209+
// CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}"
210+
// CHECK-AARCH64LE: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"
211+
// CHECK-AARCH64LE: "-Bstatic" "-EL"
192212
// CHECK-AARCH64LE-NOT: "--be8"
193213

194214
// RUN: %clang -### %s --target=aarch64_be-none-elf -mlittle-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \
@@ -228,7 +248,9 @@
228248
// CHECK-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
229249
// CHECk-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
230250
// CHECK-RV64-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
231-
// CHECK-RV64-NEXT: ld{{(.exe)?}}" "-Bstatic"
251+
// CHECK-RV64-NEXT: ld{{(.exe)?}}"
252+
// CHECK-RV64-SAME: "--sysroot={{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf"
253+
// CHECK-RV64-SAME: "-Bstatic"
232254
// CHECK-RV64-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
233255
// CHECK-RV64-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
234256
// CHECK-RV64-SAME:"{{.*}}.o"
@@ -240,7 +262,9 @@
240262
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
241263
// RUN: | FileCheck --check-prefix=CHECK-RV64-DEFAULTCXX %s
242264
// CHECK-RV64-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
243-
// CHECK-RV64-DEFAULTCXX: ld{{(.exe)?}}" "-Bstatic"
265+
// CHECK-RV64-DEFAULTCXX: ld{{(.exe)?}}"
266+
// CHECK-RV64-DEFAULTCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"
267+
// CHECK-RV64-DEFAULTCXX-SAME: -Bstatic"
244268
// CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
245269
// CHECK-RV64-DEFAULTCXX-SAME:"{{.*}}.o"
246270
// CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lm"
@@ -255,7 +279,9 @@
255279
// CHECK-RV64-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
256280
// CHECK-RV64-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
257281
// CHECK-RV64-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
258-
// CHECK-RV64-LIBCXX: ld{{(.exe)?}}" "-Bstatic"
282+
// CHECK-RV64-LIBCXX: ld{{(.exe)?}}"
283+
// CHECK-RV64-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"
284+
// CHECK-RV64-LIBCXX-SAME: "-Bstatic"
259285
// CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
260286
// CHECK-RV64-LIBCXX-SAME:"{{.*}}.o"
261287
// CHECK-RV64-LIBCXX-SAME: "-lc++" "-lm"
@@ -270,7 +296,9 @@
270296
// CHECK-RV64-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
271297
// CHECK-RV64-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
272298
// CHECK-RV64-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
273-
// CHECK-RV64-LIBSTDCXX: ld{{(.exe)?}}" "-Bstatic"
299+
// CHECK-RV64-LIBSTDCXX: ld{{(.exe)?}}"
300+
// CHECK-RV64-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"
301+
// CHECK-RV64-LIBSTDCXX-SAME: "-Bstatic"
274302
// CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
275303
// CHECK-RV64-LIBSTDCXX-SAME: "{{.*}}.o"
276304
// CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lm"
@@ -288,7 +316,9 @@
288316
// CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
289317
// CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"
290318
// CHECK-RV32-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
291-
// CHECK-RV32-NEXT: ld{{(.exe)?}}" "-Bstatic"
319+
// CHECK-RV32-NEXT: ld{{(.exe)?}}"
320+
// CHECK-RV32-SAME: "--sysroot={{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf"
321+
// CHECK-RV32-SAME: "-Bstatic"
292322
// CHECK-RV32-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
293323
// CHECK-RV32-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
294324
// CHECK-RV32-SAME: "{{.*}}.o"
@@ -300,7 +330,9 @@
300330
// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
301331
// RUN: | FileCheck --check-prefix=CHECK-RV32-DEFAULTCXX %s
302332
// CHECK-RV32-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
303-
// CHECK-RV32-DEFAULTCXX: ld{{(.exe)?}}" "-Bstatic"
333+
// CHECK-RV32-DEFAULTCXX: ld{{(.exe)?}}"
334+
// CHECK-RV32-DEFAULTCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
335+
// CHECK-RV32-DEFAULTCXX-SAME: "-Bstatic"
304336
// CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
305337
// CHECK-RV32-DEFAULTCXX-SAME: "{{.*}}.o"
306338
// CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lm"
@@ -315,7 +347,9 @@
315347
// CHECK-RV32-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
316348
// CHECK-RV32-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
317349
// CHECK-RV32-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
318-
// CHECK-RV32-LIBCXX: ld{{(.exe)?}}" "-Bstatic"
350+
// CHECK-RV32-LIBCXX: ld{{(.exe)?}}"
351+
// CHECK-RV32-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
352+
// CHECK-RV32-LIBCXX-SAME: "-Bstatic"
319353
// CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
320354
// CHECK-RV32-LIBCXX-SAME: "{{.*}}.o"
321355
// CHECK-RV32-LIBCXX-SAME: "-lc++" "-lm"
@@ -329,7 +363,9 @@
329363
// CHECK-RV32-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
330364
// CHECK-RV32-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
331365
// CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
332-
// CHECK-RV32-LIBSTDCXX: ld{{(.exe)?}}" "-Bstatic"
366+
// CHECK-RV32-LIBSTDCXX: ld{{(.exe)?}}"
367+
// CHECK-RV32-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
368+
// CHECK-RV32-LIBSTDCXX-SAME: "-Bstatic"
333369
// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
334370
// CHECK-RV32-LIBSTDCXX-SAME: "{{.*}}.o"
335371
// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lm"
@@ -352,7 +388,9 @@
352388
// RUN: -nodefaultlibs \
353389
// RUN: | FileCheck --check-prefix=CHECK-RV64-NDL %s
354390
// CHECK-RV64-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
355-
// CHECK-RV64-NDL: ld{{(.exe)?}}" "-Bstatic"
391+
// CHECK-RV64-NDL: ld{{(.exe)?}}"
392+
// CHECK-RV64-NDL-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"
393+
// CHECK-RV64-NDL-SAME: "-Bstatic"
356394
// CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
357395

358396
// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \
@@ -371,7 +409,9 @@
371409
// CHECK-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
372410
// CHECk-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include"
373411
// CHECK-RV64FD-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
374-
// CHECK-RV64FD-NEXT: ld{{(.exe)?}}" "-Bstatic"
412+
// CHECK-RV64FD-NEXT: ld{{(.exe)?}}"
413+
// CHECK-RV64FD-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"
414+
// CHECK-RV64FD-SAME: "-Bstatic"
375415
// CHECK-RV64FD-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}lib"
376416

377417
// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \
@@ -390,7 +430,9 @@
390430
// CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
391431
// CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include"
392432
// CHECK-RV32I-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
393-
// CHECK-RV32I-NEXT: ld{{(.exe)?}}" "-Bstatic"
433+
// CHECK-RV32I-NEXT: ld{{(.exe)?}}"
434+
// CHECK-RV32I-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
435+
// CHECK-RV32I-SAME: "-Bstatic"
394436
// CHECK-RV32I-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}lib"
395437

396438
// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \
@@ -409,7 +451,9 @@
409451
// CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
410452
// CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include"
411453
// CHECK-RV32IM-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
412-
// CHECK-RV32IM-NEXT: ld{{(.exe)?}}" "-Bstatic"
454+
// CHECK-RV32IM-NEXT: ld{{(.exe)?}}"
455+
// CHECK-RV32IM-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
456+
// CHECK-RV32IM-SAME: "-Bstatic"
413457
// CHECK-RV32IM-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}lib"
414458

415459
// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \
@@ -423,7 +467,9 @@
423467
// CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
424468
// CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include"
425469
// CHECK-RV32IAC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
426-
// CHECK-RV32IAC-NEXT: ld{{(.exe)?}}" "-Bstatic"
470+
// CHECK-RV32IAC-NEXT: ld{{(.exe)?}}"
471+
// CHECK-RV32IAC-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
472+
// CHECK-RV32IAC-SAME: "-Bstatic"
427473
// CHECK-RV32IAC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}lib"
428474

429475
// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf -march=rv32imafc -mabi=ilp32f \
@@ -444,7 +490,9 @@
444490
// CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
445491
// CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include"
446492
// CHECK-RV32IMAFC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"
447-
// CHECK-RV32IMAFC-NEXT: ld{{(.exe)?}}" "-Bstatic"
493+
// CHECK-RV32IMAFC-NEXT: ld{{(.exe)?}}"
494+
// CHECK-RV32IMAFC-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"
495+
// CHECK-RV32IMAFC-SAME: "-Bstatic"
448496
// CHECK-RV32IMAFC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}lib"
449497

450498
// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc-unknown-eabi 2>&1 \

0 commit comments

Comments
 (0)
Please sign in to comment.