[PATCH 0/2] elf: Fix IFUNC resolvers running under ldd [BZ #34428]

Adhemerval Zanella <[email protected]> Sun, 2 Aug 2026 20:44:02 -0300
Newsgroups gmane.comp.lib.glibc.alpha
Message-ID <[email protected]>
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