freebsd-src/lib/libc/csu
Jessica Clarke 9684658e35 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
2024-10-19 00:48:52 +01:00
..
aarch64 libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
amd64 libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
arm libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
i386 libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
powerpc libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
powerpc64 libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
powerpcspe libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
riscv libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
libc_start1.c libc/csu: Unify INIT_RELOCS across architectures 2024-10-19 00:48:52 +01:00
Makefile.inc libc/csu: rename ignore_init.c to libc_start1.c 2023-03-12 00:56:46 +02:00
Symbol.map