* db_info.c [TLS_DTV_AT_TP && TLS_TP_OFFSET > 0]

(_thread_db_pthread_dtvp): Define differently for this case (PowerPC).
This commit is contained in:
Roland McGrath 2004-03-13 07:59:29 +00:00
parent d6f53c6f3e
commit 26301a17c2
3 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2004-03-12 Roland McGrath <roland@redhat.com>
* td_thr_tlsbase.c [TLS_DTV_AT_TP && TLS_TP_OFFSET > 0]: Handle this
case (PowerPC) differently.
2003-11-25 Roland McGrath <roland@redhat.com>
* td_symbol_list.c (symbol_list_arr) [HAVE_ASM_GLOBAL_DOT_NAME]:

View File

@ -1,5 +1,5 @@
/* Locate TLS data for a thread.
Copyright (C) 2003 Free Software Foundation, Inc.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -18,6 +18,7 @@
02111-1307 USA. */
#include "thread_dbP.h"
#include <dl-tls.h>
/* Value used for dtv entries for which the allocation is delayed. */
# define TLS_DTV_UNALLOCATED ((void *) -1l)
@ -38,6 +39,13 @@ td_thr_tlsbase (const td_thrhandle_t *th,
psaddr_t dtvpp = th->th_unique;
#if TLS_TCB_AT_TP
dtvpp += offsetof (struct _pthread_descr_struct, p_header.data.dtvp);
#elif TLS_DTV_AT_TP && TLS_TP_OFFSET > 0
/* Special case hack. Really this #if should be TLS_TCB_SIZE == 0, but
when untrue it's a sizeof expression, and that wouldn't fly. In this
flavor (PowerPC), there is no TCB containing the DTV at the TP, but
actually the TCB lies behind the TP, i.e. at the very end of the area
covered by TLS_PRE_TCB_SIZE. */
dtvpp += TLS_PRE_TCB_SIZE - sizeof (tcbhead_t) + offsetof (tcbhead_t, dtv);
#elif TLS_DTV_AT_TP
dtvpp += TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv);
#else

View File

@ -1,3 +1,8 @@
2004-03-12 Roland McGrath <roland@redhat.com>
* db_info.c [TLS_DTV_AT_TP && TLS_TP_OFFSET > 0]
(_thread_db_pthread_dtvp): Define differently for this case (PowerPC).
2003-12-11 Ulrich Weigand <uweigand@de.ibm.com>
* db_info.c (REGISTER): Add bit size of thread register as second