2009-04-15 Christophe Lyon <christophe.lyon@st.com>

bfd/
	* elf32-arm.c (elf32_arm_final_link_relocate): Don't convert ARM
	branch to an undef weak symbol into a jump to next instruction if
	a PLT entry will be created.

	testsuite/
	* ld-arm/arm-elf.exp: Add 1 more test to check undef weak
	reference with PLT in ARM mode.
	* ld-arm/thumb2-bl-undefweak1.d, ld-arm/thumb2-bl-undefweak1.s:
	New files.
This commit is contained in:
Christophe Lyon 2009-04-15 13:49:54 +00:00
parent d8a1b51e44
commit 82b5c97a79
6 changed files with 35 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2009-04-15 Christophe Lyon <christophe.lyon@st.com>
* elf32-arm.c (elf32_arm_final_link_relocate): Don't convert ARM
branch to an undef weak symbol into a jump to next instruction if
a PLT entry will be created.
2009-04-14 Dave Korn <dave.korn.cygwin@gmail.com>
* coffgen.c (make_a_section_from_file): Set the backend long

View file

@ -6363,8 +6363,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
signed_addend >>= howto->rightshift;
/* 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))
{
value = (bfd_get_32 (input_bfd, hit_data) & 0xf0000000)
| 0x0affffff;

View file

@ -1,3 +1,10 @@
2009-04-15 Christophe Lyon <christophe.lyon@st.com>
* ld-arm/arm-elf.exp: Add 1 more test to check undef weak
reference with PLT in ARM mode.
* ld-arm/thumb2-bl-undefweak1.d, ld-arm/thumb2-bl-undefweak1.s:
New files.
2009-04-08 H.J. Lu <hongjiu.lu@intel.com>
* ld-i386/abs.d: Add --32 for assembler and -melf_i386 for

View file

@ -185,6 +185,7 @@ 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 "thumb2-bl-undefweak1"
run_dump_test "emit-relocs1"
# Exclude non-ARM-EABI targets.

View file

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

View file

@ -0,0 +1,9 @@
@ Test that calls to undefined weak functions resolve to call through
@ the PLT in shared libraries in ARM mode.
.arch armv6
.syntax unified
.text
foo:
bl bar
.weak bar