Skip to content

Commit 1d463c2

Browse files
committed
[Driver] Fix architecture triplets and search paths for Linux x32
Currently, support for the x32 ABI is handled as a multilib to the x86_64 target only. However, full self-hosting x32 systems treating it as a separate architecture with its own architecture triplets as well as search paths exist as well, in Debian's x32 port and elsewhere. This adds the missing architecture triplets and search paths so that clang can work as a native compiler on x32, and updates the tests so that they pass when using an x32 libdir suffix. Additionally, we would previously also assume that objects from any x86_64-linux-gnu GCC installation could be used to target x32. This changes the logic so that only GCC installations that include x32 support are used when targetting x32, meaning x86_64-linux-gnux32 GCC installations, and x86_64-linux-gnu and i686-linux-gnu GCC installations that include x32 multilib support. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D52050
1 parent 92e7771 commit 1d463c2

File tree

27 files changed

+134
-118
lines changed

27 files changed

+134
-118
lines changed

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2106,7 +2106,9 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
21062106
"x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
21072107
"x86_64-slackware-linux", "x86_64-unknown-linux",
21082108
"x86_64-amazon-linux", "x86_64-linux-android"};
2109-
static const char *const X32LibDirs[] = {"/libx32"};
2109+
static const char *const X32Triples[] = {"x86_64-linux-gnux32",
2110+
"x86_64-pc-linux-gnux32"};
2111+
static const char *const X32LibDirs[] = {"/libx32", "/lib"};
21102112
static const char *const X86LibDirs[] = {"/lib32", "/lib"};
21112113
static const char *const X86Triples[] = {
21122114
"i586-linux-gnu", "i686-linux-gnu",
@@ -2337,17 +2339,19 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
23372339
TripleAliases.append(begin(AVRTriples), end(AVRTriples));
23382340
break;
23392341
case llvm::Triple::x86_64:
2340-
LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
2341-
TripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
2342-
// x32 is always available when x86_64 is available, so adding it as
2343-
// secondary arch with x86_64 triples
23442342
if (TargetTriple.getEnvironment() == llvm::Triple::GNUX32) {
2345-
BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
2343+
LibDirs.append(begin(X32LibDirs), end(X32LibDirs));
2344+
TripleAliases.append(begin(X32Triples), end(X32Triples));
2345+
BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
23462346
BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
23472347
} else {
2348-
BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
2349-
BiarchTripleAliases.append(begin(X86Triples), end(X86Triples));
2348+
LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
2349+
TripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
2350+
BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
2351+
BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
23502352
}
2353+
BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
2354+
BiarchTripleAliases.append(begin(X86Triples), end(X86Triples));
23512355
break;
23522356
case llvm::Triple::x86:
23532357
LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
@@ -2357,6 +2361,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
23572361
TripleAliases.append(begin(X86Triples), end(X86Triples));
23582362
BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
23592363
BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
2364+
BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
2365+
BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
23602366
}
23612367
break;
23622368
case llvm::Triple::m68k:

clang/test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/10.2.0/32/crtbegin.o

Whitespace-only changes.

clang/test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/10.2.0/crtbegin.o

Whitespace-only changes.

clang/test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/10.2.0/x32/crtbegin.o

Whitespace-only changes.

clang/test/Driver/baremetal.cpp

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@
3333
// RUN: -target armv6m-none-eabi \
3434
// RUN: --sysroot=%S/Inputs/baremetal_arm \
3535
// RUN: | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s
36+
// CHECK-V6M-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
3637
// CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
37-
// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
38+
// CHECK-V6M-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
3839
// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
3940
// CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
4041
// CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
@@ -45,10 +46,11 @@
4546
// RUN: --sysroot=%S/Inputs/baremetal_arm \
4647
// RUN: -stdlib=libc++ \
4748
// RUN: | FileCheck --check-prefix=CHECK-V6M-LIBCXX %s
49+
// CHECK-V6M-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
4850
// CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
49-
// CHECK-V6M-LIBCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
51+
// CHECK-V6M-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
5052
// CHECK-V6M-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
51-
// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
53+
// CHECK-V6M-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
5254
// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
5355
// CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
5456
// CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
@@ -59,10 +61,11 @@
5961
// RUN: --sysroot=%S/Inputs/baremetal_arm \
6062
// RUN: -stdlib=libstdc++ \
6163
// RUN: | FileCheck --check-prefix=CHECK-V6M-LIBSTDCXX %s
64+
// CHECK-V6M-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
6265
// CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
63-
// CHECK-V6M-LIBSTDCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0"
66+
// CHECK-V6M-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0"
6467
// CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
65-
// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
68+
// CHECK-V6M-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
6669
// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
6770
// CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
6871
// CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
@@ -73,8 +76,9 @@
7376
// RUN: --sysroot=%S/Inputs/baremetal_arm \
7477
// RUN: -nodefaultlibs \
7578
// RUN: | FileCheck --check-prefix=CHECK-V6M-NDL %s
79+
// CHECK-V6M-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
7680
// CHECK-V6M-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
77-
// CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
81+
// CHECK-V6M-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
7882
// CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" "-o" "{{.*}}.o"
7983

