diff options
-rw-r--r-- | lld/ELF/Driver.cpp | 3 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 8 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.h | 3 | ||||
-rw-r--r-- | lld/ELF/Writer.cpp | 3 |
4 files changed, 2 insertions, 15 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index d177d04cb10..9d5c50f121f 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -89,9 +89,6 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) { Symtab.addFile(std::move(File)); } - // Make sure we have resolved all symbols. - Symtab.reportRemainingUndefines(); - // Write the result. const ELFFileBase *FirstObj = Symtab.getFirstELF(); switch (FirstObj->getELFKind()) { diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index f3cb0a2d611..9e604453afd 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -72,14 +72,6 @@ void SymbolTable::addELFFile(ELFFileBase *File) { } } -void SymbolTable::reportRemainingUndefines() { - for (auto &I : Symtab) { - SymbolBody *Body = I.second->Body; - if (Body->isStrongUndefined()) - error(Twine("undefined symbol: ") + Body->getName()); - } -} - // This function resolves conflicts if there's an existing symbol with // the same name. Decisions are made based on symbol type. template <class ELFT> void SymbolTable::resolve(SymbolBody *New) { diff --git a/lld/ELF/SymbolTable.h b/lld/ELF/SymbolTable.h index 6f7be43ce24..2c72169e291 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -42,9 +42,6 @@ public: return nullptr; } - // Print an error message on undefined symbols. - void reportRemainingUndefines(); - const llvm::DenseMap<StringRef, Symbol *> &getSymbols() const { return Symtab; } diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 0dc4f60ad17..39c7aa5b43d 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -327,7 +327,8 @@ template <class ELFT> void SymbolTableSection<ELFT>::writeTo(uint8_t *Buf) { Out = BSSSec; break; case SymbolBody::UndefinedKind: - assert(Body->isWeak() && "Should be defined by now"); + if (!Body->isWeak()) + error(Twine("undefined symbol: ") + Name); case SymbolBody::DefinedAbsoluteKind: break; case SymbolBody::LazyKind: |