]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Fix problem where bss symbols for copy relocations are marked local.
authorCary Coutant <ccoutant@gmail.com>
Sat, 14 Nov 2015 19:04:01 +0000 (11:04 -0800)
committerAlan Modra <amodra@gmail.com>
Thu, 10 Dec 2015 13:48:47 +0000 (00:18 +1030)
gold/
PR gold/19244
PR gold/18548
* symtab.cc (Symbol_table::do_define_in_output_data): Check for forced
local symbols only for predefined symbols.

gold/ChangeLog
gold/symtab.cc

index 2b96de547d5cec1c3f58558eeb645ddd4326db55..32bb7ee66ce165db0cc3a12f29b4e1228aee623f 100644 (file)
@@ -1,3 +1,12 @@
+2015-12-10  Alan Modra  <amodra@gmail.com>
+
+       Apply from master.
+       2015-11-14  Cary Coutant  <ccoutant@gmail.com>
+       PR gold/19244
+       PR gold/18548
+       * symtab.cc (Symbol_table::do_define_in_output_data): Check for forced
+       local symbols only for predefined symbols.
+
 2015-11-11  Alan Modra  <amodra@gmail.com>
            Peter Bergner <bergner@vnet.ibm.com>
 
index 6d107a8b634c1aed3f82f2347689f4a28b5f2b70..22a44e0c55d2fa6ebaeba11107f5b8d0b9ccfeda 100644 (file)
@@ -1986,8 +1986,9 @@ Symbol_table::do_define_in_output_data(
     return sym;
   else
     {
-      if (binding == elfcpp::STB_LOCAL
-         || this->version_script_.symbol_is_local(name))
+      if (defined == PREDEFINED
+         && (binding == elfcpp::STB_LOCAL
+             || this->version_script_.symbol_is_local(name)))
        this->force_local(oldsym);
       delete sym;
       return oldsym;