Skip to content

Commit bf83ffd

Browse files
committed
fixup! [Clang][Driver] Fix the missing Target-Triple-Level include path resolution in Baremetal Driver
1 parent a1e7c03 commit bf83ffd

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

clang/lib/Driver/ToolChains/BareMetal.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -494,8 +494,13 @@ void BareMetal::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
494494
if (SysRootDir.empty())
495495
return;
496496

497+
SmallString<128> Dir(SysRootDir);
498+
llvm::sys::path::append(Dir, Target, "include", "c++", "v1");
499+
if (D.getVFS().exists(Dir))
500+
addSystemInclude(DriverArgs, CC1Args, Dir.str());
501+
497502
for (const Multilib &M : getOrderedMultilibs()) {
498-
SmallString<128> Dir(SysRootDir);
503+
Dir = SysRootDir;
499504
llvm::sys::path::append(Dir, M.gccSuffix());
500505
switch (GetCXXStdlibType(DriverArgs)) {
501506
case ToolChain::CST_Libcxx: {
@@ -509,10 +514,6 @@ void BareMetal::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
509514
// Add generic paths if nothing else succeeded so far.
510515
llvm::sys::path::append(Dir, "include", "c++", "v1");
511516
addSystemInclude(DriverArgs, CC1Args, Dir.str());
512-
Dir = SysRootDir;
513-
llvm::sys::path::append(Dir, Target, "include", "c++", "v1");
514-
if (D.getVFS().exists(Dir))
515-
addSystemInclude(DriverArgs, CC1Args, Dir.str());
516517
break;
517518
}
518519
case ToolChain::CST_Libstdcxx: {

clang/test/Driver/Inputs/multiarch-sysroot-tree/aarch64-unknown-none-elf/include/c++/v1/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/multiarch-sysroot-tree/arm-unknown-none-eabi/include/c++/v1/.keep

Whitespace-only changes.

clang/test/Driver/baremetal.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@
44
// RUN: | FileCheck -check-prefixes=CHECK-STATIC-LIB %s
55
// CHECK-STATIC-LIB: {{.*}}llvm-ar{{.*}}" "rcsD"
66

7+
// RUN: %clang %s -### --target=arm-none-eabi -o %t.out 2>&1 \
8+
// RUN: --sysroot=%S/Inputs/multiarch-sysroot-tree \
9+
// RUN: | FileCheck --check-prefix=CHECK-ARM %s
10+
// CHECK-ARM: "-internal-isystem" "{{[^"]+}}multiarch-sysroot-tree{{[/\\]+}}arm-unknown-none-eabi{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
11+
// CHECK-ARM: "-internal-isystem" "{{[^"]+}}multiarch-sysroot-tree{{[/\\]+}}arm-unknown-none-eabi{{[/\\]+}}include"
12+
13+
// RUN: %clang %s -### --target=aarch64-none-elf -o %t.out 2>&1 \
14+
// RUN: --sysroot=%S/Inputs/multiarch-sysroot-tree \
15+
// RUN: | FileCheck --check-prefix=CHECK-AARCH64 %s
16+
// CHECK-AARCH64: "-internal-isystem" "{{[^"]+}}multiarch-sysroot-tree{{[/\\]+}}aarch64-unknown-none-elf{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"
17+
// CHECK-AARCH64: "-internal-isystem" "{{[^"]+}}multiarch-sysroot-tree{{[/\\]+}}aarch64-unknown-none-elf{{[/\\]+}}include"
18+
719
// RUN: %clang %s -### --target=armv6m-none-eabi -o %t.out 2>&1 \
820
// RUN: -T semihosted.lds \
921
// RUN: -L some/directory/user/asked/for \

0 commit comments

Comments
 (0)