https://github.com/Sunday111 updated https://github.com/llvm/llvm-project/pull/132443
>From 9a88ff05af21a5d5357780293f2d011ffe457041 Mon Sep 17 00:00:00 2001 From: Kostiantyn Lazukin <kosla...@ip-10-252-21-142.eu-west-1.compute.internal> Date: Thu, 20 Mar 2025 16:54:06 +0000 Subject: [PATCH] [Driver] Search for compiler-rt libraries in sysroot/lib if not found in the resource directory This patch improves support for embedded Linux toolchains with multiple sysroots, each containing different built-in libraries. If compiler-rt libraries are not found in the resource directory, the Clang driver will fallback to searching in the sysroot/lib directory. This change preserves the standard behavior for regular Linux toolchains while allowing greater flexibility in toolchains with multiple sysroots. --- clang/lib/Driver/ToolChains/Linux.cpp | 2 ++ .../Inputs/musl_sysroot_with_builtins/lib/Scrt1.o | 0 .../lib/clang_rt.crtbegin.o | 0 .../musl_sysroot_with_builtins/lib/clang_rt.crtend.o | 0 .../Inputs/musl_sysroot_with_builtins/lib/crti.o | 0 .../Inputs/musl_sysroot_with_builtins/lib/crtn.o | 0 .../lib/libclang_rt.builtins.a | 0 clang/test/Driver/Inputs/resource_dir_empty/keep | 0 clang/test/Driver/linux-musl-library-search.cpp | 11 +++++++++++ 9 files changed, 13 insertions(+) create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/Scrt1.o create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtbegin.o create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtend.o create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crti.o create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crtn.o create mode 100644 clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/libclang_rt.builtins.a create mode 100644 clang/test/Driver/Inputs/resource_dir_empty/keep create mode 100644 clang/test/Driver/linux-musl-library-search.cpp diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 1e9bd3de75f04..1bd8daafa8091 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -354,6 +354,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) addPathIfExists(D, concat(SysRoot, "/lib"), Paths); addPathIfExists(D, concat(SysRoot, "/usr/lib"), Paths); + + addPathIfExists(D, concat(SysRoot, "/lib"), getLibraryPaths()); } ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const { diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/Scrt1.o b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/Scrt1.o new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtbegin.o b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtbegin.o new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtend.o b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/clang_rt.crtend.o new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crti.o b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crti.o new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crtn.o b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/crtn.o new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/libclang_rt.builtins.a b/clang/test/Driver/Inputs/musl_sysroot_with_builtins/lib/libclang_rt.builtins.a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/resource_dir_empty/keep b/clang/test/Driver/Inputs/resource_dir_empty/keep new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/linux-musl-library-search.cpp b/clang/test/Driver/linux-musl-library-search.cpp new file mode 100644 index 0000000000000..7bfdc58af1dcd --- /dev/null +++ b/clang/test/Driver/linux-musl-library-search.cpp @@ -0,0 +1,11 @@ +// RUN: %clang -### %s 2>&1 \ +// RUN: --target=aarch64-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \ +// RUN: -resource-dir=%S/Inputs/resource_dir_empty \ +// RUN: --sysroot=%S/Inputs/musl_sysroot_with_builtins \ +// RUN: -static \ +// RUN: -rtlib=compiler-rt \ +// RUN: | FileCheck %s + +// CHECK-DAG: "--sysroot={{[^"]+}}/Inputs/musl_sysroot_with_builtins" +// CHECK-DAG: "{{[^"]+}}/Inputs/musl_sysroot_with_builtins/lib/libclang_rt.builtins.a" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits