022f83127a
bfd/ * elf32-arm.c (elf32_arm_size_stubs): Use PLT address as destination for defined dynamic symbols when deciding whether to insert a stub or not. (allocate_dynrelocs): Make sure functions are not marked as Thumb when actually accessed through a PLT, even when generating a shared lib. ld/testsuite: * ld-arm/farcall-mixed-app.s: Add new references to check more modes switching. * ld-arm/farcall-mixed-lib1.s: Likewise. * ld-arm/farcall-mixed-app-v5.d: Update expected result. * farcall-mixed-app.d: Likewise. * ld-arm/farcall-mixed-lib.d: Likewise.
61 lines
881 B
ArmAsm
61 lines
881 B
ArmAsm
.text
|
|
.p2align 4
|
|
.globl _start
|
|
_start:
|
|
mov ip, sp
|
|
stmdb sp!, {r11, ip, lr, pc}
|
|
bl app_func
|
|
bl lib_func1
|
|
bl lib_func2
|
|
ldmia sp, {r11, sp, lr}
|
|
bx lr
|
|
|
|
.p2align 4
|
|
.globl app_tfunc_close
|
|
.type app_tfunc_close,%function
|
|
.thumb_func
|
|
.code 16
|
|
app_tfunc_close:
|
|
push {lr}
|
|
bl lib_func2
|
|
pop {pc}
|
|
bx lr
|
|
|
|
@ We will place the section .far_arm at 0x2100000.
|
|
.section .far_arm, "xa"
|
|
|
|
.arm
|
|
.p2align 4
|
|
.globl app_func
|
|
.type app_func,%function
|
|
app_func:
|
|
mov ip, sp
|
|
stmdb sp!, {r11, ip, lr, pc}
|
|
bl lib_func1
|
|
bl lib_func2
|
|
ldmia sp, {r11, sp, lr}
|
|
bx lr
|
|
|
|
.arm
|
|
.p2align 4
|
|
.globl app_func2
|
|
.type app_func2,%function
|
|
app_func2:
|
|
bx lr
|
|
|
|
@ We will place the section .far_thumb at 0x2200000.
|
|
.section .far_thumb, "xa"
|
|
|
|
.p2align 4
|
|
.globl app_tfunc
|
|
.type app_tfunc,%function
|
|
.thumb_func
|
|
.code 16
|
|
app_tfunc:
|
|
push {lr}
|
|
bl lib_func2
|
|
pop {pc}
|
|
bx lr
|
|
|
|
.data
|
|
.long data_obj
|