diff options
-rw-r--r-- | gold/ChangeLog | 6 | ||||
-rw-r--r-- | gold/symtab.cc | 7 |
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; |