binutils Newspaper
OCTOBER 6, 2026
alpha — Proposed

alpha: support IFUNC symbols in non-PIC links

Enables IFUNC symbol support in non-Position-Independent Code (PIC) links on Alpha.

This patch enables support for indirect function (IFUNC) symbols in non-PIC (Position-Independent Code) links on the Alpha architecture. Previously, non-PIC links lacked a mechanism to reserve dynamic relocations for IFUNCs, leading to failures. This change introduces a new .rela.iplt section to store these relocations, ensuring they are correctly processed by the dynamic linker (ld.so) or the C library’s startup code, thereby allowing IFUNCs to function in static executables.

In Details

This patch enables IFUNC symbol support in non-PIC links for Alpha by introducing the .rela.iplt section. In PIC links, R_ALPHA_IRELATIVE relocations are used, but non-PIC links did not have a corresponding mechanism. This change ensures that IFUNC references in non-PIC executables are placed in .rela.iplt, which is processed by ld.so or libc startup. It also refines the sizing of .rela.iplt to be exact and handles the marking of GOT entries during relaxation, ensuring correct IFUNC resolution in static executables.

For Context
IFUNC
Indirect Function. A mechanism allowing functions to be resolved at runtime, often used for performance optimization or selecting architecture-specific implementations.
non-PIC links
Linker operations that produce Position-Dependent Code, where addresses are fixed relative to the program's base.
PIC
Position-Independent Code. Code that can be loaded and run at any memory address without modification.
dynamic relocation
A relocation entry that is processed by the dynamic linker at runtime to resolve symbols or fix addresses in shared libraries or dynamically linked executables.
.rela.iplt
A section in an ELF object file that holds relocation entries for the Indirect Procedure Linkage Table, used for resolving IFUNCs.
GOT
Global Offset Table. A table used in position-independent code to store addresses of functions and global variables, enabling indirect access.
Filed Under: binutilsalphalinkerIFUNCPIC