This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Improve IFUNC check
- From: Aurelien Jarno <aurelien at aurel32 dot net>
- To: Fangrui Song <maskray at google dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Thu, 6 Feb 2020 13:24:22 +0100
- Subject: Re: [PATCH] Improve IFUNC check
- References: <20200205060922.5pbgm5hfj2r6vrl2@google.com>
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