Add gcc-4.9 libgomp symbols requiring --plt-thread-safe for power7
authorAlan Modra <amodra@gmail.com>
Tue, 21 Oct 2014 06:36:01 +0000 (17:06 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 21 Oct 2014 06:47:36 +0000 (17:17 +1030)
powerpc64 ld builds plt call stubs with a read barrier to provide
thread safety on lazy plt updates, necessary on multi-threaded apps
with power7 or later weakly ordered memory.  gcc-4.9 libgomp
introduced more functions that could call pthread_create, which means
we have more functions that if referenced in an executable should
cause a default of --plt-thread-safe.

* elf64-ppc.c (ppc64_elf_size_stubs): Add gcc-4.9 libgomp functions
to thread_starter.

bfd/ChangeLog
bfd/elf64-ppc.c

index 1abdeac..04e60a8 100644 (file)
@@ -1,3 +1,8 @@
+2014-10-21  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_size_stubs): Add gcc-4.9 libgomp functions
+       to thread_starter.
+
 2014-10-18  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ppc64_elf_add_symbol_hook): If function code
 2014-10-18  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ppc64_elf_add_symbol_hook): If function code
index efd86a2..e3c06eb 100644 (file)
@@ -11964,11 +11964,17 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
          /* libanl */
          "getaddrinfo_a",
          /* libgomp */
          /* libanl */
          "getaddrinfo_a",
          /* libgomp */
+         "GOMP_parallel",
          "GOMP_parallel_start",
          "GOMP_parallel_start",
+         "GOMP_parallel_loop_static",
          "GOMP_parallel_loop_static_start",
          "GOMP_parallel_loop_static_start",
+         "GOMP_parallel_loop_dynamic",
          "GOMP_parallel_loop_dynamic_start",
          "GOMP_parallel_loop_dynamic_start",
+         "GOMP_parallel_loop_guided",
          "GOMP_parallel_loop_guided_start",
          "GOMP_parallel_loop_guided_start",
+         "GOMP_parallel_loop_runtime",
          "GOMP_parallel_loop_runtime_start",
          "GOMP_parallel_loop_runtime_start",
+         "GOMP_parallel_sections",
          "GOMP_parallel_sections_start",
        };
       unsigned i;
          "GOMP_parallel_sections_start",
        };
       unsigned i;