bfd/elf32-arm.c: Set st_value to zero for undefined symbols
Unless pointer_equality_needed is set then set st_value to be zero for undefined symbols. bfd/ChangeLog: 2014-03-20 Will Newton <will.newton@linaro.org> PR ld/16715 * elf32-arm.c (elf32_arm_check_relocs): Set pointer_equality_needed for absolute references within executable links. (elf32_arm_finish_dynamic_symbol): Set st_value to zero unless pointer_equality_needed is set. ld/testsuite/ChangeLog: 2014-03-20 Will Newton <will.newton@linaro.org> * ld-arm/ifunc-14.rd: Update symbol values.
This commit is contained in:
parent
e1f8f1b3af
commit
97323ad113
4 changed files with 21 additions and 3 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2014-03-20 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
|
PR ld/16715
|
||||||
|
* elf32-arm.c (elf32_arm_check_relocs): Set
|
||||||
|
pointer_equality_needed for absolute references within
|
||||||
|
executable links.
|
||||||
|
(elf32_arm_finish_dynamic_symbol): Set st_value to zero
|
||||||
|
unless pointer_equality_needed is set.
|
||||||
|
|
||||||
2014-03-19 Nick Clifton <nickc@redhat.com>
|
2014-03-19 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* peXXigen.c (rsrc_process_section): Add code to scan input
|
* peXXigen.c (rsrc_process_section): Add code to scan input
|
||||||
|
|
|
@ -12800,6 +12800,11 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
case R_ARM_ABS32:
|
case R_ARM_ABS32:
|
||||||
case R_ARM_ABS32_NOI:
|
case R_ARM_ABS32_NOI:
|
||||||
|
if (h != NULL && info->executable)
|
||||||
|
{
|
||||||
|
h->pointer_equality_needed = 1;
|
||||||
|
}
|
||||||
|
/* Fall through. */
|
||||||
case R_ARM_REL32:
|
case R_ARM_REL32:
|
||||||
case R_ARM_REL32_NOI:
|
case R_ARM_REL32_NOI:
|
||||||
case R_ARM_MOVW_PREL_NC:
|
case R_ARM_MOVW_PREL_NC:
|
||||||
|
@ -14165,7 +14170,7 @@ elf32_arm_finish_dynamic_symbol (bfd * output_bfd,
|
||||||
Otherwise, the PLT entry would provide a definition for
|
Otherwise, the PLT entry would provide a definition for
|
||||||
the symbol even if the symbol wasn't defined anywhere,
|
the symbol even if the symbol wasn't defined anywhere,
|
||||||
and so the symbol would never be NULL. */
|
and so the symbol would never be NULL. */
|
||||||
if (!h->ref_regular_nonweak)
|
if (!h->ref_regular_nonweak || !h->pointer_equality_needed)
|
||||||
sym->st_value = 0;
|
sym->st_value = 0;
|
||||||
}
|
}
|
||||||
else if (eh->is_iplt && eh->plt.noncall_refcount != 0)
|
else if (eh->is_iplt && eh->plt.noncall_refcount != 0)
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2014-03-20 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
|
* ld-arm/ifunc-14.rd: Update symbol values.
|
||||||
|
|
||||||
2014-03-19 Nick Clifton <nickc@redhat.com>
|
2014-03-19 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* config/default.exp (ASFLAGS): For the RX target add:
|
* config/default.exp (ASFLAGS): For the RX target add:
|
||||||
|
|
|
@ -8,5 +8,5 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 4 entries:
|
||||||
|
|
||||||
Relocation section '\.rel\.plt' at offset 0x8020 contains 2 entries:
|
Relocation section '\.rel\.plt' at offset 0x8020 contains 2 entries:
|
||||||
Offset Info Type Sym\.Value Sym\. Name
|
Offset Info Type Sym\.Value Sym\. Name
|
||||||
0001100c ......16 R_ARM_JUMP_SLOT 00009014 f2t
|
0001100c ......16 R_ARM_JUMP_SLOT 00000000 f2t
|
||||||
00011010 ......16 R_ARM_JUMP_SLOT 00009020 f2
|
00011010 ......16 R_ARM_JUMP_SLOT 00000000 f2
|
||||||
|
|
Loading…
Reference in a new issue