[PATCH v2 0/2] elf: Fix IFUNC resolvers running under ldd [BZ #34428]
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Aug 3 14:02:52 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 | 12 ++-
elf/dl-reloc.c | 7 +-
elf/do-rel.h | 24 ++++--
elf/dynamic-link.h | 123 +++++++++++++++---------------
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, 202 insertions(+), 76 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