git: ad9f3a91d521 - stable/13 - libc: Use the initial-exec TLS model

Mark Johnston markj at FreeBSD.org
Tue Sep 14 12:52:13 UTC 2021


The branch stable/13 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=ad9f3a91d52105564dc32e5c0132377c74c3a204

commit ad9f3a91d52105564dc32e5c0132377c74c3a204
Author:     Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-07-16 02:35:28 +0000
Commit:     Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-09-14 12:50:53 +0000

    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
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 9c97062b620137a1f7cad4c6b3fb030a396b3266)
---
 lib/libc/Makefile | 7 +++++++
 1 file changed, 7 insertions(+)

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.
 #


More information about the dev-commits-src-branches mailing list