diff options
Diffstat (limited to 'lld/ELF/SymbolTable.cpp')
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 25ba584d45b..088bf5bca71 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -222,6 +222,12 @@ template <class ELFT> void SymbolTable::resolve(SymbolBody *New) { if (Lazy *L = dyn_cast<Lazy>(Existing)) { if (New->isUndefined()) { + if (New->isWeak()) { + // See the explanation in SymbolTable::addLazy + L->setUsedInRegularObj(); + L->setWeak(); + return; + } addMemberFile(L); return; } |