[PATCH 0/2] elf: Fix IFUNC resolvers running under ldd [BZ #34428]
Adhemerval Zanella
adhemerval.zanella@linaro.org
Sun Aug 2 23:44:02 GMT 2026
Patch 1 fixes the BZ 34428 regression. The non-IRELATIVE pass stopped
propagating skip_ifunc, on the assumption that the deferred pass handles
everything that can run a resolver. That only holds for IFUNCs defined in
the object being relocated; a reference to an IFUNC in another object is an
ordinary JMP_SLOT/GLOB_DAT against an undefined symbol, which is
triggered by ldd -u/-r.
Patch 2 fixes a latent mismatch found while auditing the same split. It
is not observable on any current port.
Adhemerval Zanella (2):
elf: Honour skip_ifunc for cross-object IFUNC relocations [BZ #34428]
elf: Use the effective lazy mode for the deferred IRELATIVE pass
elf/Makefile | 28 ++++++++++++++++++
elf/dl-reloc-static-pie.c | 7 +++--
elf/dl-reloc.c | 6 ++--
elf/do-rel.h | 24 ++++++++++------
elf/dynamic-link.h | 47 ++++++++++++++++++++-----------
elf/tst-ifunc-fault-dep-bindnow.c | 19 +++++++++++++
elf/tst-ifunc-fault-dep-lazy.c | 27 ++++++++++++++++++
elf/tst-ifunc-fault-mod.c | 38 +++++++++++++++++++++++++
8 files changed, 168 insertions(+), 28 deletions(-)
create mode 100644 elf/tst-ifunc-fault-dep-bindnow.c
create mode 100644 elf/tst-ifunc-fault-dep-lazy.c
create mode 100644 elf/tst-ifunc-fault-mod.c
--
2.53.0
More information about the Libc-alpha
mailing list