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>
Mon, 7 Oct 2019 12:53:21 +0000 (23:23 +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.

bfd/ChangeLog
bfd/elf64-ppc.c

index 607f37cfb27533a8022169c6667ce575167c1d23..72737181b0daef63a3554e3a7984c98b8a147075 100644 (file)
@@ -1,3 +1,8 @@
+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-07  Alan Modra  <amodra@gmail.com>
 
        * elflink.c (elf_fixup_link_order): Don't attempt to find
index 842fc40f1447b768a2db98a9664d9d7fdf55e8f8..32ed81d98e34a417bde89e9db116d1a1de5b9329 100644 (file)
@@ -9814,7 +9814,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;