libc: Use the initial-exec TLS model

This permits more efficient accesses of thread-local variables, which
are heavily used at least by jemalloc and locale-aware code.  Note that
on amd64 and i386, jemalloc's thread-local variables already have their
TLS model overridden by defining JEMALLOC_TLS_MODEL.

For now the change is applied only to tested platforms, but should in
principle be enabled everywhere.

PR:		255840
Suggested by:	jrtc27
Reviewed by:	kib
MFC after:	2 months
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D31070
This commit is contained in:
Mark Johnston 2021-07-15 22:35:28 -04:00
parent f238ebd142
commit 9c97062b62

View File

@ -54,6 +54,13 @@ CANCELPOINTS_CFLAGS=-fexceptions
CFLAGS+=${CANCELPOINTS_CFLAGS}
.endif
# Use a more efficient TLS model for libc since we can reasonably assume that
# it will be loaded during program startup.
.if ${LIBC_ARCH} == "aarch64" || ${LIBC_ARCH} == "amd64" || \
${LIBC_ARCH} == "i386" || ${LIBC_ARCH} == "riscv"
CFLAGS+= -ftls-model=initial-exec
.endif
#
# Link with static libcompiler_rt.a.
#