about summary refs log tree commit diff
path: root/nptl/allocatestack.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/allocatestack.c')
-rw-r--r--nptl/allocatestack.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 2dfecf0181..eabc68517a 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <sys/mman.h>
 #include <sys/param.h>
+#include <dl-sysdep.h>
 #include <tls.h>
 
 
@@ -275,6 +276,12 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
       /* There is at least one more thread.  */
       pd->header.data.multiple_threads = 1;
 
+#ifdef NEED_DL_SYSINFO
+      /* Copy the sysinfo value from the parent.  */
+      pd->header.data.sysinfo
+	= THREAD_GETMEM (THREAD_SELF, header.data.sysinfo);
+#endif
+
       /* Allocate the DTV for this thread.  */
       if (_dl_allocate_tls (pd) == NULL)
 	/* Something went wrong.  */
@@ -343,6 +350,12 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	  /* There is at least one more thread.  */
 	  pd->header.data.multiple_threads = 1;
 
+#ifdef NEED_DL_SYSINFO
+	  /* Copy the sysinfo value from the parent.  */
+	  pd->header.data.sysinfo
+	    = THREAD_GETMEM (THREAD_SELF, header.data.sysinfo);
+#endif
+
 	  /* Allocate the DTV for this thread.  */
 	  if (_dl_allocate_tls (pd) == NULL)
 	    {