This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Improve IFUNC check
On 2020-02-06 10:53, Fangrui Song wrote:
> On 2020-02-06, Aurelien Jarno wrote:
> > Hi,
> >
> > On 2020-02-04 22:09, Fangrui Song wrote:
> > > GNU ld's RISCV port does not support IFUNC. ld -no-pie produces no
> > > relocation and the test passed incorrectly. Be more rigid by testing
> > > IRELATIVE explicitly.
> >
> > Thanks for your patch and sorry for the time to answer, I was testing it
> > on many architectures. First of all I confirm it fixes the issue when
> > building glibc with PIE on mips* and riscv64. I also confirm it
> > introduces no regression on aarch64, armv5, armv7, hppa, m68k, powerpc,
> > ppc64, ppc64le, s390x and x86_64.
> >
> > However it wrongly detects that IFUNC is not supported on sparc64 when
> > PIE is not in use. Here is the output of of readelf for the non-PIE
> > case:
> >
> > | Relocation section '.rela.dyn' at offset 0x110 contains 1 entry:
> > | Offset Info Type Sym. Value Sym. Name + Addend
> > | 000000200280 0000000000f8 R_SPARC_JMP_IREL 100128
>
> sparc64 -no-pie does not produce an R_SPARC_IRELATIVE. This looks weird.
> All other archs emit an R_*_IRELATIVE.
>
> Can you dump the assembly (including .text and .[i]plt)?
> Or can someone with sparc64 experience answer why sparc64 is different
> here?
Here is the dump of the .iplt section:
Disassembly of section .iplt:
0000000000200200 <.iplt>:
...
200280: 03 00 00 80 sethi %hi(0x20000), %g1
200284: 30 6f ff e7 b,a %xcc, 200220 <__start+0x1000f8>
200288: 01 00 00 00 nop
20028c: 01 00 00 00 nop
200290: 01 00 00 00 nop
200294: 01 00 00 00 nop
200298: 01 00 00 00 nop
20029c: 01 00 00 00 nop
There is no .text nor .plt section.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net