aboutsummaryrefslogtreecommitdiff
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)
{