On 12/9/21 1:23 PM, John Baldwin wrote:
The branch main has been updated by jhb:
URL:
https://cgit.FreeBSD.org/src/commit/?id=8bcdb144ebe391ce243c71caf06cf417d96ce335
commit 8bcdb144ebe391ce243c71caf06cf417d96ce335
Author: John Baldwin <[email protected]>
AuthorDate: 2021-12-09 21:17:54 +0000
Commit: John Baldwin <[email protected]>
CommitDate: 2021-12-09 21:23:05 +0000
TLS: Use <machine/tls.h> for libc and rtld.
- Include <machine/tls.h> in MD rtld_machdep.h headers.
- Remove local definitions of TLS_* constants from rtld_machdep.h
headers and libc using the values from <machine/tls.h> instead.
- Use _tcb_set() instead of inlined versions in MD
allocate_initial_tls() routines in rtld. The one exception is amd64
whose _tcb_set() invokes the amd64_set_fsbase ifunc. rtld cannot
use ifuncs, so amd64 inlines the logic to optionally write to fsbase
directly.
- Use _tcb_set() instead of _set_tp() in libc.
- Use '&_tcb_get()->tcb_dtv' instead of _get_tp() in both rtld and libc.
This permits removing _get_tp.c from rtld.
- Use TLS_TCB_SIZE and TLS_TCB_ALIGN with allocate_tls() in MD
allocate_initial_tls() routines in rtld.
Reviewed by: kib, jrtc27 (earlier version)
Differential Revision: https://reviews.freebsd.org/D33353
I should have noted that all of the changes in this series were runtime tested
on
amd64, armv7, aarch64, i386, and riscv. The changes were build-tested (make
tinderbox)
on mips and powerpc.
--
John Baldwin