opnsense-src/libexec
Jessica Clarke ccfb1c50e4 Revert "rtld: fix allocate_module_tls() variant I fallback to static allocation"
This was applying a NetBSD fix to FreeBSD. However, the original code
was correct for FreeBSD. NetBSD's obj->tlsoffset is relative to the end
of the TCB, not the TCB itself, whilst ours is relative to the TCB[1]
itself. For example, our allocate_tls uses (char *)tcb + obj->tlsoffset
for the memcpy and memset calls.

Without this reverted, for dynamically loaded shared objects, Initial
Exec accesses to TLS variables on variant I architectures (non-x86) use
the correct address, whilst General Dynamic and dlsym(3) use the
incorrect address (TLS_TCB_SIZE past the start). Note that, on arm64,
LLVM only supports TLSDESC (including LLD) and TLSDESC will use the
static resolver if the variable ends up allocated to the static TLS
block, even in the presence of dlopen(3), so only dlsym(3) shows the
discrepancy there.

Whilst here, add a comment to explain this difference to try and avoid
the same mistake being made in future.

[1] In the case of variant II, it's the amount to subtract, so still
    positive

This reverts commit e9a38ed2fa.

Reviewed by:	kib (prior version)
Fixes:		e9a38ed2fa ("rtld: fix allocate_module_tls() variant I fallback to static allocation")
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D50565
2025-05-28 21:24:52 +01:00
..
atf atf: Switch from std::auto_ptr<> to std::unique_ptr<> 2025-04-16 10:10:35 -04:00
atrun Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
blacklistd-helper Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
bootpd bootptest: Fix a typo in a source code comment 2025-01-26 13:06:55 +01:00
comsat comsat: move uid/gid setting earlier 2024-12-02 14:57:13 -05:00
dma Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
fingerd Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
flua flua: add posix.unistd.execp 2025-05-12 14:27:57 -04:00
ftpd ftpd.8: Fix manual syntax 2025-05-04 16:43:34 -06:00
getty Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
hyperv Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
kgdb crashinfo: Print stack traces for all on-CPU threads 2024-01-15 16:36:40 -05:00
mail.local Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
makewhatis.local Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
mknetid Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
nuageinit nuageinit: implement chpasswd 2025-04-30 09:32:06 +02:00
phttpget Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
pppoed Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
rbootd Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
rc svcj: correctly handle kernels without INET or INET6 2025-05-28 02:16:30 +01:00
revnetgroup Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
rpc.rquotad Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
rpc.rstatd move the SunOS r-commands into the rcmds package 2025-05-05 16:39:25 +01:00
rpc.rusersd move the SunOS r-commands into the rcmds package 2025-05-05 16:39:25 +01:00
rpc.rwalld move the SunOS r-commands into the rcmds package 2025-05-05 16:39:25 +01:00
rpc.sprayd Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
rtld-elf Revert "rtld: fix allocate_module_tls() variant I fallback to static allocation" 2025-05-28 21:24:52 +01:00
rtld-elf32 Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
save-entropy Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
smrsh Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
talkd Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
tcpd tcp_wrappers: Use default C standard version 2025-01-09 13:07:51 -05:00
tests Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
tftp-proxy tftp-proxy: move to the pf package 2025-05-05 16:39:25 +01:00
tftpd src: Use gnu17 as the default C standard for userland instead of gnu99 2025-02-11 09:16:25 -05:00
ulog-helper Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
ypxfr Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
Makefile atf: Guard libexec/atf with WITH_TESTS_SUPPORT 2024-11-18 18:36:46 +00:00
Makefile.inc Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00