From 52287505946d37a76ecfcb2d1b8a428206d4bb45 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 14 Mar 2003 22:34:30 +0000 Subject: * 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. --- nptl/ChangeLog | 25 +++++++++++++++++++++++++ nptl/sysdeps/s390/td_ta_map_lwp2thr.c | 6 ++---- nptl_db/td_thr_tls_get_addr.c | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) 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 -- cgit 1.4.1