From 8431d7972fd9be0fdcaff8516316d748e81724bb Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 4 Oct 2012 16:35:46 -0400 Subject: 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/__libc_start_main.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/env/__libc_start_main.c') diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index f31222b2..a38569d5 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -1,5 +1,6 @@ #include "libc.h" +void __init_tls(size_t *); void __init_security(size_t *); int __libc_start_main( @@ -15,6 +16,7 @@ int __libc_start_main( libc.ldso_fini = ldso_fini; libc.fini = fini; + __init_tls((void *)auxv); __init_security((void *)auxv); /* Execute constructors (static) linked into the application */ -- cgit v1.2.1