mirror of
https://github.com/fluencelabs/musl
synced 2025-06-24 12:12:04 +00:00
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.
This commit is contained in:
2
src/env/__libc_start_main.c
vendored
2
src/env/__libc_start_main.c
vendored
@ -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 */
|
||||
|
Reference in New Issue
Block a user