[clang] [compiler-rt] Change compiler-rt lib search path for Hexagon-linux (PR #154530)

via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 20 06:12:39 PDT 2025


https://github.com/quic-k created https://github.com/llvm/llvm-project/pull/154530

None

>From 17f1f302073a97d5dfcf7f1df62dadc30f358ff7 Mon Sep 17 00:00:00 2001
From: Kushal Pal <kushpal at qti.qualcomm.com>
Date: Wed, 20 Aug 2025 17:03:06 +0530
Subject: [PATCH] Change compiler-rt lib search path

Signed-off-by: Kushal Pal <kushpal at qti.qualcomm.com>
---
 clang/lib/Driver/ToolChains/Hexagon.cpp             | 13 +++++++------
 clang/test/Driver/hexagon-toolchain-linux.c         | 10 +++++-----
 .../cmake/caches/hexagon-linux-builtins.cmake       |  2 +-
 .../cmake/caches/hexagon-linux-clangrt.cmake        |  3 +--
 4 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 9f8b676fc7dc2..b47d5e371f9c0 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -380,7 +380,8 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
 
       if (!Args.hasArg(options::OPT_nolibc))
         CmdArgs.push_back("-lc");
-      CmdArgs.push_back("-lclang_rt.builtins-hexagon");
+
+      CmdArgs.push_back("-lclang_rt.builtins");
     }
     if (D.CCCIsCXX()) {
       if (HTC.ShouldLinkCXXStdlib(Args))
@@ -547,11 +548,8 @@ HexagonToolChain::getSmallDataThreshold(const ArgList &Args) {
 }
 
 std::string HexagonToolChain::getCompilerRTPath() const {
-  SmallString<128> Dir(getDriver().SysRoot);
-  llvm::sys::path::append(Dir, "usr", "lib");
-  if (!SelectedMultilibs.empty()) {
-    Dir += SelectedMultilibs.back().gccSuffix();
-  }
+  SmallString<128> Dir(getDriver().ResourceDir);
+  llvm::sys::path::append(Dir, "lib", getDriver().getTargetTriple());
   return std::string(Dir);
 }
 
@@ -594,6 +592,9 @@ void HexagonToolChain::getHexagonLibraryPaths(const ArgList &Args,
     LibPaths.push_back(LibDirCpu);
     LibPaths.push_back(LibDir);
   }
+  if (getTriple().isMusl()) {
+    LibPaths.push_back(getCompilerRTPath());
+  }
 }
 
 HexagonToolChain::HexagonToolChain(const Driver &D, const llvm::Triple &Triple,
diff --git a/clang/test/Driver/hexagon-toolchain-linux.c b/clang/test/Driver/hexagon-toolchain-linux.c
index e791353cca07f..c76cd4249f06f 100644
--- a/clang/test/Driver/hexagon-toolchain-linux.c
+++ b/clang/test/Driver/hexagon-toolchain-linux.c
@@ -11,7 +11,7 @@
 // CHECK000-NOT:  {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
 // CHECK000:      "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
 // CHECK000:      "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
-// CHECK000:      "-lc" "-lclang_rt.builtins-hexagon"
+// CHECK000:      "-lc" "-lclang_rt.builtins"
 // -----------------------------------------------------------------------------
 // Passing --musl --shared
 // -----------------------------------------------------------------------------
@@ -21,7 +21,7 @@
 // RUN:   --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared %s 2>&1 | FileCheck -check-prefix=CHECK001 %s
 // CHECK001-NOT:    -dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1
 // CHECK001:        "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o"
-// CHECK001:        "-lc" "-lclang_rt.builtins-hexagon"
+// CHECK001:        "-lc" "-lclang_rt.builtins"
 // CHECK001-NOT:    {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
 // -----------------------------------------------------------------------------
 // Passing --musl -nostdlib
@@ -34,7 +34,7 @@
 // CHECK002-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
 // CHECK002-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
 // CHECK002-NOT:   "-lc"
-// CHECK002-NOT:   "-lclang_rt.builtins-hexagon"
+// CHECK002-NOT:   "-lclang_rt.builtins"
 // -----------------------------------------------------------------------------
 // Passing --musl -nostartfiles
 // -----------------------------------------------------------------------------
@@ -45,7 +45,7 @@
 // CHECK003:       "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
 // CHECK003-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}Scrt1.o
 // CHECK003-NOT:   {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
-// CHECK003:       "-lc" "-lclang_rt.builtins-hexagon"
+// CHECK003:       "-lc" "-lclang_rt.builtins"
 // -----------------------------------------------------------------------------
 // Passing --musl -nodefaultlibs
 // -----------------------------------------------------------------------------
@@ -56,7 +56,7 @@
 // CHECK004:       "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
 // CHECK004:       "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
 // CHECK004-NOT:   "-lc"
-// CHECK004-NOT:   "-lclang_rt.builtins-hexagon"
+// CHECK004-NOT:   "-lclang_rt.builtins"
 // -----------------------------------------------------------------------------
 // Passing --musl -nolibc
 // -----------------------------------------------------------------------------
diff --git a/compiler-rt/cmake/caches/hexagon-linux-builtins.cmake b/compiler-rt/cmake/caches/hexagon-linux-builtins.cmake
index d9c9ff2a4655e..96895da798089 100644
--- a/compiler-rt/cmake/caches/hexagon-linux-builtins.cmake
+++ b/compiler-rt/cmake/caches/hexagon-linux-builtins.cmake
@@ -1,6 +1,6 @@
 set(CMAKE_ASM_FLAGS "-G0 -mlong-calls -fno-pic" CACHE STRING "")
 
-set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR OFF CACHE BOOL "")
+set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "")
 set(LLVM_TARGET_TRIPLE hexagon-unknown-linux-musl CACHE STRING "")
 set(COMPILER_RT_DEFAULT_TARGET_TRIPLE hexagon-unknown-linux-musl CACHE STRING "")
 set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "")
diff --git a/compiler-rt/cmake/caches/hexagon-linux-clangrt.cmake b/compiler-rt/cmake/caches/hexagon-linux-clangrt.cmake
index 4f1d67dcb38e0..2b1feaf874e63 100644
--- a/compiler-rt/cmake/caches/hexagon-linux-clangrt.cmake
+++ b/compiler-rt/cmake/caches/hexagon-linux-clangrt.cmake
@@ -1,5 +1,4 @@
-
-set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR OFF CACHE BOOL "")
+set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "")
 set(LLVM_DEFAULT_TARGET_TRIPLE hexagon-unknown-linux-musl CACHE STRING "")
 
 set(COMPILER_RT_USE_LLVM_UNWINDER ON CACHE BOOL "")



More information about the llvm-commits mailing list