HomeFreeBSD

libc/csu: Unify INIT_RELOCS across architectures

Description

libc/csu: Unify INIT_RELOCS across architectures

Some architectures don't need any arguments, whilst others need auxargs,
which they get by passing in env thanks to INIT_RELOCS referencing the
local variable in __libc_start1(_gcrt) by name. This is unnecessarily
confusing, fragile (one has to look at INIT_IRELOCS's definition to see
that it uses env) and duplicates code between architectures.

Instead, implement it more like rtld-elf. Each architecture provides an
ifunc_init that takes the auxargs directly, and those that don't need it
can just ignore it.

Reviewed by: kib
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D47188

Details

Provenance
jrtc27Authored on Oct 18 2024, 11:48 PM
Reviewer
kib
Differential Revision
D47188: libc/csu: Unify INIT_RELOCS across architectures
Parents
rGb8007cfdb72c: mididump: fix gcc build
Branches
Unknown
Tags
Unknown