]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
powerpc64-ld infinite loop
authorAlan Modra <amodra@gmail.com>
Wed, 11 Mar 2020 04:13:16 +0000 (14:43 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 11 Mar 2020 05:22:51 +0000 (15:52 +1030)
If this code dealing with possible conversion of inline plt sequences
is ever executed, ld will hang.  A binary with such sequences and of
code size larger than approximately 90% the reach of an unconditional
branch is the trigger.  Oops.

* elf64-ppc.c (ppc64_elf_inline_plt): Do increment rel in for loop.

(cherry picked from commit 435edf0bf231240ccecb474b74ebb49dc8db2633)

bfd/ChangeLog
bfd/elf64-ppc.c

index 702416cd43bd3c35455f1f28ddc6c1a3e222a235..fd102a9cfe0a0c88380716657023609960fd0b7f 100644 (file)
@@ -1,3 +1,7 @@
+2020-03-11  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_inline_plt): Do increment rel in for loop.
+
 2020-02-27  Alan Modra  <amodra@gmail.com>
 
        PR 24511
index 73ea2865fd5521f1e99c34be2bd473ae3c22d4a2..bea722c6b98cdf32ebcbb56928381c1d006500fc 100644 (file)
@@ -7507,7 +7507,7 @@ ppc64_elf_inline_plt (struct bfd_link_info *info)
              return FALSE;
 
            relend = relstart + sec->reloc_count;
-           for (rel = relstart; rel < relend; )
+           for (rel = relstart; rel < relend; rel++)
              {
                enum elf_ppc64_reloc_type r_type;
                unsigned long r_symndx;