Author: David Salinas Date: 2025-12-15T12:48:27-05:00 New Revision: 31ba65c13318bbfe1ca182d1348968922e1c3c5a
URL: https://github.com/llvm/llvm-project/commit/31ba65c13318bbfe1ca182d1348968922e1c3c5a DIFF: https://github.com/llvm/llvm-project/commit/31ba65c13318bbfe1ca182d1348968922e1c3c5a.diff LOG: hipcc/ld.lld unable to link separable compilation when dynamic librar… (#169551) …y is fully specified --------- Co-authored-by: Omri Mor <[email protected]> Added: Modified: clang/lib/Driver/ToolChains/HIPUtility.cpp Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index 1af2ae6470f1e..1fcb36cc3a390 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -241,28 +241,34 @@ 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) { - DefinedGPUBinHandleSymbols.insert(Name.str()); - GPUBinHandleSymbols.erase(Name.str()); - } + // Add undefined symbols if they are not in the defined sets + if (isUndefined) { + if (isFatBinSymbol && + DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end()) + FatBinSymbols.insert(Name.str()); + else if (isGPUBinHandleSymbol && + DefinedGPUBinHandleSymbols.find(Name) == + DefinedGPUBinHandleSymbols.end()) + GPUBinHandleSymbols.insert(Name.str()); continue; } - // Add undefined symbols if they are not in the defined sets - if (isFatBinSymbol && - DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end()) - FatBinSymbols.insert(Name.str()); - else if (isGPUBinHandleSymbol && DefinedGPUBinHandleSymbols.find(Name) == - DefinedGPUBinHandleSymbols.end()) - GPUBinHandleSymbols.insert(Name.str()); + // Ignore hidden defined symbols + if (isHidden) + continue; + + // Handling for non-hidden defined symbols + if (isFatBinSymbol) { + DefinedFatBinSymbols.insert(Name.str()); + FatBinSymbols.erase(Name.str()); + } else if (isGPUBinHandleSymbol) { + DefinedGPUBinHandleSymbols.insert(Name.str()); + GPUBinHandleSymbols.erase(Name.str()); + } } } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
