diff --git a/libc/bionic/libc_init_common.c b/libc/bionic/libc_init_common.c
index b6a6379..7fb1246 100644
--- a/libc/bionic/libc_init_common.c
+++ b/libc/bionic/libc_init_common.c
@@ -52,12 +52,19 @@
 
 int __system_properties_init(void);
 
-void __libc_init_common(uintptr_t *elfdata)
+/* Init TLS for the initial thread. Called by the linker _before_ libc is mapped
+ * in memory. Beware: all writes to libc globals from this function will
+ * apply to linker-private copies and will not be visible from libc later on.
+ *
+ * Note: this function creates a pthread_internal_t for the initial thread and
+ * stores the pointer in TLS, but does not add it to pthread's gThreadList. This
+ * has to be done later from libc itself (see __libc_init_common).
+ *
+ * This function also stores elfdata argument in a specific TLS slot to be later
+ * picked up by the libc constructor.
+ */
+void __libc_init_tls(unsigned** elfdata)
 {
-    int     argc = *elfdata;
-    char**  argv = (char**)(elfdata + 1);
-    char**  envp = argv + argc + 1;
-
     pthread_attr_t             thread_attr;
     static pthread_internal_t  thread;
     static void*               tls_area[BIONIC_TLS_SLOTS];
@@ -72,7 +79,19 @@
     _init_thread(&thread, gettid(), &thread_attr, (void*)stackbottom);
     __init_tls(tls_area, &thread);
 
-    /* clear errno - requires TLS area */
+    tls_area[TLS_SLOT_BIONIC_PREINIT] = elfdata;
+}
+
+void __libc_init_common(uintptr_t *elfdata)
+{
+    int     argc = *elfdata;
+    char**  argv = (char**)(elfdata + 1);
+    char**  envp = argv + argc + 1;
+
+    /* get the initial thread from TLS and add it to gThreadList */
+    _pthread_internal_add(__get_thread());
+
+    /* clear errno */
     errno = 0;
 
     /* set program name */
diff --git a/libc/bionic/libc_init_static.c b/libc/bionic/libc_init_static.c
index a2c11a9..f97961d 100644
--- a/libc/bionic/libc_init_static.c
+++ b/libc/bionic/libc_init_static.c
@@ -65,6 +65,11 @@
     int  argc;
     char **argv, **envp;
 
+    __libc_init_tls(NULL);
+
+    /* get the initial thread from TLS and add it to gThreadList */
+    _pthread_internal_add(__get_thread());
+
     /* Initialize the C runtime environment */
     __libc_init_common(elfdata);
 
diff --git a/libc/bionic/pthread.c b/libc/bionic/pthread.c
index fdfe508..5cad167 100644
--- a/libc/bionic/pthread.c
+++ b/libc/bionic/pthread.c
@@ -145,7 +145,7 @@
     pthread_mutex_unlock(&gThreadListLock);
 }
 
-static void
+__LIBC_ABI_PRIVATE__ void
 _pthread_internal_add( pthread_internal_t*  thread )
 {
     pthread_mutex_lock(&gThreadListLock);
@@ -157,7 +157,7 @@
     pthread_mutex_unlock(&gThreadListLock);
 }
 
-pthread_internal_t*
+__LIBC_ABI_PRIVATE__ pthread_internal_t*
 __get_thread(void)
 {
     void**  tls = (void**)__get_tls();
@@ -217,6 +217,7 @@
     pthread_exit( (void*)func(arg) );
 }
 
+__LIBC_ABI_PRIVATE__
 void _init_thread(pthread_internal_t * thread, pid_t kernel_id, pthread_attr_t * attr, void * stack_base)
 {
     if (attr == NULL) {
@@ -238,8 +239,6 @@
     thread->join_count = 0;
 
     thread->cleanup_stack = NULL;
-
-    _pthread_internal_add(thread);
 }
 
 
@@ -371,6 +370,8 @@
 
     _init_thread(thread, tid, (pthread_attr_t*)attr, stack);
 
+    _pthread_internal_add(thread);
+
     if (!madestack)
         thread->attr.flags |= PTHREAD_ATTR_FLAG_USER_STACK;
 
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index 655b8f3..268cacf 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -47,6 +47,8 @@
 } pthread_internal_t;
 
 extern void _init_thread(pthread_internal_t * thread, pid_t kernel_id, pthread_attr_t * attr, void * stack_base);
+void _pthread_internal_add( pthread_internal_t*  thread );
+pthread_internal_t* __get_thread(void);
 
 /* needed by posix-timers.c */
 
diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h
index 008fd2f..af19554 100644
--- a/libc/private/bionic_tls.h
+++ b/libc/private/bionic_tls.h
@@ -134,6 +134,9 @@
 /* return the stack base and size, used by our malloc debugger */
 extern void*  __get_stack_base(int  *p_stack_size);
 
+/* Initialize the TLS. */
+extern void __libc_init_tls(unsigned** elfdata);
+
 __END_DECLS
 
 #endif /* _SYS_TLS_H */
