freebsd-src/libexec/rtld-elf
Stefan Eßer 7b77d37a56 rtld-elf: support either byte-order of hints file
Accept either little-endian or big-endian representation of the ELF
hints magic number in the header of a hints file and convert the
parameters to the native byte-order of the repsective system.

This is a pre-requisite for a planned change to always write the byte
order in little-endian format on all architectures. The only relvant
architecture that uses big-endian data is powerpc64, and it is not
likely that new architectures will choose that representation of data
in memory.

When all supported architectures use little-endian data in the hints
file, the byte swap logic can be enabled for big-endian CPUs at
compile time. Up to that point, there is a very small run-time penalty
that is paid on all systems to check the byte-order of the hints file
and to provide the option to byte-swap the parameters read from the
hints file header.

This commit contains the changes from review D44080 (which had been
split off from this patch for easier review),

Reviewed by:	kib
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D44053
2024-02-26 23:18:12 +01:00
..
aarch64 libexec: Automated cleanup of cdefs and other formatting 2023-11-26 22:23:59 -07:00
amd64 rtld: introduce STATIC_TLS_EXTRA 2023-10-30 13:42:05 -04:00
arm libexec: Automated cleanup of cdefs and other formatting 2023-11-26 22:23:59 -07:00
i386 rtld: introduce STATIC_TLS_EXTRA 2023-10-30 13:42:05 -04:00
powerpc rtld: introduce STATIC_TLS_EXTRA 2023-10-30 13:42:05 -04:00
powerpc64 rtld: introduce STATIC_TLS_EXTRA 2023-10-30 13:42:05 -04:00
riscv libexec: Automated cleanup of cdefs and other formatting 2023-11-26 22:23:59 -07:00
rtld-libc rtld: remove pointless "extern" 2024-02-21 02:26:10 +02:00
tests rtld: add some dlopen tests 2024-02-13 09:38:02 -06:00
debug.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
debug.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
libmap.c Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
libmap.conf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libmap.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
Makefile Stop #defining FREEBSD_ELF 2023-12-12 15:30:00 -08:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
map_object.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld.1 rtld: introduce STATIC_TLS_EXTRA 2023-10-30 13:42:05 -04:00
rtld.c rtld-elf: support either byte-order of hints file 2024-02-26 23:18:12 +01:00
rtld.h rtld: ignore load_filtees() calls if we already loading filtees for the obj 2024-02-13 16:24:01 +02:00
rtld_lock.c Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
rtld_lock.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_malloc.c libexec: Remove ancient SCCS tags. 2023-11-26 22:23:28 -07:00
rtld_malloc.h rtld_malloc: add __crt_aligned_alloc_offset() 2023-08-21 17:16:42 +03:00
rtld_paths.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_printf.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_printf.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_tls.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtld_utrace.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
Symbol.map Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
xmalloc.c rtld: switch from malloc_aligned() to __crt_aligned_alloc() 2023-08-21 17:16:42 +03:00