diff options
Diffstat (limited to 'linuxthreads_db')
-rw-r--r-- | linuxthreads_db/ChangeLog | 8 | ||||
-rw-r--r-- | linuxthreads_db/td_symbol_list.c | 3 | ||||
-rw-r--r-- | linuxthreads_db/td_thr_event_enable.c | 28 | ||||
-rw-r--r-- | linuxthreads_db/thread_dbP.h | 1 |
4 files changed, 32 insertions, 8 deletions
diff --git a/linuxthreads_db/ChangeLog b/linuxthreads_db/ChangeLog index 6cd9757..dd87f89 100644 --- a/linuxthreads_db/ChangeLog +++ b/linuxthreads_db/ChangeLog @@ -1,3 +1,11 @@ +2002-08-07 Ulrich Drepper <drepper@redhat.com> + + * thread_dbP.h: Define LINUXTHREADS_INITIAL_REPORT_EVENTS. + * td_thr_event_enable.c (td_thr_event_enable): If th->th_unique is + null write to __linuxthreads_initial_report_events. + * td_symbol_list.c (symbol_list_arr): Add + __linuxthreads_initial_report_events. + 2002-07-16 Ulrich Drepper <drepper@redhat.com> * td_thr_clear_event.c: Yet more changes to help with TLS-enabled diff --git a/linuxthreads_db/td_symbol_list.c b/linuxthreads_db/td_symbol_list.c index e64d298..8132618 100644 --- a/linuxthreads_db/td_symbol_list.c +++ b/linuxthreads_db/td_symbol_list.c @@ -1,5 +1,5 @@ /* Return list of symbols the library can request. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001. @@ -36,6 +36,7 @@ static const char *symbol_list_arr[] = [LINUXTHREADS_CREATE_EVENT] = "__linuxthreads_create_event", [LINUXTHREADS_DEATH_EVENT] = "__linuxthreads_death_event", [LINUXTHREADS_REAP_EVENT] = "__linuxthreads_reap_event", + [LINUXTHREADS_INITIAL_REPORT_EVENTS] = "__linuxthreads_initial_report_events", [NUM_MESSAGES] = NULL }; diff --git a/linuxthreads_db/td_thr_event_enable.c b/linuxthreads_db/td_thr_event_enable.c index b6ec4d0..407f3fc 100644 --- a/linuxthreads_db/td_thr_event_enable.c +++ b/linuxthreads_db/td_thr_event_enable.c @@ -31,13 +31,27 @@ td_thr_event_enable (th, onoff) LOG ("td_thr_event_enable"); /* Write the new value into the thread data structure. */ - if (th->th_unique != NULL) - if (ps_pdwrite (th->th_ta_p->ph, - ((char *) th->th_unique - + offsetof (struct _pthread_descr_struct, - p_report_events)), - &onoff, sizeof (int)) != PS_OK) - return TD_ERR; /* XXX Other error value? */ + if (th->th_unique == NULL) + { + psaddr_t addr; + + if (td_lookup (th->th_ta_p->ph, LINUXTHREADS_INITIAL_REPORT_EVENTS, + &addr) != PS_OK) + /* Cannot read the symbol. This should not happen. */ + return TD_ERR; + + if (ps_pdwrite (th->th_ta_p->ph, addr, &onoff, sizeof (int)) != PS_OK) + return TD_ERR; + + return TD_OK; + } + + if (ps_pdwrite (th->th_ta_p->ph, + ((char *) th->th_unique + + offsetof (struct _pthread_descr_struct, + p_report_events)), + &onoff, sizeof (int)) != PS_OK) + return TD_ERR; /* XXX Other error value? */ return TD_OK; } diff --git a/linuxthreads_db/thread_dbP.h b/linuxthreads_db/thread_dbP.h index a64a5b3..85222ab 100644 --- a/linuxthreads_db/thread_dbP.h +++ b/linuxthreads_db/thread_dbP.h @@ -23,6 +23,7 @@ enum LINUXTHREADS_CREATE_EVENT, LINUXTHREADS_DEATH_EVENT, LINUXTHREADS_REAP_EVENT, + LINUXTHREADS_INITIAL_REPORT_EVENTS, NUM_MESSAGES }; |