diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-05-03 20:26:46 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-05-03 20:26:46 +0000 |
| commit | d803cda42997f42649910309ac18170d2d6f2214 (patch) | |
| tree | 7bb26c9b927f1a3a4ee50d7773cc29fa7a4eb188 /ELF/SymbolTable.cpp | |
| parent | 274c9ff5404582ff22769d9599ab10ed216ceec3 (diff) | |
Notes
Diffstat (limited to 'ELF/SymbolTable.cpp')
| -rw-r--r-- | ELF/SymbolTable.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ELF/SymbolTable.cpp b/ELF/SymbolTable.cpp index 541fc1bf6479d..30f1c3653f504 100644 --- a/ELF/SymbolTable.cpp +++ b/ELF/SymbolTable.cpp @@ -279,9 +279,10 @@ Symbol *SymbolTable<ELFT>::addUndefined(StringRef Name, bool IsLocal, return S; } if (Binding != STB_WEAK) { - if (S->body()->isShared() || S->body()->isLazy()) + SymbolBody *B = S->body(); + if (B->isShared() || B->isLazy() || B->isUndefined()) S->Binding = Binding; - if (auto *SS = dyn_cast<SharedSymbol>(S->body())) + if (auto *SS = dyn_cast<SharedSymbol>(B)) cast<SharedFile<ELFT>>(SS->File)->IsUsed = true; } if (auto *L = dyn_cast<Lazy>(S->body())) { |
