llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: Afzal Patel (afzpatel)

<details>
<summary>Changes</summary>

Clang only adds -rpath for the HIP/SYCL offload runtimes (libamdhip64, libsycl) 
when `-frtlib-add-rpath` is passed. The default is off, so binaries built 
against a non-unified ROCm layout (e.g. Spack, separate install prefixes) often 
link fine but fail at run time with `libamdhip64.so.7 =&gt; not found`.

This adds a CMake option `CLANG_DEFAULT_FRTLIB_ADD_RPATH` (default OFF) that 
makes that behavior the default for `Linux::addOffloadRTLibs` only. Users can 
still disable with `-fno-rtlib-add-rpath`.

---
Full diff: https://github.com/llvm/llvm-project/pull/190213.diff


3 Files Affected:

- (modified) clang/CMakeLists.txt (+4) 
- (modified) clang/include/clang/Config/config.h.cmake (+3) 
- (modified) clang/lib/Driver/ToolChains/Linux.cpp (+2-1) 


``````````diff
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index b3bc56209fc9e..38f6218571542 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -280,6 +280,10 @@ set(CLANG_SPAWN_CC1 OFF CACHE BOOL
 
 option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on linux-gnu" ON)
 
+option(CLANG_DEFAULT_FRTLIB_ADD_RPATH
+  "Default -frtlib-add-rpath for HIP/SYCL offload runtimes (e.g. split-prefix 
ROCm). Use -fno-rtlib-add-rpath to disable."
+  OFF)
+
 set(CLANG_DEFAULT_LINKER "" CACHE STRING
   "Default linker to use (linker name or absolute path, empty for platform 
default)")
 
diff --git a/clang/include/clang/Config/config.h.cmake 
b/clang/include/clang/Config/config.h.cmake
index 05e4deb671a7e..628c83f9f885a 100644
--- a/clang/include/clang/Config/config.h.cmake
+++ b/clang/include/clang/Config/config.h.cmake
@@ -11,6 +11,9 @@
 /* Default to -fPIE and -pie on Linux. */
 #cmakedefine01 CLANG_DEFAULT_PIE_ON_LINUX
 
+/* Default -frtlib-add-rpath for HIP/SYCL offload libs in 
Linux::addOffloadRTLibs only. */
+#cmakedefine01 CLANG_DEFAULT_FRTLIB_ADD_RPATH
+
 /* Default linker to use. */
 #define CLANG_DEFAULT_LINKER "${CLANG_DEFAULT_LINKER}"
 
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp 
b/clang/lib/Driver/ToolChains/Linux.cpp
index cf67f984ccdd2..6e01c36655b07 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -870,7 +870,8 @@ void Linux::addOffloadRTLibs(unsigned ActiveKinds, const 
ArgList &Args,
 
   for (auto [Path, Library] : Libraries) {
     if (Args.hasFlag(options::OPT_frtlib_add_rpath,
-                     options::OPT_fno_rtlib_add_rpath, false)) {
+                     options::OPT_fno_rtlib_add_rpath,
+                     (bool)CLANG_DEFAULT_FRTLIB_ADD_RPATH)) {
       SmallString<0> p = Path;
       llvm::sys::path::remove_dots(p, true);
       CmdArgs.append({"-rpath", Args.MakeArgString(p)});

``````````

</details>


https://github.com/llvm/llvm-project/pull/190213
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to