aboutsummaryrefslogtreecommitdiff
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
parent07619d52fef6fda58cbc327512a4d8ec60ad5637 (diff)
downloadgdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.zip
gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.tar.gz
gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.tar.bz2
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.
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/symtab.cc1
2 files changed, 7 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index d791d29..1e01a4a 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2016-09-26 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/20238
+ * symtab.cc (Symbol_table::define_default_version): Check that
+ unversioned symbol is defined.
+
2016-09-26 Vlad Zakharov <vzakhar@synopsys.com>
* Makefile.in: Regenerate.
diff --git a/gold/symtab.cc b/gold/symtab.cc
index b31794a..c872f47 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