TLS (GNU/C11 thread-local storage) support for static-linked programs
authorRich Felker <dalias@aerifal.cx>
Thu, 4 Oct 2012 20:35:46 +0000 (16:35 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 4 Oct 2012 20:35:46 +0000 (16:35 -0400)
commit8431d7972fd9be0fdcaff8516316d748e81724bb
tree53800c9deeaf26a9fedc5f9f574d9694315b510c
parentadefe830dd376be386df5650a09c313c483adf1a
TLS (GNU/C11 thread-local storage) support for static-linked programs

the design for TLS in dynamic-linked programs is mostly complete too,
but I have not yet implemented it. cost is nonzero but still low for
programs which do not use TLS and/or do not use threads (a few hundred
bytes of new code, plus dependency on memcpy). i believe it can be
made smaller at some point by merging __init_tls and __init_security
into __libc_start_main and avoiding duplicate auxv-parsing code.

at the same time, I've also slightly changed the logic pthread_create
uses to allocate guard pages to ensure that guard pages are not
counted towards commit charge.
src/env/__init_tls.c [new file with mode: 0644]
src/env/__libc_start_main.c
src/internal/libc.h
src/ldso/dynlink.c
src/thread/pthread_create.c
src/thread/pthread_self.c