diff options
author | Roland McGrath <roland@gnu.org> | 2003-03-14 22:34:30 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2003-03-14 22:34:30 +0000 |
commit | 52287505946d37a76ecfcb2d1b8a428206d4bb45 (patch) | |
tree | f18a508ac866beede857055d0643c11fdab1aaad | |
parent | 55c11fbdb046ec06fb9f9bca2ae772a413354c74 (diff) | |
download | glibc-52287505946d37a76ecfcb2d1b8a428206d4bb45.zip glibc-52287505946d37a76ecfcb2d1b8a428206d4bb45.tar.gz glibc-52287505946d37a76ecfcb2d1b8a428206d4bb45.tar.bz2 |
* 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.
-rw-r--r-- | nptl/ChangeLog | 25 | ||||
-rw-r--r-- | nptl/sysdeps/s390/td_ta_map_lwp2thr.c | 6 | ||||
-rw-r--r-- | 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 6e4ea82..2cea8be 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,28 @@ +2003-03-14 Roland McGrath <roland@redhat.com> + + * 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 <drepper@redhat.com> * 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 d12328f..5b0bf84 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 781ed2c..d1e29da 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 |