[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