Re: PowerPC PIC vs. DLL TLS issues
authorAlan Modra <amodra@gmail.com>
Mon, 7 Oct 2019 12:44:31 +0000 (23:14 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 8 Oct 2019 14:04:47 +0000 (00:34 +1030)
A bug crept into commit f749f26eea, which could cause linker
segfaults when creating PIEs.  This patch fixes it.

* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Do allocate
space for local got non-tls relocs when PIE.

(cherry picked from commit 93370e8e7b406cf0aeedcf57cf457c07d6a2c7e6)

bfd/ChangeLog
bfd/elf64-ppc.c

index 562aa63..3c0c42b 100644 (file)
@@ -1,6 +1,10 @@
 2019-10-09  Alan Modra  <amodra@gmail.com>
 
        Apply from master
+       2019-10-07  Alan Modra  <amodra@gmail.com>
+       * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Do allocate
+       space for local got non-tls relocs when PIE.
+
        2019-10-04  Alan Modra  <amodra@gmail.com>
        * elf64-ppc.c (ppc64_elf_check_relocs): Move initialisation of vars.
        (ppc64_elf_tls_optimize): Correct is_local condition.
index 144c731..5d6443e 100644 (file)
@@ -9781,7 +9781,9 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd,
                        htab->elf.irelplt->size += rel_size;
                        htab->got_reli_size += rel_size;
                      }
-                   else if (bfd_link_dll (info))
+                   else if (bfd_link_pic (info)
+                            && !(ent->tls_type != 0
+                                 && bfd_link_executable (info)))
                      {
                        asection *srel = ppc64_elf_tdata (ibfd)->relgot;
                        srel->size += rel_size;