From 0f99ab163f65afdc323f61ea25296fc52a520906 Mon Sep 17 00:00:00 2001 From: david-salinas Date: Wed, 29 Oct 2025 21:56:33 +0000 Subject: [PATCH 1/4] SWDEV-561590 - hipcc/ld.lld unable to link separable compilation when dynamic library is fully specified --- clang/lib/Driver/ToolChains/HIPUtility.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index 732403e69a075..c1e5e407bf540 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -241,6 +241,8 @@ class HIPUndefinedFatBinSymbols { bool isUndefined = FlagOrErr.get() & llvm::object::SymbolRef::SF_Undefined; + bool isHidden = + FlagOrErr.get() & llvm::object::SymbolRef::SF_Hidden; bool isFatBinSymbol = Name.starts_with(FatBinPrefix); bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix); @@ -249,7 +251,7 @@ class HIPUndefinedFatBinSymbols { if (isFatBinSymbol) { DefinedFatBinSymbols.insert(Name.str()); FatBinSymbols.erase(Name.str()); - } else if (isGPUBinHandleSymbol) { + } else if (isGPUBinHandleSymbol && (!isHidden) ) { DefinedGPUBinHandleSymbols.insert(Name.str()); GPUBinHandleSymbols.erase(Name.str()); } From c2752978382bdebae6ce0c6b43be7025f624d549 Mon Sep 17 00:00:00 2001 From: david-salinas Date: Thu, 6 Nov 2025 03:43:17 +0000 Subject: [PATCH 2/4] Correct processing of hip_gpubin_handle symbols --- clang/lib/Driver/ToolChains/HIPUtility.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index c1e5e407bf540..36ec4ae0ff551 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -241,18 +241,14 @@ class HIPUndefinedFatBinSymbols { bool isUndefined = FlagOrErr.get() & llvm::object::SymbolRef::SF_Undefined; - bool isHidden = - FlagOrErr.get() & llvm::object::SymbolRef::SF_Hidden; bool isFatBinSymbol = Name.starts_with(FatBinPrefix); bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix); // Handling for defined symbols if (!isUndefined) { if (isFatBinSymbol) { - DefinedFatBinSymbols.insert(Name.str()); FatBinSymbols.erase(Name.str()); - } else if (isGPUBinHandleSymbol && (!isHidden) ) { - DefinedGPUBinHandleSymbols.insert(Name.str()); + } else if (isGPUBinHandleSymbol) { GPUBinHandleSymbols.erase(Name.str()); } continue; From e3089779151a9fd0c85a29aee56e5adc5256bd7b Mon Sep 17 00:00:00 2001 From: david-salinas Date: Sat, 8 Nov 2025 15:23:08 +0000 Subject: [PATCH 3/4] Revert "Correct processing of hip_gpubin_handle symbols" This reverts commit c2752978382bdebae6ce0c6b43be7025f624d549. --- clang/lib/Driver/ToolChains/HIPUtility.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index 36ec4ae0ff551..c1e5e407bf540 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -241,14 +241,18 @@ class HIPUndefinedFatBinSymbols { bool isUndefined = FlagOrErr.get() & llvm::object::SymbolRef::SF_Undefined; + bool isHidden = + FlagOrErr.get() & llvm::object::SymbolRef::SF_Hidden; bool isFatBinSymbol = Name.starts_with(FatBinPrefix); bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix); // Handling for defined symbols if (!isUndefined) { if (isFatBinSymbol) { + DefinedFatBinSymbols.insert(Name.str()); FatBinSymbols.erase(Name.str()); - } else if (isGPUBinHandleSymbol) { + } else if (isGPUBinHandleSymbol && (!isHidden) ) { + DefinedGPUBinHandleSymbols.insert(Name.str()); GPUBinHandleSymbols.erase(Name.str()); } continue; From 1510f928f8d1257a7b2693395afe02c0b8c9869a Mon Sep 17 00:00:00 2001 From: david-salinas Date: Sat, 8 Nov 2025 16:25:13 +0000 Subject: [PATCH 4/4] extend fix to __hip_fatbin__ symbols --- clang/lib/Driver/ToolChains/HIPUtility.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index c1e5e407bf540..51d6312fb342b 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -248,7 +248,7 @@ class HIPUndefinedFatBinSymbols { // Handling for defined symbols if (!isUndefined) { - if (isFatBinSymbol) { + if (isFatBinSymbol && (!isHidden)) { DefinedFatBinSymbols.insert(Name.str()); FatBinSymbols.erase(Name.str()); } else if (isGPUBinHandleSymbol && (!isHidden) ) {