From: Ian Coolidge Date: Tue, 21 Apr 2015 01:04:07 +0000 (-0700) Subject: Ensure that dynamically loaded libraries won't use separate copies of GNU_UNIQUE... X-Git-Tag: gdb-7.10-release~737 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b889c3013d7d45e2775781c3904b657419db2fa;p=external%2Fbinutils.git Ensure that dynamically loaded libraries won't use separate copies of GNU_UNIQUE symbols. gold/ * symtab.cc (Symbol::should_add_dynsym_entry): Return true for GNU_UNIQUE. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 789ba66..e736d33 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2015-04-20 Ian Coolidge + + * symtab.cc (Symbol::should_add_dynsym_entry): Return true for + GNU_UNIQUE. + 2015-04-17 Rafael Ávila de Espíndola * gc.cc (Garbage_collection::do_transitive_closure): Use back and diff --git a/gold/symtab.cc b/gold/symtab.cc index d4f40c8..c197221 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -419,9 +419,13 @@ Symbol::should_add_dynsym_entry(Symbol_table* symtab) const } // If exporting all symbols or building a shared library, + // or the symbol should be globally unique (GNU_UNIQUE), // and the symbol is defined in a regular object and is // externally visible, we need to add it. - if ((parameters->options().export_dynamic() || parameters->options().shared()) + if ((parameters->options().export_dynamic() + || parameters->options().shared() + || (parameters->options().gnu_unique() + && this->binding() == elfcpp::STB_GNU_UNIQUE)) && !this->is_from_dynobj() && !this->is_undefined() && this->is_externally_visible())