diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index a8a5aca6b510..bc2c7ad43f92 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -363,6 +363,8 @@ static void reportUndefined(SymbolTable &Symtab, SymbolBody *Sym) { // Local symbols are not in the linker's symbol table. This function scans // each object file's symbol table to copy local symbols to the output. template void Writer::copyLocalSymbols() { + if (!Out::SymTab) + return; for (const std::unique_ptr> &F : Symtab.getObjectFiles()) { for (const Elf_Sym &Sym : F->getLocalSymbols()) { ErrorOr SymNameOrErr = Sym.getName(F->getStringTable()); @@ -370,8 +372,7 @@ template void Writer::copyLocalSymbols() { StringRef SymName = *SymNameOrErr; if (!shouldKeepInSymtab(*F, SymName, Sym)) continue; - if (Out::SymTab) - Out::SymTab->addLocalSymbol(SymName); + Out::SymTab->addLocalSymbol(SymName); } } }