diff options
author | Mark Johnston <markj@FreeBSD.org> | 2021-07-16 02:35:28 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2021-07-16 02:41:10 +0000 |
commit | 9c97062b620137a1f7cad4c6b3fb030a396b3266 (patch) | |
tree | 715f7ad46658f5a21a7b09342bd4875220a34563 | |
parent | f238ebd1429312ac2a4cb9f764babc4b6f69721e (diff) | |
download | src-9c97062b620137a1f7cad4c6b3fb030a396b3266.tar.gz src-9c97062b620137a1f7cad4c6b3fb030a396b3266.zip |
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
-rw-r--r-- | lib/libc/Makefile | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/libc/Makefile b/lib/libc/Makefile index 958270e6ddf5..fdf6aa49932b 100644 --- a/lib/libc/Makefile +++ b/lib/libc/Makefile @@ -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. # |