mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
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.
This commit is contained in:
@ -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>
|
2008-11-25 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* elflink.c (is_reloc_section): New function. Returns true if the
|
* elflink.c (is_reloc_section): New function. Returns true if the
|
||||||
|
@ -6360,8 +6360,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
|
|||||||
int thumb2 = using_thumb2 (globals);
|
int thumb2 = using_thumb2 (globals);
|
||||||
|
|
||||||
/* A branch to an undefined weak symbol is turned into a jump to
|
/* A branch to an undefined weak symbol is turned into a jump to
|
||||||
the next instruction. */
|
the next instruction unless a PLT entry will be created. */
|
||||||
if (h && h->root.type == bfd_link_hash_undefweak)
|
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, 0xe000, hit_data);
|
||||||
bfd_put_16 (input_bfd, 0xbf00, hit_data + 2);
|
bfd_put_16 (input_bfd, 0xbf00, hit_data + 2);
|
||||||
|
@ -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>
|
2008-11-25 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
|
||||||
|
@ -184,6 +184,7 @@ run_dump_test "group-relocs-alu-bad"
|
|||||||
run_dump_test "group-relocs-ldr-bad"
|
run_dump_test "group-relocs-ldr-bad"
|
||||||
run_dump_test "group-relocs-ldrs-bad"
|
run_dump_test "group-relocs-ldrs-bad"
|
||||||
run_dump_test "group-relocs-ldc-bad"
|
run_dump_test "group-relocs-ldc-bad"
|
||||||
|
run_dump_test "thumb2-bl-undefweak"
|
||||||
run_dump_test "emit-relocs1"
|
run_dump_test "emit-relocs1"
|
||||||
|
|
||||||
# Exclude non-ARM-EABI targets.
|
# Exclude non-ARM-EABI targets.
|
||||||
|
9
ld/testsuite/ld-arm/thumb2-bl-undefweak.d
Normal file
9
ld/testsuite/ld-arm/thumb2-bl-undefweak.d
Normal file
@ -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
Normal file
10
ld/testsuite/ld-arm/thumb2-bl-undefweak.s
Normal file
@ -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
|
Reference in New Issue
Block a user