aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-02-04 21:34:45 +1030
committerAlan Modra <amodra@gmail.com>2020-02-04 21:56:29 +1030
commit24872cb30211b650a9360edd2476a6a1dd033cbb (patch)
tree69bca77da9e86cd47cb524adc21a1ee052132cd8
parente8b791227f26871ae0030465f77c14f225135c28 (diff)
downloadbinutils-24872cb30211b650a9360edd2476a6a1dd033cbb.zip
binutils-24872cb30211b650a9360edd2476a6a1dd033cbb.tar.gz
binutils-24872cb30211b650a9360edd2476a6a1dd033cbb.tar.bz2
Minor fix for R_PPC_VLE_ADDR20
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.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-ppc.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f758f65..ebe9344 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 8c2d394..839d5ff 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -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: