aboutsummaryrefslogtreecommitdiff
path: root/nptl_db
diff options
context:
space:
mode:
Diffstat (limited to 'nptl_db')
-rw-r--r--nptl_db/ChangeLog7
-rw-r--r--nptl_db/td_ta_event_getmsg.c9
2 files changed, 12 insertions, 4 deletions
diff --git a/nptl_db/ChangeLog b/nptl_db/ChangeLog
index 8726260..2a760bf 100644
--- a/nptl_db/ChangeLog
+++ b/nptl_db/ChangeLog
@@ -1,3 +1,10 @@
+2002-12-06 Roland McGrath <roland@redhat.com>
+
+ * td_ta_event_getmsg.c (td_ta_event_getmsg): Write the NEXT pointer
+ into the inferior's __pthread_last_event variable, not a word from
+ an inferior address used in the parent. Pass the address of a
+ null word to ps_pdwrite, not a null pointer.
+
2002-12-04 Roland McGrath <roland@redhat.com>
* td_thr_get_info.c (td_thr_get_info): ti_tid is pthread_t, not a PID.
diff --git a/nptl_db/td_ta_event_getmsg.c b/nptl_db/td_ta_event_getmsg.c
index 4e3245d..919ba65 100644
--- a/nptl_db/td_ta_event_getmsg.c
+++ b/nptl_db/td_ta_event_getmsg.c
@@ -43,11 +43,11 @@ td_ta_event_getmsg (const td_thragent_t *ta, td_event_msg_t *msg)
&addr, sizeof (struct pthread *)) != PS_OK)
return TD_ERR; /* XXX Other error value? */
- /* Read the even structure from the target. */
if (addr == 0)
+ /* Nothing waiting. */
return TD_NOMSG;
- /* Read the even structure from the target. */
+ /* Read the event structure from the target. */
td_eventbuf_t event;
if (ps_pdread (ta->ph, (char *) addr + offsetof (struct pthread, eventbuf),
&event, sizeof (td_eventbuf_t)) != PS_OK)
@@ -73,12 +73,13 @@ td_ta_event_getmsg (const td_thragent_t *ta, td_event_msg_t *msg)
/* Store the pointer in the list head variable. */
if (ps_pdwrite (ta->ph, ta->pthread_last_event,
- addr, sizeof (struct pthread *)) != PS_OK)
+ &next, sizeof (struct pthread *)) != PS_OK)
return TD_ERR; /* XXX Other error value? */
/* Clear the next pointer in the current descriptor. */
+ next = NULL;
if (ps_pdwrite (ta->ph, (char *) addr + offsetof (struct pthread, nextevent),
- NULL, sizeof (struct pthread *)) != PS_OK)
+ &next, sizeof (struct pthread *)) != PS_OK)
return TD_ERR; /* XXX Other error value? */
return TD_OK;