aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-arm.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 14abe01..6c5739a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2013-04-29 Will Newton <will.newton@linaro.org>
+ * elf32-arm.c (elf32_arm_populate_plt_entry): Call
+ elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs.
+
+2013-04-29 Will Newton <will.newton@linaro.org>
+
* elf64-aarch64.c (elf64_aarch64_check_relocs): Move relocation
error check up and add error message.
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 6201e60..2ed4741 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -7699,8 +7699,13 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
sgot->contents + got_offset);
}
- loc = srel->contents + plt_index * RELOC_SIZE (htab);
- SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
+ if (dynindx == -1)
+ elf32_arm_add_dynreloc (output_bfd, info, srel, &rel);
+ else
+ {
+ loc = srel->contents + plt_index * RELOC_SIZE (htab);
+ SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
+ }
}
/* Some relocations map to different relocations depending on the