8084
// RUN: %clangxx -target arm-none-eabi -v 2>&1 \
@@ -119,8 +123,9 @@
119123
// RUN: -target riscv64-unknown-elf \
120124
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
121125
// RUN: | FileCheck --check-prefix=CHECK-RV64-DEFAULTCXX %s
126+
// CHECK-RV64-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
122127
// CHECK-RV64-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
123-
// CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
128+
// CHECK-RV64-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
124129
// CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
125130
// CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
126131
// CHECK-RV64-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
@@ -131,10 +136,11 @@
131136
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
132137
// RUN: -stdlib=libc++ \
133138
// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBCXX %s
139+
// CHECK-RV64-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
134140
// CHECK-RV64-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
135-
// CHECK-RV64-LIBCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
141+
// CHECK-RV64-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
136142
// CHECK-RV64-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
137-
// CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
143+
// CHECK-RV64-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
138144
// CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
139145
// CHECK-RV64-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
140146
// CHECK-RV64-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
@@ -145,10 +151,11 @@
145151
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
146152
// RUN: -stdlib=libstdc++ \
147153
// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBSTDCXX %s
154+
// CHECK-RV64-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
148155
// CHECK-RV64-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
149-
// CHECK-RV64-LIBSTDCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
156+
// CHECK-RV64-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
150157
// CHECK-RV64-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
151-
// CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
158+
// CHECK-RV64-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
152159
// CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
153160
// CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
154161
// CHECK-RV64-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64"
@@ -176,8 +183,9 @@
176183
// RUN: -target riscv32-unknown-elf \
177184
// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
178185
// RUN: | FileCheck --check-prefix=CHECK-RV32-DEFAULTCXX %s
186+
// CHECK-RV32-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
179187
// CHECK-RV32-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
180-
// CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
188+
// CHECK-RV32-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
181189
// CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
182190
// CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
183191
// CHECK-RV32-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
@@ -188,10 +196,11 @@
188196
// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
189197
// RUN: -stdlib=libc++ \
190198
// RUN: | FileCheck --check-prefix=CHECK-RV32-LIBCXX %s
199+
// CHECK-RV32-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
191200
// CHECK-RV32-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"
192-
// CHECK-RV32-LIBCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
201+
// CHECK-RV32-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
193202
// CHECK-RV32-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
194-
// CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
203+
// CHECK-RV32-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
195204
// CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
196205
// CHECK-RV32-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
197206
// CHECK-RV32-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
@@ -202,10 +211,11 @@
202211
// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \
203212
// RUN: -stdlib=libstdc++ \
204213
// RUN: | FileCheck --check-prefix=CHECK-RV32-LIBSTDCXX %s
214+
// CHECK-RV32-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
205215
// CHECK-RV32-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
206-
// CHECK-RV32-LIBSTDCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
216+
// CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
207217
// CHECK-RV32-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
208-
// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
218+
// CHECK-RV32-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
209219
// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
210220
// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
211221
// CHECK-RV32-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32"
@@ -229,8 +239,9 @@
229239
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \
230240
// RUN: -nodefaultlibs \
231241
// RUN: | FileCheck --check-prefix=CHECK-RV64-NDL %s
242+
// CHECK-RV64-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
232243
// CHECK-RV64-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
233-
// CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
244+
// CHECK-RV64-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
234245
// CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
235246
// CHECK-RV64-NDL-SAME: "-o" "{{.*}}.o"
236247

clang/test/Driver/cl-options.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@
118118
// RUN: %clang_cl /imsvcmyincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_imsvc %s
119119
// RUN: %clang_cl /imsvc myincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_imsvc %s
120120
// Clang's resource header directory should be first:
121-
// SLASH_imsvc: "-internal-isystem" "{{[^"]*}}lib{{(64)?/|\\\\}}clang{{[^"]*}}include"
121+
// SLASH_imsvc: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
122+
// SLASH_imsvc: "-internal-isystem" "[[RESOURCE_DIR]]{{[/\\]+}}include"
122123
// SLASH_imsvc: "-internal-isystem" "myincludedir"
123124

124125
// RUN: %clang_cl /J -### -- %s 2>&1 | FileCheck -check-prefix=J %s

0 commit comments

Comments
 (0)