summaryrefslogtreecommitdiff
path: root/gold/symtab.cc
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2016-09-27 12:08:19 -0700
committerCary Coutant <ccoutant@gmail.com>2016-09-27 12:08:28 -0700
commite3f07b5b750554bbbbee1bddc34bb77fd7d31eeb (patch)
tree96454a34955a2149b805714951a3702e4583c3a2 /gold/symtab.cc
parent07619d52fef6fda58cbc327512a4d8ec60ad5637 (diff)
downloadbinutils-gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.tar.gz
Don't treat as separate symbols if unversioned symbol is undefined.
When we see an unversioned symbol reference in a shared library, followed by a default definition of the symbol in another shared library, we were treating them as separate symbols. That should only happen when both are definitions. gold/ PR gold/20238 * symtab.cc (Symbol_table::define_default_version): Check that unversioned symbol is defined.
Diffstat (limited to 'gold/symtab.cc')
-rw-r--r--gold/symtab.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gold/symtab.cc b/gold/symtab.cc
index b31794a5a8c..c872f47d386 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -882,6 +882,7 @@ Symbol_table::define_default_version(Sized_symbol<size>* sym,
;
else if (pdef->second->is_from_dynobj()
&& sym->is_from_dynobj()
+ && pdef->second->is_defined()
&& pdef->second->object() != sym->object())
;
else