Minor fix for R_PPC_VLE_ADDR20
authorAlan Modra <amodra@gmail.com>
Tue, 4 Feb 2020 11:04:45 +0000 (21:34 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 4 Feb 2020 11:26:29 +0000 (21:56 +1030)
It is incorrect to "continue" in the ppc_elf_relocate_section reloc
processing loop except when editing or deleting relocs.  The normal
loop processing arranges to write the relocs if shuffling them over a
deleted entry.  Deleting only happens for debug sections currently and
those sections won't contain R_PPC_VLE_ADDR20 relocs, so this patch
doesn't fix a bug that would trigger with any normal object file.

* elf32-ppc.c (ppc_elf_relocate_section): After applying
R_PPC_VLE_ADDR20, goto copy_reloc.

bfd/ChangeLog
bfd/elf32-ppc.c

index f758f650340f6d539b7c0dcd4605016edd6a1390..ebe934433092e7af29be9d5529af09d430c5e930 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-04  Alan Modra  <amodra@gmail.com>
+
+       * elf32-ppc.c (ppc_elf_relocate_section): After applying
+       R_PPC_VLE_ADDR20, goto copy_reloc.
+
 2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
 
        * bfd-in2.h: Regenerated.
index 8c2d3943ac1dd7f4793cefbb3c0625dc9a64a628..839d5ff142a7fff40be1fc03b6912fb2cb2bc919 100644 (file)
@@ -8780,7 +8780,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
 
        case R_PPC_VLE_ADDR20:
          ppc_elf_vle_split20 (output_bfd, contents + rel->r_offset, relocation);
-         continue;
+         goto copy_reloc;
 
          /* Relocate against the beginning of the section.  */
        case R_PPC_SECTOFF: