* descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so
authorRoland McGrath <roland@gnu.org>
Fri, 14 Mar 2003 22:34:30 +0000 (22:34 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 14 Mar 2003 22:34:30 +0000 (22:34 +0000)
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
nptl/sysdeps/s390/td_ta_map_lwp2thr.c
nptl_db/td_thr_tls_get_addr.c

index 6e4ea82..2cea8be 100644 (file)
@@ -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.
index d12328f..5b0bf84 100644 (file)
@@ -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;
index 781ed2c..d1e29da 100644 (file)
@@ -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