[PATCH] Improve IFUNC check
Aurelien Jarno
aurelien@aurel32.net
Thu Feb 6 12:25:00 GMT 2020
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
And for the PIE case:
| Relocation section '.rela.dyn' at offset 0x290 contains 1 entry:
| Offset Info Type Sym. Value Sym. Name + Addend
| 0000001021a0 0000000000f9 R_SPARC_IRELATIVE 2c0
|
| Relocation section '.rela.plt' at offset 0x2a8 contains 1 entry:
| Offset Info Type Sym. Value Sym. Name + Addend
| 000000102180 0000000000f8 R_SPARC_JMP_IREL 2c0
Looks like you might want to slightly adjust the regex.
Also note that this is BZ#25506, to add to the commit message.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
More information about the Libc-alpha
mailing list