diff options
Diffstat (limited to 'linuxthreads_db')
-rw-r--r-- | linuxthreads_db/ChangeLog | 8 | ||||
-rw-r--r-- | linuxthreads_db/td_ta_thr_iter.c | 2 | ||||
-rw-r--r-- | linuxthreads_db/td_thr_event_enable.c | 1 | ||||
-rw-r--r-- | linuxthreads_db/td_thr_getfpregs.c | 6 | ||||
-rw-r--r-- | linuxthreads_db/td_thr_getgregs.c | 7 |
5 files changed, 23 insertions, 1 deletions
diff --git a/linuxthreads_db/ChangeLog b/linuxthreads_db/ChangeLog index 774afe6e2a..1d1f8d7bc8 100644 --- a/linuxthreads_db/ChangeLog +++ b/linuxthreads_db/ChangeLog @@ -1,3 +1,11 @@ +2002-07-15 Ulrich Drepper <drepper@redhat.com> + + * td_ta_thr_iter.c: Some more changes to enable using TLS-enabled + libpthread. + * td_thr_event_enable.c: Likewise. + * td_thr_getfpregs.c: Likewise. + * td_thr_getgregs.c: Likewise. + 2002-07-14 Ulrich Drepper <drepper@redhat.com> * td_ta_map_id2thr.c: Begin fixing implementation for libpthread with diff --git a/linuxthreads_db/td_ta_thr_iter.c b/linuxthreads_db/td_ta_thr_iter.c index 977711261e..ee83c82ee9 100644 --- a/linuxthreads_db/td_ta_thr_iter.c +++ b/linuxthreads_db/td_ta_thr_iter.c @@ -47,7 +47,7 @@ handle_descr (const td_thragent_t *ta, td_thr_iter_f *callback, p_userstack but this should not be necessary here. */ th.th_ta_p = (td_thragent_t *) ta; - th.th_unique = &pds; + th.th_unique = NULL; if (callback (&th, cbdata_p) != 0) return TD_DBERR; diff --git a/linuxthreads_db/td_thr_event_enable.c b/linuxthreads_db/td_thr_event_enable.c index 52404e5a89..d6ec2a99df 100644 --- a/linuxthreads_db/td_thr_event_enable.c +++ b/linuxthreads_db/td_thr_event_enable.c @@ -31,6 +31,7 @@ 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)), diff --git a/linuxthreads_db/td_thr_getfpregs.c b/linuxthreads_db/td_thr_getfpregs.c index b453cc0e9b..ea02760c93 100644 --- a/linuxthreads_db/td_thr_getfpregs.c +++ b/linuxthreads_db/td_thr_getfpregs.c @@ -28,6 +28,12 @@ td_thr_getfpregs (const td_thrhandle_t *th, prfpregset_t *regset) LOG ("td_thr_getfpregs"); + if (th->th_unique == NULL) + { + memset (regset, '\0', sizeof (*regset)); + return TD_OK; + } + /* We have to get the state and the PID for this thread. */ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds, sizeof (struct _pthread_descr_struct)) != PS_OK) diff --git a/linuxthreads_db/td_thr_getgregs.c b/linuxthreads_db/td_thr_getgregs.c index 462a1a192b..6f00677d66 100644 --- a/linuxthreads_db/td_thr_getgregs.c +++ b/linuxthreads_db/td_thr_getgregs.c @@ -28,6 +28,13 @@ td_thr_getgregs (const td_thrhandle_t *th, prgregset_t gregs) LOG ("td_thr_getgregs"); + if (th->th_unique == NULL) + { + /* No data yet. */ + memset (gregs, '\0', sizeof (prgregset_t)); + return TD_OK; + } + /* We have to get the state and the PID for this thread. */ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds, sizeof (struct _pthread_descr_struct)) != PS_OK) |