3db2e7dda6
bfd/ 2012-01-06 H.J. Lu <hongjiu.lu@intel.com> PR ld/12366 PR ld/12371 * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Properly handle symbols marked with regular reference, but not non-GOT reference when building shared library. * elf32-i386.c (elf_i386_gc_sweep_hook): Properly handle local and global STT_GNU_IFUNC symols when building shared library. * elf64-x86-64.c (elf_x86_64_gc_sweep_hook): Likewise. ld/testsuite/ 2012-01-06 H.J. Lu <hongjiu.lu@intel.com> PR ld/12366 PR ld/12371 * ld-ifunc/ifunc-10-i386.s: Add more tests. * ld-ifunc/ifunc-10-x86-64.s: Likewise. * ld-ifunc/ifunc-11-i386.s: Likewise. * ld-ifunc/ifunc-11-x86-64.s: Likewise. * ld-ifunc/ifunc-12-i386.d: New. * ld-ifunc/ifunc-12-i386.s: Likewise. * ld-ifunc/ifunc-12-x86-64.d: Likewise. * ld-ifunc/ifunc-12-x86-64.s: Likewise. * ld-ifunc/ifunc-13-i386.d: Likewise. * ld-ifunc/ifunc-13-x86-64.d: Likewise. * ld-ifunc/ifunc-13a-i386.s: Likewise. * ld-ifunc/ifunc-13a-x86-64.s: Likewise. * ld-ifunc/ifunc-13b-i386.s: Likewise. * ld-ifunc/ifunc-13b-x86-64.s: Likewise.
26 lines
524 B
ArmAsm
26 lines
524 B
ArmAsm
.section .text.foo,"ax",@progbits
|
|
.type foo, @function
|
|
foo:
|
|
movl ifunc@GOT(%ecx), %eax
|
|
movl ifunc@GOTOFF(%ecx), %eax
|
|
call ifunc@PLT
|
|
call ifunc
|
|
movl xxx@GOT(%ecx), %eax
|
|
movl xxx, %eax
|
|
ret
|
|
|
|
.section .text.bar,"ax",@progbits
|
|
.type bar, @function
|
|
bar:
|
|
.global bar
|
|
ret
|
|
|
|
.section .text.ifunc,"ax",@progbits
|
|
.type ifunc, @gnu_indirect_function
|
|
ifunc:
|
|
ret
|
|
|
|
.section .data.foo,"aw",@progbits
|
|
xxx:
|
|
.long ifunc
|