Alpha ELF: Allocate R_ALPHA_IRELATIVE relocation
Alpha ELF backend now defines and supports the R_ALPHA_IRELATIVE dynamic relocation type.
This commit introduces support for the R_ALPHA_IRELATIVE dynamic relocation type on the Alpha architecture. This relocation is used by the dynamic linker (or static executable startup code) to execute an IFUNC’s resolver and store the returned address. The commit assigns the next available number (42) to this relocation and adds its definition to the BFD reloc map and the Alpha ELF header, preparing for its use in linking.
In Details
The Alpha ELF backend lacked a definition for the R_ALPHA_IRELATIVE dynamic relocation. This commit adds the necessary definition, assigning it the value 42 (the next free slot after R_ALPHA_TPREL16). It includes the relocation's howto entry in the BFD reloc map and updates include/elf/alpha.h. This change is coordinated with a glibc submission to ensure synchronization, as glibc's elf/elf.h also defines these constants. The actual linker logic to produce this relocation follows in a separate commit.
- R_ALPHA_IRELATIVE
- An Alpha-specific ELF relocation type used in dynamic linking. It instructs the dynamic linker to execute an IFUNC's resolver and store the resulting address.
- IFUNC
- Indirect Function. A symbol that resolves to different function implementations at runtime, typically based on hardware features. It uses a resolver function.
- dynamic linker
- The system component responsible for loading shared libraries and resolving symbols at runtime. It processes relocation entries.
- BFD
- Binutils' Binary File Descriptor library, an abstraction layer for handling various object file formats.