aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/symtab.cc7
2 files changed, 13 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index e03536b..bce42df 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-30 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/16979
+ * symtab.cc (Symbol_table::define_default_version): Check for case
+ where symbols are both in different shared objects.
+
2016-03-27 Cary Coutant <ccoutant@gmail.com>
PR gold/16111
diff --git a/gold/symtab.cc b/gold/symtab.cc
index fd75aff..a7edbb1 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -865,6 +865,9 @@ Symbol_table::define_default_version(Sized_symbol<size>* sym,
// other is defined in a shared object, then they are different
// symbols.
+ // If the two symbols are from different shared objects,
+ // they are different symbols.
+
// Otherwise, we just resolve the symbols as though they were
// the same.
@@ -876,6 +879,10 @@ Symbol_table::define_default_version(Sized_symbol<size>* sym,
else if (pdef->second->visibility() != elfcpp::STV_DEFAULT
&& sym->is_from_dynobj())
;
+ else if (pdef->second->is_from_dynobj()
+ && sym->is_from_dynobj()
+ && pdef->second->object() != sym->object())
+ ;
else
{
const Sized_symbol<size>* symdef;