summaryrefslogtreecommitdiff
path: root/lld
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2018-12-19 23:25:02 +0000
committerRui Ueyama <ruiu@google.com>2018-12-19 23:25:02 +0000
commitd7ceb754c16e409f5729b2105d145068be1243f2 (patch)
treeb0d73362960532ed6a456c65ad7bf3b1b82f9c90 /lld
parent97ea333d63661d82de12b26f337e3d9f95475bab (diff)
Simplify. NFC.
Differential Revision: https://reviews.llvm.org/D55903
Diffstat (limited to 'lld')
-rw-r--r--lld/ELF/SymbolTable.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index e372461ee3c..8f320a5778b 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -494,18 +494,23 @@ void SymbolTable::addShared(StringRef Name, SharedFile<ELFT> &File,
// An undefined symbol with non default visibility must be satisfied
// in the same DSO.
- if (WasInserted ||
- ((S->isUndefined() || S->isLazy()) && S->Visibility == STV_DEFAULT)) {
+ if (WasInserted) {
+ replaceSymbol<SharedSymbol>(S, File, Name, Sym.getBinding(), Sym.st_other,
+ Sym.getType(), Sym.st_value, Sym.st_size,
+ Alignment, VerdefIndex);
+ return;
+ }
+
+ if ((S->isUndefined() || S->isLazy()) && S->Visibility == STV_DEFAULT) {
uint8_t Binding = S->Binding;
bool WasUndefined = S->isUndefined();
replaceSymbol<SharedSymbol>(S, File, Name, Sym.getBinding(), Sym.st_other,
Sym.getType(), Sym.st_value, Sym.st_size,
Alignment, VerdefIndex);
- if (!WasInserted) {
- S->Binding = Binding;
- if (!S->isWeak() && !Config->GcSections && WasUndefined)
- File.IsNeeded = true;
- }
+
+ S->Binding = Binding;
+ if (!S->isWeak() && !Config->GcSections && WasUndefined)
+ File.IsNeeded = true;
}
}