aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/resolve.cc2
-rw-r--r--gold/symtab.cc1
3 files changed, 9 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 084bd91..36803df 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2009-12-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <espindola@google.com>
* incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
diff --git a/gold/resolve.cc b/gold/resolve.cc
index 2f0479a..89b10b9 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<size>* 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 dd52145..7427f8e 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);