From 539300fb929ada830ec7c4002fd59f0d86c823b1 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 1 Jul 2019 11:17:01 +0100 Subject: [PATCH] Correct the calculation of offsets for ARM exidx relocs when performing a partial link. PR 23839 bfd * elf32-arm.c (elf32_arm_update_relocs): Do not include the section VMA in the offset used to update exidx relocs. ld * testsuite/ld-arm/unwind-4.d: Adjust for corrected calculation of exidx relocs. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-arm.c | 2 +- ld/ChangeLog | 6 ++++++ ld/testsuite/ld-arm/unwind-4.d | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 31d4eee240..6c19987843 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2019-07-01 Nick Clifton + + PR 23839 + * elf32-arm.c (elf32_arm_update_relocs): Do not include the + section VMA in the offset used to update exidx relocs. + 2019-06-28 Nick Clifton PR 24708 diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 52fd48f6ec..bcace92421 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -15790,7 +15790,7 @@ elf32_arm_update_relocs (asection *o, eadi = get_arm_elf_section_data (i); edit_list = eadi->u.exidx.unwind_edit_list; edit_tail = eadi->u.exidx.unwind_edit_tail; - offset = o->vma + i->output_offset; + offset = i->output_offset; if (eadi->elf.rel.hdr && eadi->elf.rel.hdr->sh_entsize == rel_hdr->sh_entsize) diff --git a/ld/ChangeLog b/ld/ChangeLog index f7d7af68d5..d23ae59a35 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2019-07-01 Nick Clifton + + PR 23839 + * testsuite/ld-arm/unwind-4.d: Adjust for corrected calculation of + exidx relocs. + 2019-06-28 Alan Modra * testsuite/ld-powerpc/callstub-1.d, diff --git a/ld/testsuite/ld-arm/unwind-4.d b/ld/testsuite/ld-arm/unwind-4.d index 0bed0dc692..6bd4d91bf4 100644 --- a/ld/testsuite/ld-arm/unwind-4.d +++ b/ld/testsuite/ld-arm/unwind-4.d @@ -13,6 +13,8 @@ OFFSET TYPE VALUE 0000000c R_ARM_PREL31 \.text 00000010 R_ARM_PREL31 \.text 00000010 R_ARM_NONE __aeabi_unwind_cpp_pr0 +00000010 R_ARM_PREL31 \.text +00000010 R_ARM_NONE __aeabi_unwind_cpp_pr0 00000018 R_ARM_PREL31 \.text