diff --git a/gold/ChangeLog b/gold/ChangeLog index 084bd91ca6..36803df08b 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2009-12-04 H.J. Lu + + * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL. + (Symbol_table::override_with_special): Likewise. + (Symbol_table::add_from_object): Likewise. + 2009-12-04 Rafael Avila de Espindola * incremental.cc (Incremental_inputs::sized_create_inputs_section_data): diff --git a/gold/resolve.cc b/gold/resolve.cc index 2f0479ac85..89b10b9f9a 100644 --- a/gold/resolve.cc +++ b/gold/resolve.cc @@ -178,6 +178,7 @@ symbol_to_bits(elfcpp::STB binding, bool is_dynamic, switch (binding) { case elfcpp::STB_GLOBAL: + case elfcpp::STB_GNU_UNIQUE: bits = global_flag; break; @@ -883,6 +884,7 @@ Symbol_table::override_with_special(Sized_symbol* tosym, || ((tosym->visibility() == elfcpp::STV_HIDDEN || tosym->visibility() == elfcpp::STV_INTERNAL) && (tosym->binding() == elfcpp::STB_GLOBAL + || tosym->binding() == elfcpp::STB_GNU_UNIQUE || tosym->binding() == elfcpp::STB_WEAK) && !parameters->options().relocatable())) this->force_local(tosym); diff --git a/gold/symtab.cc b/gold/symtab.cc index dd52145607..7427f8e03f 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -1010,6 +1010,7 @@ Symbol_table::add_from_object(Object* object, if ((ret->visibility() == elfcpp::STV_HIDDEN || ret->visibility() == elfcpp::STV_INTERNAL) && (ret->binding() == elfcpp::STB_GLOBAL + || ret->binding() == elfcpp::STB_GNU_UNIQUE || ret->binding() == elfcpp::STB_WEAK) && !parameters->options().relocatable()) this->force_local(ret);