summaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-02-27 04:12:53 +0000
committerUlrich Drepper <drepper@redhat.com>2003-02-27 04:12:53 +0000
commitb1531183c5796e3be5aa193e294970ec3fac7d30 (patch)
tree7c0b0d3f4b0320fa759e786ee189a231abae64b6 /nptl
parentd4a763f9225a0e89bd7815e9d3766ce9507566fb (diff)
Update.
2003-02-26 Ulrich Drepper <drepper@redhat.com> * init.c (__pthread_initialize_minimal_internal): Set GL(dl_error_catch_tsd) to __libc_dl_error_tsd. * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/init.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index d8ccec38a2..b18f483726 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2003-02-26 Ulrich Drepper <drepper@redhat.com>
+
+ * init.c (__pthread_initialize_minimal_internal): Set
+ GL(dl_error_catch_tsd) to __libc_dl_error_tsd.
+ * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
+
2003-02-24 Ulrich Drepper <drepper@redhat.com>
* sem_open.c (sem_open): Fix handling of O_CREAT without O_EXCL.
diff --git a/nptl/init.c b/nptl/init.c
index ddc6f3d939..cc496a240f 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -160,6 +160,10 @@ sigcancel_handler (int sig __attribute ((unused)))
}
+/* When using __thread for this, we do it in libc so as not
+ to give libpthread its own TLS segment just for this. */
+extern void **__libc_dl_error_tsd (void) __attribute__ ((const));
+
void
__pthread_initialize_minimal_internal (void)
@@ -231,6 +235,12 @@ __pthread_initialize_minimal_internal (void)
__static_tls_align = STACK_ALIGN;
__static_tls_size = roundup (__static_tls_size, __static_tls_align);
+#ifdef SHARED
+ /* Transfer the old value from the dynamic linker's internal location. */
+ *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
+ GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
+#endif
+
/* Register the fork generation counter with the libc. */
__libc_pthread_init (&__fork_generation, __reclaim_stacks,
ptr_pthread_functions);