Browse Source

bfd:

* elf32-arm.c (elf32_arm_final_link_relocate): Do not turn
	branches to undefine weak symbols into branches to the next
	instruction if creating PLT entries for those symbols.

ld/testsuite:
	* ld-arm/thumb2-bl-undefweak.d, ld-arm/thumb2-bl-undefweak.s: New.
	* ld-arm/arm-elf.exp: Run thumb2-bl-undefweak test.
cgen-1_1-branch
Joseph Myers 18 years ago
parent
commit
1954000798
  1. 6
      bfd/ChangeLog
  2. 5
      bfd/elf32-arm.c
  3. 5
      ld/testsuite/ChangeLog
  4. 1
      ld/testsuite/ld-arm/arm-elf.exp
  5. 9
      ld/testsuite/ld-arm/thumb2-bl-undefweak.d
  6. 10
      ld/testsuite/ld-arm/thumb2-bl-undefweak.s

6
bfd/ChangeLog

@ -1,3 +1,9 @@
2008-11-25 Joseph Myers <joseph@codesourcery.com>
* elf32-arm.c (elf32_arm_final_link_relocate): Do not turn
branches to undefine weak symbols into branches to the next
instruction if creating PLT entries for those symbols.
2008-11-25 Nick Clifton <nickc@redhat.com>
* elflink.c (is_reloc_section): New function. Returns true if the

5
bfd/elf32-arm.c

@ -6360,8 +6360,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
int thumb2 = using_thumb2 (globals);
/* A branch to an undefined weak symbol is turned into a jump to
the next instruction. */
if (h && h->root.type == bfd_link_hash_undefweak)
the next instruction unless a PLT entry will be created. */
if (h && h->root.type == bfd_link_hash_undefweak
&& !(splt != NULL && h->plt.offset != (bfd_vma) -1))
{
bfd_put_16 (input_bfd, 0xe000, hit_data);
bfd_put_16 (input_bfd, 0xbf00, hit_data + 2);

5
ld/testsuite/ChangeLog

@ -1,3 +1,8 @@
2008-11-25 Joseph Myers <joseph@codesourcery.com>
* ld-arm/thumb2-bl-undefweak.d, ld-arm/thumb2-bl-undefweak.s: New.
* ld-arm/arm-elf.exp: Run thumb2-bl-undefweak test.
2008-11-25 Hans-Peter Nilsson <hp@axis.com>
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,

1
ld/testsuite/ld-arm/arm-elf.exp

@ -184,6 +184,7 @@ run_dump_test "group-relocs-alu-bad"
run_dump_test "group-relocs-ldr-bad"
run_dump_test "group-relocs-ldrs-bad"
run_dump_test "group-relocs-ldc-bad"
run_dump_test "thumb2-bl-undefweak"
run_dump_test "emit-relocs1"
# Exclude non-ARM-EABI targets.

9
ld/testsuite/ld-arm/thumb2-bl-undefweak.d

@ -0,0 +1,9 @@
#source: thumb2-bl-undefweak.s
#as:
#ld: -shared
#objdump: -dr
#...
Disassembly of section .text:
.* <foo>:
.*: .... .... blx ... <foo-0x.*>

10
ld/testsuite/ld-arm/thumb2-bl-undefweak.s

@ -0,0 +1,10 @@
@ Test that calls to undefined weak functions resolve to call through
@ the PLT in shared libraries.
.arch armv7
.syntax unified
.text
.thumb_func
foo:
bl bar
.weak bar
Loading…
Cancel
Save