cd6eab1c16
may_use_blx_. (Target_arm::may_use_blx): Remove method. (Target_arm::set_may_use_blx): Likewise. (Target_arm::may_use_v4t_interworking): New method. (Target_arm::may_use_v5t_interworking): Likewise. (Target_arm::may_use_blx_): Remove member variable. (Arm_relocate_functions::arm_branch_common): Check for v5T interworking. (Arm_relocate_functions::thumb_branch_common): Likewise. (Reloc_stub::stub_type_for_reloc): Likewise. (Target_arm::do_finalize_sections): Correct interworking checks. * testsuite/Makefile.am: Add new tests. * testsuite/Makefile.in: Regenerate. * testsuite/arm_farcall_arm_arm.s: New test. * testsuite/arm_farcall_arm_arm.sh: Likewise. * testsuite/arm_farcall_arm_thumb.s: Likewise. * testsuite/arm_farcall_arm_thumb.sh: Likewise. * testsuite/arm_farcall_thumb_arm.s: Likewise. * testsuite/arm_farcall_thumb_arm.sh: Likewise. * testsuite/arm_farcall_thumb_thumb.s: Likewise. * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
28 lines
509 B
ArmAsm
28 lines
509 B
ArmAsm
@ Test to ensure that a Thumb to ARM call exceeding 4Mb generates a stub.
|
|
@ Check that we can generate two types of stub in the same section.
|
|
|
|
.global _start
|
|
.syntax unified
|
|
|
|
@ We will place the section .text at 0x1c01010.
|
|
|
|
.text
|
|
.thumb_func
|
|
_start:
|
|
.global bar
|
|
bl bar
|
|
@ This call is close enough to generate a "short branch" stub
|
|
@ or no stub if blx is available.
|
|
.space 0x0300000
|
|
bl bar
|
|
|
|
@ We will place the section .foo at 0x2001014.
|
|
|
|
.section .foo, "xa"
|
|
|
|
.arm
|
|
.type bar, %function
|
|
bar:
|
|
bx lr
|
|
|