aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2001-06-01 23:23:19 +0000
committerMichael Snyder <msnyder@vmware.com>2001-06-01 23:23:19 +0000
commitc6ad9598d052bb904008464632ecb3f81b1c3094 (patch)
treedc06ecf9d91994a939d297601b4274029ed88687
parentb27b8843dcccc202de20a9ac2d32d2017c07d859 (diff)
downloadgdb-c6ad9598d052bb904008464632ecb3f81b1c3094.zip
gdb-c6ad9598d052bb904008464632ecb3f81b1c3094.tar.gz
gdb-c6ad9598d052bb904008464632ecb3f81b1c3094.tar.bz2
2001-06-01 Michael Snyder <msnyder@redhat.com>
* infrun.c (handle_inferior_event): After singlestepping over a thread-specific breakpoint, use currently_stepping() to decide whether to step or continue.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/infrun.c36
2 files changed, 28 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7504d2c..c213315 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2001-06-01 Michael Snyder <msnyder@redhat.com>
+
+ * infrun.c (handle_inferior_event): After singlestepping over a
+ thread-specific breakpoint, use currently_stepping() to decide
+ whether to step or continue.
+
2001-06-01 Jim Blandy <jimb@redhat.com>
* gnu-v3-abi.c (gnu_v3_abi_ops, vtable_type_gdbarch_data): Make
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 824b610..aa93cf5 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1472,12 +1472,16 @@ handle_inferior_event (struct execution_control_state *ecs)
/* We need to restart all the threads now,
* unless we're running in scheduler-locked mode.
- * FIXME: shouldn't we look at currently_stepping ()?
+ * Use currently_stepping to determine whether to
+ * step or continue.
*/
+
if (scheduler_mode == schedlock_on)
- target_resume (ecs->ptid, 0, TARGET_SIGNAL_0);
+ target_resume (ecs->ptid,
+ currently_stepping (ecs), TARGET_SIGNAL_0);
else
- target_resume (RESUME_ALL, 0, TARGET_SIGNAL_0);
+ target_resume (RESUME_ALL,
+ currently_stepping (ecs), TARGET_SIGNAL_0);
ecs->infwait_state = infwait_normal_state;
prepare_to_wait (ecs);
return;
@@ -1879,6 +1883,21 @@ handle_inferior_event (struct execution_control_state *ecs)
if (remove_status != 0)
{
write_pc_pid (stop_pc - DECR_PC_AFTER_BREAK + 4, ecs->ptid);
+ /* We need to restart all the threads now,
+ * unles we're running in scheduler-locked mode.
+ * Use currently_stepping to determine whether to
+ * step or continue.
+ */
+ if (scheduler_mode == schedlock_on)
+ target_resume (ecs->ptid,
+ currently_stepping (ecs),
+ TARGET_SIGNAL_0);
+ else
+ target_resume (RESUME_ALL,
+ currently_stepping (ecs),
+ TARGET_SIGNAL_0);
+ prepare_to_wait (ecs);
+ return;
}
else
{ /* Single step */
@@ -1892,17 +1911,6 @@ handle_inferior_event (struct execution_control_state *ecs)
prepare_to_wait (ecs);
return;
}
-
- /* We need to restart all the threads now,
- * unles we're running in scheduler-locked mode.
- * FIXME: shouldn't we look at currently_stepping ()?
- */
- if (scheduler_mode == schedlock_on)
- target_resume (ecs->ptid, 0, TARGET_SIGNAL_0);
- else
- target_resume (RESUME_ALL, 0, TARGET_SIGNAL_0);
- prepare_to_wait (ecs);
- return;
}
else
{