From cc1618e6689df872dcb005c5ceeecd38c56c36af Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Mon, 8 Apr 2019 17:35:55 +0000 Subject: ELF: De-template SharedFile. NFCI. Differential Revision: https://reviews.llvm.org/D60305 llvm-svn: 357925 --- lld/ELF/SymbolTable.cpp | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) (limited to 'lld/ELF/SymbolTable.cpp') diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index e25682f809c..c2a9d6dfb70 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -90,25 +90,8 @@ template void SymbolTable::addFile(InputFile *File) { message(toString(File)); // .so file - if (auto *F = dyn_cast>(File)) { - // DSOs are uniquified not by filename but by soname. - F->parseDynamic(); - if (errorCount()) - return; - - // If a DSO appears more than once on the command line with and without - // --as-needed, --no-as-needed takes precedence over --as-needed because a - // user can add an extra DSO with --no-as-needed to force it to be added to - // the dependency list. - DenseMap::iterator It; - bool WasInserted; - std::tie(It, WasInserted) = SoNames.try_emplace(F->SoName, F); - cast>(It->second)->IsNeeded |= F->IsNeeded; - if (!WasInserted) - return; - - SharedFiles.push_back(F); - F->parseRest(); + if (auto *F = dyn_cast(File)) { + F->parse(); return; } @@ -485,7 +468,7 @@ Defined *SymbolTable::addDefined(StringRef Name, uint8_t StOther, uint8_t Type, } template -void SymbolTable::addShared(StringRef Name, SharedFile &File, +void SymbolTable::addShared(StringRef Name, SharedFile &File, const typename ELFT::Sym &Sym, uint32_t Alignment, uint32_t VerdefIndex) { // DSO symbols do not affect visibility in the output, so we pass STV_DEFAULT @@ -802,15 +785,15 @@ template void SymbolTable::fetchLazy(Symbol *); template void SymbolTable::fetchLazy(Symbol *); template void SymbolTable::fetchLazy(Symbol *); -template void SymbolTable::addShared(StringRef, SharedFile &, +template void SymbolTable::addShared(StringRef, SharedFile &, const typename ELF32LE::Sym &, uint32_t Alignment, uint32_t); -template void SymbolTable::addShared(StringRef, SharedFile &, +template void SymbolTable::addShared(StringRef, SharedFile &, const typename ELF32BE::Sym &, uint32_t Alignment, uint32_t); -template void SymbolTable::addShared(StringRef, SharedFile &, +template void SymbolTable::addShared(StringRef, SharedFile &, const typename ELF64LE::Sym &, uint32_t Alignment, uint32_t); -template void SymbolTable::addShared(StringRef, SharedFile &, +template void SymbolTable::addShared(StringRef, SharedFile &, const typename ELF64BE::Sym &, uint32_t Alignment, uint32_t); -- cgit v1.2.3