Default powerpc64 to --plt-thread-safe for Go
authorAlan Modra <amodra@gmail.com>
Wed, 19 Nov 2014 22:22:46 +0000 (08:52 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 19 Nov 2014 22:33:31 +0000 (09:03 +1030)
Go is multi-threaded, so use thread-safe plt stubs.  __go_go doesn't
actually start threads, but is a convenient libgo function with a
reasonably unique name that is called by all Go executables.  (Threads
are started by a static function of libgo, runtime_newosproc, called
by a whole lot of global functions, including runtime_starttheworld
and runtime_main.)

bfd/
* elf64-ppc.c (ppc64_elf_size_stubs): Add __go_go to thread_starters.
gold/
* powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.

bfd/ChangeLog
bfd/elf64-ppc.c
gold/ChangeLog
gold/powerpc.cc

index f5ee80c..8ac4034 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-20  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_size_stubs): Add __go_go to thread_starters.
+
 2014-11-18  Igor Zamyatin  <igor.zamyatin@intel.com>
 
        * elf64-x86-64.c (elf_x86_64_check_relocs): Enable MPX PLT only
index 0b65ab1..901a88d 100644 (file)
@@ -11979,6 +11979,8 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
          "GOMP_parallel_loop_runtime_start",
          "GOMP_parallel_sections",
          "GOMP_parallel_sections_start",
+         /* libgo */
+         "__go_go",
        };
       unsigned i;
 
index 88dd58f..b3f7c36 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-20  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.
+
 2014-10-28  Alan Modra  <amodra@gmail.com>
 
        Apply trunk patches
index 828bc16..500be1f 100644 (file)
@@ -2720,6 +2720,8 @@ Target_powerpc<size, big_endian>::do_relax(int pass,
              "GOMP_parallel_loop_runtime_start",
              "GOMP_parallel_sections",
              "GOMP_parallel_sections_start",
+             /* libgo */
+             "__go_go",
            };
 
          if (parameters->options().shared())