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.
This commit is contained in:
Ian Coolidge 2015-04-20 18:04:07 -07:00 committed by Cary Coutant
parent efdacec57c
commit 4b889c3013
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2015-04-20 Ian Coolidge <icoolidge@google.com>
* symtab.cc (Symbol::should_add_dynsym_entry): Return true for
GNU_UNIQUE.
2015-04-17 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* gc.cc (Garbage_collection::do_transitive_closure): Use back and

View File

@ -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())