https://github.com/wzssyqa created https://github.com/llvm/llvm-project/pull/87319
In ToolChain::getCompilerRT: If none is found, use a file name from the new layout, which may get printed in an error message, aiding users in knowing what Clang is looking for. But in current code, the old layout is printed if no libclang_rt.builtin is found with cmd like: ./bin/clang --target=aarch64-linux-gnu -rtlib=compiler-rt hello.c aarch64-linux-gnu/bin/ld: cannot find <path>/lib/clang/19/lib/linux/libclang_rt.builtins-aarch64.a: No such file or directory >From 2c8132f08eedfe522ca4dcdcc5bbb11ffb629dd2 Mon Sep 17 00:00:00 2001 From: YunQiang Su <s...@gcc.gnu.org> Date: Tue, 2 Apr 2024 15:50:23 +0800 Subject: [PATCH] Clang: Return new layout path if cannot find CRT In ToolChain::getCompilerRT: // If none is found, use a file name from the new layout, which may get // printed in an error message, aiding users in knowing what Clang is // looking for. But in current code, the old layout is printed if no libclang_rt.builtin is found with cmd like: ./bin/clang --target=aarch64-linux-gnu -rtlib=compiler-rt hello.c --- clang/lib/Driver/ToolChain.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 03450fc0f57b93..3b5960992a9dd1 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -692,12 +692,21 @@ std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component, buildCompilerRTBasename(Args, Component, Type, /*AddArch=*/true); SmallString<128> OldPath(getCompilerRTPath()); llvm::sys::path::append(OldPath, CRTBasename); - if (Path.empty() || getVFS().exists(OldPath)) + if (getVFS().exists(OldPath)) return std::string(OldPath); // If none is found, use a file name from the new layout, which may get // printed in an error message, aiding users in knowing what Clang is // looking for. + if (Path.empty()) { + CRTBasename = + buildCompilerRTBasename(Args, Component, Type, /*AddArch=*/false); + SmallString<128> NewP(D.ResourceDir); + llvm::sys::path::append(NewP, "lib"); + llvm::sys::path::append(NewP, getTriple().str()); + llvm::sys::path::append(NewP, CRTBasename); + return std::string(NewP); + } return std::string(Path); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits