aboutsummaryrefslogtreecommitdiff
path: root/htl/pt-alloc.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-06-14 12:56:54 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-06-14 15:53:04 +0000
commita50efac19a1eb0a9dc6f5917ae299c0fbbf3c46b (patch)
tree975cff922cf658c87dfc70e3b4fb490fdca8519b /htl/pt-alloc.c
parente2b9d562d1e024fda6d10f0f272521bf20fa664f (diff)
downloadglibc-a50efac19a1eb0a9dc6f5917ae299c0fbbf3c46b.zip
glibc-a50efac19a1eb0a9dc6f5917ae299c0fbbf3c46b.tar.gz
glibc-a50efac19a1eb0a9dc6f5917ae299c0fbbf3c46b.tar.bz2
htl: Move cleanup stack to variable shared between libc and pthread
If libpthread gets loaded dynamically, the stack needs to already contain the cleanup handlers of the main thread. * htl/libc_pthread_init.c (__pthread_cleanup_stack): New per-thread variable. * htl/Versions (libc): Add __pthread_cleanup_stack as private symbol. * htl/pt-internal.h (struct __pthread): Remove cancelation_handlers field. (__pthread_cleanup_stack): Add variable declaration. * htl/pt-alloc.c (initialize_pthread): Remove initialization of cancelation_handlers field. * htl/pt-cleanup.c (__pthread_get_cleanup_stack): Return the address of __pthread_cleanup_stack instead of that of the cancelation_handlers field. * htl/forward.c: Include <pt-internal.h>. (dummy_list): Remove variable. (__pthread_get_cleanup_stack): Return the address of __pthread_cleanup_stack instead of that of dummy_list.
Diffstat (limited to 'htl/pt-alloc.c')
-rw-r--r--htl/pt-alloc.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/htl/pt-alloc.c b/htl/pt-alloc.c
index d4426bb..bf37aca 100644
--- a/htl/pt-alloc.c
+++ b/htl/pt-alloc.c
@@ -65,8 +65,6 @@ initialize_pthread (struct __pthread *new)
new->state_lock = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
new->state_cond = (pthread_cond_t) PTHREAD_COND_INITIALIZER;
- new->cancelation_handlers = 0;
-
memset (&new->res_state, '\0', sizeof (new->res_state));
new->tcb = NULL;