git: 9c97062b6201 - main - libc: Use the initial-exec TLS model
Mark Johnston
markj at FreeBSD.org
Fri Jul 16 02:42:28 UTC 2021
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=9c97062b620137a1f7cad4c6b3fb030a396b3266
commit 9c97062b620137a1f7cad4c6b3fb030a396b3266
Author: Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-07-16 02:35:28 +0000
Commit: Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-07-16 02:41:10 +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
MFC after: 2 months
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31070
---
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-all
mailing list