Skip to content

Commit 31ba65c

Browse files
david-salinasomor1
andauthored
hipcc/ld.lld unable to link separable compilation when dynamic librar… (#169551)
…y is fully specified --------- Co-authored-by: Omri Mor <omri50@gmail.com>
1 parent 18df40e commit 31ba65c

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

clang/lib/Driver/ToolChains/HIPUtility.cpp

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -241,28 +241,34 @@ class HIPUndefinedFatBinSymbols {
241241

242242
bool isUndefined =
243243
FlagOrErr.get() & llvm::object::SymbolRef::SF_Undefined;
244+
bool isHidden = FlagOrErr.get() & llvm::object::SymbolRef::SF_Hidden;
244245
bool isFatBinSymbol = Name.starts_with(FatBinPrefix);
245246
bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix);
246247

247-
// Handling for defined symbols
248-
if (!isUndefined) {
249-
if (isFatBinSymbol) {
250-
DefinedFatBinSymbols.insert(Name.str());
251-
FatBinSymbols.erase(Name.str());
252-
} else if (isGPUBinHandleSymbol) {
253-
DefinedGPUBinHandleSymbols.insert(Name.str());
254-
GPUBinHandleSymbols.erase(Name.str());
255-
}
248+
// Add undefined symbols if they are not in the defined sets
249+
if (isUndefined) {
250+
if (isFatBinSymbol &&
251+
DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end())
252+
FatBinSymbols.insert(Name.str());
253+
else if (isGPUBinHandleSymbol &&
254+
DefinedGPUBinHandleSymbols.find(Name) ==
255+
DefinedGPUBinHandleSymbols.end())
256+
GPUBinHandleSymbols.insert(Name.str());
256257
continue;
257258
}
258259

259-
// Add undefined symbols if they are not in the defined sets
260-
if (isFatBinSymbol &&
261-
DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end())
262-
FatBinSymbols.insert(Name.str());
263-
else if (isGPUBinHandleSymbol && DefinedGPUBinHandleSymbols.find(Name) ==
264-
DefinedGPUBinHandleSymbols.end())
265-
GPUBinHandleSymbols.insert(Name.str());
260+
// Ignore hidden defined symbols
261+
if (isHidden)
262+
continue;
263+
264+
// Handling for non-hidden defined symbols
265+
if (isFatBinSymbol) {
266+
DefinedFatBinSymbols.insert(Name.str());
267+
FatBinSymbols.erase(Name.str());
268+
} else if (isGPUBinHandleSymbol) {
269+
DefinedGPUBinHandleSymbols.insert(Name.str());
270+
GPUBinHandleSymbols.erase(Name.str());
271+
}
266272
}
267273
}
268274

0 commit comments

Comments
 (0)