diff options
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/symtab.cc | 6 |
2 files changed, 10 insertions, 1 deletions
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 <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 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()) |