PR ld/15302
* elf32-arm.c (allocate_dynrelocs_for_symbol): Transform ST_BRANCH_TO_ARM into ST_BRANCH_TO_THUMB if the target only supports thumb instructions. PR ld/15302 * ld-arm/branch-lks-sym.ld: New script. * ld-arm/thumb-b-lks-sym.s: New test. * ld-arm/thumb-b-lks-sym.d: Expected disassembly. * ld-arm/thumb-bl-lks-sym.s: New test. * ld-arm/thumb-bl-lks-sym.d: Expected disassembly. * ld-arm/arm-elf.exp: Run the new tests.
This commit is contained in:
parent
909c7f9cbf
commit
2f47f5fc13
@ -1,3 +1,10 @@
|
|||||||
|
2013-06-13 Terry Guo <terry.guo@arm.com>
|
||||||
|
|
||||||
|
PR ld/15302
|
||||||
|
* elf32-arm.c (allocate_dynrelocs_for_symbol): Transform
|
||||||
|
ST_BRANCH_TO_ARM into ST_BRANCH_TO_THUMB if the target only
|
||||||
|
supports thumb instructions.
|
||||||
|
|
||||||
2013-06-11 DJ Delorie <dj@redhat.com>
|
2013-06-11 DJ Delorie <dj@redhat.com>
|
||||||
|
|
||||||
* elf32-rl78.c (rl78_elf_relocate_section): Fix OPsub math.
|
* elf32-rl78.c (rl78_elf_relocate_section): Fix OPsub math.
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/* 32-bit ELF support for ARM
|
/* 32-bit ELF support for ARM
|
||||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
Copyright 1998-2013 Free Software Foundation, Inc.
|
||||||
2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -13341,6 +13340,12 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
|
|||||||
h->root.u.def.value = th->root.u.def.value & ~1;
|
h->root.u.def.value = th->root.u.def.value & ~1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make sure we are not applying ST_BRANCH_TO_ARM to symbols
|
||||||
|
for thumb-only targets. */
|
||||||
|
if (using_thumb_only (htab)
|
||||||
|
&& h->target_internal == ST_BRANCH_TO_ARM)
|
||||||
|
h->target_internal = ST_BRANCH_TO_THUMB;
|
||||||
|
|
||||||
if (eh->dyn_relocs == NULL)
|
if (eh->dyn_relocs == NULL)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
2013-06-13 Terry Guo <terry.guo@arm.com>
|
||||||
|
|
||||||
|
PR ld/15302
|
||||||
|
* ld-arm/branch-lks-sym.ld: New script.
|
||||||
|
* ld-arm/thumb-b-lks-sym.s: New test.
|
||||||
|
* ld-arm/thumb-b-lks-sym.d: Expected disassembly.
|
||||||
|
* ld-arm/thumb-bl-lks-sym.s: New test.
|
||||||
|
* ld-arm/thumb-bl-lks-sym.d: Expected disassembly.
|
||||||
|
* ld-arm/arm-elf.exp: Run the new tests.
|
||||||
|
|
||||||
2013-06-07 Will Newton <will.newton@linaro.org>
|
2013-06-07 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
* ld-ifunc/ifunc.exp: Enable ifunc tests for AArch64.
|
* ld-ifunc/ifunc.exp: Enable ifunc tests for AArch64.
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
# Expect script for various ARM ELF tests.
|
# Expect script for various ARM ELF tests.
|
||||||
# Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012
|
# Copyright 2002-2013 Free Software Foundation, Inc.
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
#
|
||||||
# This file is part of the GNU Binutils.
|
# This file is part of the GNU Binutils.
|
||||||
#
|
#
|
||||||
@ -557,6 +556,12 @@ set armeabitests_common {
|
|||||||
{"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" "" {thumb2-bl-bad.s}
|
{"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" "" {thumb2-bl-bad.s}
|
||||||
{{objdump -d thumb2-bl-bad.d}}
|
{{objdump -d thumb2-bl-bad.d}}
|
||||||
"thumb2-bl-bad"}
|
"thumb2-bl-bad"}
|
||||||
|
{"Branch to linker script symbol with BL for thumb-only target" "-T branch-lks-sym.ld" "" "" {thumb-bl-lks-sym.s}
|
||||||
|
{{objdump -d thumb-bl-lks-sym.d}}
|
||||||
|
"thumb-bl-lks-sym"}
|
||||||
|
{"Branch to linker script symbol with B for thumb-only target" "-T branch-lks-sym.ld" "" "" {thumb-b-lks-sym.s}
|
||||||
|
{{objdump -d thumb-b-lks-sym.d}}
|
||||||
|
"thumb-b-lks-sym"}
|
||||||
|
|
||||||
{"ARM-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" "" {farcall-arm-arm.s}
|
{"ARM-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" "" {farcall-arm-arm.s}
|
||||||
{{objdump -d farcall-arm-arm.d}}
|
{{objdump -d farcall-arm-arm.d}}
|
||||||
|
1
ld/testsuite/ld-arm/branch-lks-sym.ld
Normal file
1
ld/testsuite/ld-arm/branch-lks-sym.ld
Normal file
@ -0,0 +1 @@
|
|||||||
|
extFunc = 0x1000 + 1;
|
7
ld/testsuite/ld-arm/thumb-b-lks-sym.d
Normal file
7
ld/testsuite/ld-arm/thumb-b-lks-sym.d
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
.*: file format.*
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00000000 <main>:
|
||||||
|
0: f000 bffe b.w 1000 <extFunc>
|
16
ld/testsuite/ld-arm/thumb-b-lks-sym.s
Normal file
16
ld/testsuite/ld-arm/thumb-b-lks-sym.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
@ Test to ensure that the b to linker script symbol isn't changed to other format.
|
||||||
|
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.cpu cortex-m3
|
||||||
|
.fpu softvfp
|
||||||
|
.thumb
|
||||||
|
.file "x.c"
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global main
|
||||||
|
.thumb
|
||||||
|
.thumb_func
|
||||||
|
.type main, %function
|
||||||
|
main:
|
||||||
|
b extFunc
|
12
ld/testsuite/ld-arm/thumb-bl-lks-sym.d
Normal file
12
ld/testsuite/ld-arm/thumb-bl-lks-sym.d
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
.*: file format.*
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00000000 <main>:
|
||||||
|
0: b580 push {r7, lr}
|
||||||
|
2: af00 add r7, sp, #0
|
||||||
|
4: f000 fffc bl 1000 <extFunc>
|
||||||
|
8: bd80 pop {r7, pc}
|
||||||
|
a: bf00 nop
|
||||||
|
|
19
ld/testsuite/ld-arm/thumb-bl-lks-sym.s
Normal file
19
ld/testsuite/ld-arm/thumb-bl-lks-sym.s
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@ Test to ensure that the bl to linker script symbol isn't changed to blx with immediate address.
|
||||||
|
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.cpu cortex-m3
|
||||||
|
.fpu softvfp
|
||||||
|
.thumb
|
||||||
|
.file "x.c"
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global main
|
||||||
|
.thumb
|
||||||
|
.thumb_func
|
||||||
|
.type main, %function
|
||||||
|
main:
|
||||||
|
push {r7, lr}
|
||||||
|
add r7, sp, #0
|
||||||
|
bl extFunc
|
||||||
|
pop {r7, pc}
|
Loading…
Reference in New Issue
Block a user