mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
* elf/tst-tlsmod4.c (in_dso): Insert a random library call before use
of the TLS macros, otherwise the compiler might not have initialized the PIC register yet when we use the PLT via asm. * elf/tst-tlsmod3.c (in_dso2): Likewise. * elf/tst-tlsmod2.c (in_dso): Likewise.
This commit is contained in:
@ -1,3 +1,13 @@
|
||||
2002-08-11 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* pthread.c (__pthread_initialize_manager): Initialize
|
||||
p_header.data.tcb field of manager thread's descriptor.
|
||||
(__pthread_initialize_minimal): Don't initialize p_header.data.self
|
||||
field, already done by TLS_INIT_TP.
|
||||
|
||||
* manager.c (pthread_handle_create): Move p_header field initializers
|
||||
together.
|
||||
|
||||
2002-08-08 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/i386/tls.h (TLS_DO_SET_THREAD_AREA): Removed.
|
||||
|
@ -644,6 +644,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
/* Initialize the thread descriptor. Elements which have to be
|
||||
initialized to zero already have this value. */
|
||||
new_thread->p_header.data.tcb = new_thread;
|
||||
new_thread->p_header.data.self = new_thread;
|
||||
new_thread->p_tid = new_thread_id;
|
||||
new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
|
||||
new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
|
||||
@ -655,7 +656,6 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
#endif
|
||||
new_thread->p_guardaddr = guardaddr;
|
||||
new_thread->p_guardsize = guardsize;
|
||||
new_thread->p_header.data.self = new_thread;
|
||||
new_thread->p_nr = sseg;
|
||||
new_thread->p_inheritsched = attr ? attr->__inheritsched : 0;
|
||||
/* Initialize the thread handle */
|
||||
|
@ -429,7 +429,6 @@ __pthread_initialize_minimal(void)
|
||||
part of the TLS allocation. We have to initialize the data
|
||||
structure by hand. This initialization must mirror the struct
|
||||
definition above. */
|
||||
self->p_header.data.self = self;
|
||||
self->p_nextlive = self->p_prevlive = self;
|
||||
self->p_tid = PTHREAD_THREADS_MAX;
|
||||
self->p_lock = &__pthread_handles[0].h_lock;
|
||||
@ -633,6 +632,7 @@ int __pthread_initialize_manager(void)
|
||||
}
|
||||
|
||||
/* Initialize the descriptor. */
|
||||
tcb->p_header.data.tcb = tcb;
|
||||
tcb->p_header.data.self = tcb;
|
||||
tcb->p_lock = &__pthread_handles[1].h_lock;
|
||||
# ifndef HAVE___THREAD
|
||||
|
Reference in New Issue
Block a user