diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 6e4ea822b8..2cea8be0cc 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,28 @@ +2003-03-14 Roland McGrath + + * descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so + we always define the padding space. + [!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC + stopped supporting its own extensions fully. + [TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper + struct also called `header', so `header.multiple_threads' is the field + name to use on all machines. + * allocatestack.c (allocate_stack): Use `header.' prefix. + * sysdeps/pthread/createthread.c (create_thread): Likewise. + * pthread_create.c (__pthread_create_2_1): Likewise. + * sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise. + (THREAD_SELF): Likewise. + * sysdeps/x86_64/tls.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + + * sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18] + value directly. + 2003-03-14 Ulrich Drepper * pthread_create.c (start_thread): setjmp is expected to return 0. diff --git a/nptl/sysdeps/s390/td_ta_map_lwp2thr.c b/nptl/sysdeps/s390/td_ta_map_lwp2thr.c index d12328f116..5b0bf840d8 100644 --- a/nptl/sysdeps/s390/td_ta_map_lwp2thr.c +++ b/nptl/sysdeps/s390/td_ta_map_lwp2thr.c @@ -35,10 +35,8 @@ td_ta_map_lwp2thr (const td_thragent_t *ta, lwpid_t lwpid, td_thrhandle_t *th) if (ps_lgetregs (ta->ph, lwpid, regs) != PS_OK) return TD_ERR; - /* Get the thread area for the addressed thread. */ - if (ps_get_thread_area (ta->ph, lwpid, regs[18] >> 3, &th->th_unique) - != PS_OK) - return TD_ERR; /* XXX Other error value? */ + /* S390 thread register is ACR0, aka register 18. */ + th->th_unique = (void *) regs[18]; /* Found it. Now complete the `td_thrhandle_t' object. */ th->th_ta_p = (td_thragent_t *) ta; diff --git a/nptl_db/td_thr_tls_get_addr.c b/nptl_db/td_thr_tls_get_addr.c index 781ed2ca6e..d1e29da8b9 100644 --- a/nptl_db/td_thr_tls_get_addr.c +++ b/nptl_db/td_thr_tls_get_addr.c @@ -41,7 +41,7 @@ td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)), psaddr_t dtvpp = th->th_unique; #if TLS_TCB_AT_TP - dtvpp += offsetof (struct pthread, dtv); + dtvpp += offsetof (struct pthread, header.dtv); #elif TLS_DTV_AT_TP dtvpp += TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv); #else