Make findFile() a member function of SymbolTable to simplify. NFC.
llvm-svn: 256867
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 0fff0b2..0c3752e 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -330,18 +330,17 @@
}
template <class ELFT>
-static void reportUndefined(const SymbolTable<ELFT> &S, const SymbolBody &Sym) {
+static void reportUndefined(SymbolTable<ELFT> &Symtab, SymbolBody *Sym) {
if (Config->Shared && !Config->NoUndefined)
return;
- ELFFileBase<ELFT> *SymFile = findFile<ELFT>(S.getObjectFiles(), &Sym);
- std::string Message = "undefined symbol: " + Sym.getName().str();
- if (SymFile)
- Message += " in " + SymFile->getName().str();
+ std::string Msg = "undefined symbol: " + Sym->getName().str();
+ if (ELFFileBase<ELFT> *File = Symtab.findFile(Sym))
+ Msg += " in " + File->getName().str();
if (Config->NoInhibitExec)
- warning(Message);
+ warning(Msg);
else
- error(Message);
+ error(Msg);
}
// Local symbols are not in the linker's symbol table. This function scans
@@ -801,7 +800,7 @@
SymbolBody *Body = P.second->Body;
if (auto *U = dyn_cast<Undefined>(Body))
if (!U->isWeak() && !U->canKeepUndefined())
- reportUndefined<ELFT>(Symtab, *Body);
+ reportUndefined<ELFT>(Symtab, Body);
if (auto *C = dyn_cast<DefinedCommon>(Body))
CommonSymbols.push_back(C);