about summary refs log tree commit diff
path: root/linuxthreads_db
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads_db')
-rw-r--r--linuxthreads_db/ChangeLog8
-rw-r--r--linuxthreads_db/td_ta_thr_iter.c2
-rw-r--r--linuxthreads_db/td_thr_event_enable.c1
-rw-r--r--linuxthreads_db/td_thr_getfpregs.c6
-rw-r--r--linuxthreads_db/td_thr_getgregs.c7
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)