glibc/sysdeps
Szabolcs Nagy ffb17e7ba3 rtld: Avoid using up static TLS surplus for optimizations [BZ #25051]
On some targets static TLS surplus area can be used opportunistically
for dynamically loaded modules such that the TLS access then becomes
faster (TLSDESC and powerpc TLS optimization). However we don't want
all surplus TLS to be used for this optimization because dynamically
loaded modules with initial-exec model TLS can only use surplus TLS.

The new contract for surplus static TLS use is:

- libc.so can have up to 192 bytes of IE TLS,
- other system libraries together can have up to 144 bytes of IE TLS.
- Some "optional" static TLS is available for opportunistic use.

The optional TLS is now tunable: rtld.optional_static_tls, so users
can directly affect the allocated static TLS size. (Note that module
unloading with dlclose does not reclaim static TLS. After the optional
TLS runs out, TLS access is no longer optimized to use static TLS.)

The default setting of rtld.optional_static_tls is 512 so the surplus
TLS is 3*192 + 4*144 + 512 = 1664 by default, the same as before.

Fixes BZ #25051.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-07-08 17:32:56 +01:00
..
aarch64 aarch64: redefine RETURN_ADDRESS to strip PAC 2020-07-08 15:02:38 +01:00
alpha alpha: Use builtin sqrt{f} 2020-06-22 11:09:49 -03:00
arm Rewrite abi-note.S in C. 2020-07-08 15:02:37 +01:00
csky semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
generic rtld: Avoid using up static TLS surplus for optimizations [BZ #25051] 2020-07-08 17:32:56 +01:00
gnu signal: Move sys_errlist to a compat symbol 2020-07-07 14:10:58 -03:00
hppa dl-runtime: reloc_{offset,index} now functions arch overide'able 2020-06-05 13:45:46 -07:00
htl htl: Move cleanup handling to non-private libc-lock 2020-06-28 00:13:57 +00:00
hurd hurd: Evaluate fd before entering the critical section 2020-07-07 22:10:24 +02:00
i386 i386: Use builtin sqrtl 2020-06-22 11:09:49 -03:00
ia64 ia64: Use generic exp10f 2020-06-19 12:08:52 -03:00
ieee754 Use C2x return value from getpayload of non-NaN (bug 26073). 2020-07-06 16:18:02 +00:00
m68k m68k: Use sqrt{f} builtin for coldfire 2020-06-22 11:09:50 -03:00
mach Remove --enable-obsolete-nsl configure flag 2020-07-08 17:25:57 +02:00
microblaze semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
mips mips: Use sqrt{f} builtin 2020-06-22 11:09:49 -03:00
nios2 semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
nptl nptl: Add pthread_attr_setsigmask_np, pthread_attr_getsigmask_np 2020-06-02 11:59:18 +02:00
posix hurd: Fix __writev_nocancel_nostatus 2020-06-14 17:45:04 +00:00
powerpc powerpc: Add support for POWER10 2020-06-29 10:08:38 -03:00
pthread htl: Enable cancel*16 an cancel*20 tests 2020-06-29 00:16:33 +00:00
riscv riscv: Use sqrt{f} builtin 2020-06-22 11:09:50 -03:00
s390 S390: Optimize __memset_z196. 2020-06-26 09:45:11 +02:00
sh semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
sparc sparc: Use sqrt{f} builtin 2020-06-22 11:09:49 -03:00
unix Remove --enable-obsolete-nsl configure flag 2020-07-08 17:25:57 +02:00
wordsize-32 Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
wordsize-64 Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
x86 rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling 2020-07-08 14:28:53 +01:00
x86_64 x86: Add thresholds for "rep movsb/stosb" to tunables 2020-07-06 11:48:42 -07:00