old-cross-binutils/ld/testsuite/ld-aarch64/farcall-b-gsym.s
Jiong Wang 07f9ddfeba [AArch64] PR18668, repair long branch veneer for plt stub
2015-08-11  Jiong Wang  <jiong.wang@arm.com>
bfd/
   PR ld/18668
   * elfnn-aarch64.c (aarch64_type_of_stub): Update destination for
   calls go through plt stub.
   (elfNN_aarch64_final_link_relocate): Adjust code logic for CALL26,
   JUMP26 relocation to support inserting veneer for call to plt stub.

ld/testsuite/
   * ld-aarch64/farcall-b-gsym.s: New test.
   * ld-aarch64/farcall-b-plt.s: Likewise.
   * ld-aarch64/farcall-bl-plt.s: Likewise.
   * ld-aarch64/farcall-b-gsym.d: New expect file.
   * ld-aarch64/farcall-b-plt.d: Likewise.
   * ld-aarch64/farcall-bl-plt.d: Likewise.
2015-08-11 21:44:31 +01:00

17 lines
366 B
ArmAsm

.global _start
.global bar_gsym
# We will place the section .text at 0x1000.
.text
_start:
# for long jump (JUMP26) to global symbol, we shouldn't insert veneer
# as the veneer will clobber IP0/IP1 which is caller saved, gcc only
# reserve them for function call relocation (CALL26).
b bar_gsym
# ((1 << 25) - 1) << 2
.skip 134217724, 0
bar_gsym:
nop
ret