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.
35 lines
651 B
ArmAsm
35 lines
651 B
ArmAsm
@ Create a large shared library so that calls through PLT to an undef
|
|
@ symbol require insertion of a long branch stub.
|
|
@ Check also calls to an undef weak symbol.
|
|
|
|
.text
|
|
.arch armv5t
|
|
|
|
.p2align 4
|
|
.globl lib_func1
|
|
.type lib_func1, %function
|
|
lib_func1:
|
|
mov ip, sp
|
|
stmdb sp!, {r11, ip, lr, pc}
|
|
bl app_func
|
|
.weak app_func_weak
|
|
bl app_func_weak
|
|
bl lib_func3
|
|
bl lib_func4
|
|
ldmia sp, {r11, sp, lr}
|
|
bx lr
|
|
.size lib_func1, . - lib_func1
|
|
|
|
.space 0x1000000
|
|
.p2align 4
|
|
.globl lib_func2
|
|
.type lib_func2, %function
|
|
.thumb_func
|
|
.code 16
|
|
lib_func2:
|
|
bl app_func
|
|
bl app_func_weak
|
|
bl lib_func3
|
|
bl lib_func4
|
|
bx lr
|
|
.size lib_func2, . - lib_func2
|