From b1531183c5796e3be5aa193e294970ec3fac7d30 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 27 Feb 2003 04:12:53 +0000 Subject: [PATCH] Update. 2003-02-26 Ulrich Drepper * 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. --- nptl/ChangeLog | 6 ++++++ nptl/init.c | 10 ++++++++++ 2 files changed, 16 insertions(+) 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 + + * 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 * 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);