From 4b889c3013d7d45e2775781c3904b657419db2fa Mon Sep 17 00:00:00 2001 From: Ian Coolidge Date: Mon, 20 Apr 2015 18:04:07 -0700 Subject: 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. --- gold/symtab.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gold/symtab.cc') diff --git a/gold/symtab.cc b/gold/symtab.cc index d4f40c8d54..c1972210d6 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()) -- cgit v1.2.3