summaryrefslogtreecommitdiff
path: root/gdb/thread.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@specifix.com>2001-06-02 00:36:20 +0000
committerMichael Snyder <msnyder@specifix.com>2001-06-02 00:36:20 +0000
commit7d39d53f87d01ab88728c3c2e36b5b5bcd28253b (patch)
treeb82e0ba9d6439ebfa18fab912e75937b9f1ac8e4 /gdb/thread.c
parent6592d9a4df99c23d213c09fd1bbeaecfaaf02e38 (diff)
downloadgdb-7d39d53f87d01ab88728c3c2e36b5b5bcd28253b.tar.gz
2001-06-01 Michael Snyder <msnyder@redhat.com>
* thread.c (delete_step_resume_breakpoint): New function. Maintain internal consistency of the thread list while deleting a step_resume_breakpoint. * gdbthread.h (delete_step_resume_breakpoint): Export. * breakpoint.c (bpstat_find_step_resume_breakpoint): Make thread-aware: don't return a step_resume_breakpoint for the wrong thread. * infrun.c (wait_for_inferior): Call delete_step_resume_breakpoint instead of delete_breakpoint_current_contents. (fetch_inferior_event): Ditto. (handle_inferior_event): Call delete_step_resume_breakpoint instead of delete_breakpoint.
Diffstat (limited to 'gdb/thread.c')
-rw-r--r--gdb/thread.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gdb/thread.c b/gdb/thread.c
index 70dcb3705b3..7a942769134 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -65,6 +65,23 @@ static void restore_current_thread (ptid_t);
static void switch_to_thread (ptid_t ptid);
static void prune_threads (void);
+void
+delete_step_resume_breakpoint (void *arg)
+{
+ struct breakpoint **breakpointp = (struct breakpoint **) arg;
+ struct thread_info *tp;
+
+ if (*breakpointp != NULL)
+ {
+ delete_breakpoint (*breakpointp);
+ for (tp = thread_list; tp; tp = tp->next)
+ if (tp->step_resume_breakpoint == *breakpointp)
+ tp->step_resume_breakpoint = NULL;
+
+ *breakpointp = NULL;
+ }
+}
+
static void
free_thread (struct thread_info *tp)
{