https://github.com/afzpatel created https://github.com/llvm/llvm-project/pull/190213
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 => 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`. >From 53614e47da05a66b09c47249f1cd483208e9503d Mon Sep 17 00:00:00 2001 From: Afzal Patel <[email protected]> Date: Thu, 2 Apr 2026 09:42:52 -0700 Subject: [PATCH] Add CLANG_DEFAULT_FRTLIB_ADD_RPATH for HIP/SYCL offload runtime rpath --- clang/CMakeLists.txt | 4 ++++ clang/include/clang/Config/config.h.cmake | 3 +++ clang/lib/Driver/ToolChains/Linux.cpp | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) 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)}); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
