diff --git a/gold/ChangeLog b/gold/ChangeLog index e03536bcdc5..bce42dfa46e 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2016-03-30 Cary Coutant + + 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 PR gold/16111 diff --git a/gold/symtab.cc b/gold/symtab.cc index fd75aff0f41..a7edbb1f352 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -865,6 +865,9 @@ Symbol_table::define_default_version(Sized_symbol* 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* 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* symdef;