summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Driver.cpp3
-rw-r--r--lld/ELF/SymbolTable.cpp8
-rw-r--r--lld/ELF/SymbolTable.h3
-rw-r--r--lld/ELF/Writer.cpp3
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:
OpenPOWER on IntegriCloud