mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
ba85c15dab
IFUNC resolvers must always be called via their global entry point. They will be called from ld.so rather than from the local executable. PR 23937 bfd/ * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't add local entry offset for ifuncs. ld/ * testsuite/ld-powerpc/pr23937.d, * testsuite/ld-powerpc/pr23937.s: New test. * testsuite/ld-powerpc/powerpc.exp: Run it.
66 lines
1.1 KiB
ArmAsm
66 lines
1.1 KiB
ArmAsm
.abiversion 2
|
|
.text
|
|
.p2align 4,,15
|
|
.type implementation, @function
|
|
implementation:
|
|
.LCF0:
|
|
addis 2,12,.TOC.-.LCF0@ha
|
|
addi 2,2,.TOC.-.LCF0@l
|
|
.localentry implementation,.-implementation
|
|
mflr 0
|
|
addis 3,2,.LC0@toc@ha
|
|
addi 3,3,.LC0@toc@l
|
|
std 0,16(1)
|
|
stdu 1,-32(1)
|
|
bl puts
|
|
nop
|
|
addi 1,1,32
|
|
li 3,0
|
|
ld 0,16(1)
|
|
mtlr 0
|
|
blr
|
|
.size implementation,.-implementation
|
|
|
|
.p2align 4,,15
|
|
.type resolver, @function
|
|
resolver:
|
|
.LCF1:
|
|
addis 2,12,.TOC.-.LCF1@ha
|
|
addi 2,2,.TOC.-.LCF1@l
|
|
.localentry resolver,.-resolver
|
|
addis 3,2,implementation@toc@ha
|
|
addi 3,3,implementation@toc@l
|
|
blr
|
|
.size resolver,.-resolver
|
|
|
|
.type magic, @gnu_indirect_function
|
|
.set magic,resolver
|
|
|
|
.section .text.startup,"ax",@progbits
|
|
.p2align 4,,15
|
|
.globl main
|
|
.type main, @function
|
|
main:
|
|
.LCF2:
|
|
addis 2,12,.TOC.-.LCF2@ha
|
|
addi 2,2,.TOC.-.LCF2@l
|
|
.localentry main,.-main
|
|
mflr 0
|
|
std 0,16(1)
|
|
stdu 1,-32(1)
|
|
bl magic
|
|
nop
|
|
addi 1,1,32
|
|
cntlzw 3,3
|
|
ld 0,16(1)
|
|
srwi 3,3,5
|
|
mtlr 0
|
|
xori 3,3,0x1
|
|
blr
|
|
.size main,.-main
|
|
|
|
.section .rodata.str1.8,"aMS",@progbits,1
|
|
.p2align 3
|
|
.LC0:
|
|
.string "'ere I am JH"
|