Skip to content

Commit 03bd949

Browse files
authored
Merge pull request #5214 from 3405691582/BuildfixOpenBSDTakeTwo
Cherrypick: [Clang][Driver] Fix include paths for `--sysroot /` on OpenBSD/FreeBSD
2 parents 1eb304d + 700e23c commit 03bd949

File tree

10 files changed

+50
-9
lines changed

10 files changed

+50
-9
lines changed

clang/lib/Driver/ToolChains/FreeBSD.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,10 @@ FreeBSD::FreeBSD(const Driver &D, const llvm::Triple &Triple,
387387
// back to '/usr/lib' if it doesn't exist.
388388
if ((Triple.getArch() == llvm::Triple::x86 || Triple.isMIPS32() ||
389389
Triple.isPPC32()) &&
390-
D.getVFS().exists(getDriver().SysRoot + "/usr/lib32/crt1.o"))
391-
getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32");
390+
D.getVFS().exists(concat(getDriver().SysRoot, "/usr/lib32/crt1.o")))
391+
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib32"));
392392
else
393-
getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
393+
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib"));
394394
}
395395

396396
ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibType() const {
@@ -409,14 +409,14 @@ unsigned FreeBSD::GetDefaultDwarfVersion() const {
409409
void FreeBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
410410
llvm::opt::ArgStringList &CC1Args) const {
411411
addSystemInclude(DriverArgs, CC1Args,
412-
getDriver().SysRoot + "/usr/include/c++/v1");
412+
concat(getDriver().SysRoot, "/usr/include/c++/v1"));
413413
}
414414

415415
void FreeBSD::addLibStdCxxIncludePaths(
416416
const llvm::opt::ArgList &DriverArgs,
417417
llvm::opt::ArgStringList &CC1Args) const {
418-
addLibStdCXXIncludePaths(getDriver().SysRoot + "/usr/include/c++/4.2", "", "",
419-
DriverArgs, CC1Args);
418+
addLibStdCXXIncludePaths(concat(getDriver().SysRoot, "/usr/include/c++/4.2"),
419+
"", "", DriverArgs, CC1Args);
420420
}
421421

422422
void FreeBSD::AddCXXStdlibLibArgs(const ArgList &Args,

clang/lib/Driver/ToolChains/OpenBSD.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ SanitizerMask OpenBSD::getSupportedSanitizers() const {
279279
OpenBSD::OpenBSD(const Driver &D, const llvm::Triple &Triple,
280280
const ArgList &Args)
281281
: Generic_ELF(D, Triple, Args) {
282-
getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
282+
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib"));
283283
}
284284

285285
void OpenBSD::AddClangSystemIncludeArgs(
@@ -312,13 +312,14 @@ void OpenBSD::AddClangSystemIncludeArgs(
312312
return;
313313
}
314314

315-
addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/include");
315+
addExternCSystemInclude(DriverArgs, CC1Args,
316+
concat(D.SysRoot, "/usr/include"));
316317
}
317318

318319
void OpenBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
319320
llvm::opt::ArgStringList &CC1Args) const {
320321
addSystemInclude(DriverArgs, CC1Args,
321-
getDriver().SysRoot + "/usr/include/c++/v1");
322+
concat(getDriver().SysRoot, "/usr/include/c++/v1"));
322323
}
323324

324325
void OpenBSD::AddCXXStdlibLibArgs(const ArgList &Args,

clang/test/Driver/Inputs/basic_freebsd_libcxx_tree/usr/bin/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/basic_freebsd_libcxx_tree/usr/include/c++/v1/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/basic_freebsd_libcxx_tree/usr/lib/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/basic_openbsd_libcxx_tree/usr/bin/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/basic_openbsd_libcxx_tree/usr/include/c++/v1/.keep

Whitespace-only changes.

clang/test/Driver/Inputs/basic_openbsd_libcxx_tree/usr/lib/.keep

Whitespace-only changes.

clang/test/Driver/freebsd.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,23 @@
2020
// CHECK-PG-FOURTEEN: "-lc++" "-lm"
2121
// CHECK-PG-TEN: "-lc++_p" "-lm_p"
2222
// CHECK-PG-NINE: "-lstdc++_p" "-lm_p"
23+
24+
// Test include paths with a sysroot.
25+
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
26+
// RUN: --target=amd64-unknown-freebsd \
27+
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree \
28+
// RUN: -resource-dir=%S/Inputs/resource_dir \
29+
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT %s
30+
// CHECK-LIBCXX-SYSROOT: "-cc1"
31+
// CHECK-LIBCXX-SYSROOT-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
32+
// CHECK-LIBCXX-SYSROOT-SAME: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
33+
34+
// Test include paths when the sysroot path ends with `/`.
35+
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
36+
// RUN: --target=amd64-unknown-freebsd \
37+
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree/ \
38+
// RUN: -resource-dir=%S/Inputs/resource_dir \
39+
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT-SLASH %s
40+
// CHECK-LIBCXX-SYSROOT-SLASH: "-cc1"
41+
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-isysroot" "[[SYSROOT:[^"]+/]]"
42+
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-internal-isystem" "[[SYSROOT]]usr/include/c++/v1"

clang/test/Driver/openbsd.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,23 @@
1919
// RUN: %clangxx %s -### -pg -o %t.o -target arm-unknown-openbsd 2>&1 \
2020
// RUN: | FileCheck --check-prefix=CHECK-PG-CXX %s
2121
// CHECK-PG-CXX: "-lc++_p" "-lc++abi_p" "-lpthread_p" "-lm_p"
22+
23+
// Test include paths with a sysroot.
24+
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
25+
// RUN: --target=amd64-pc-openbsd \
26+
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree \
27+
// RUN: -resource-dir=%S/Inputs/resource_dir \
28+
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT %s
29+
// CHECK-LIBCXX-SYSROOT: "-cc1"
30+
// CHECK-LIBCXX-SYSROOT-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
31+
// CHECK-LIBCXX-SYSROOT-SAME: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
32+
33+
// Test include paths when the sysroot path ends with `/`.
34+
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
35+
// RUN: --target=amd64-pc-openbsd \
36+
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree/ \
37+
// RUN: -resource-dir=%S/Inputs/resource_dir \
38+
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT-SLASH %s
39+
// CHECK-LIBCXX-SYSROOT-SLASH: "-cc1"
40+
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-isysroot" "[[SYSROOT:[^"]+/]]"
41+
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-internal-isystem" "[[SYSROOT]]usr/include/c++/v1"

0 commit comments

Comments
 (0)