From c6ad9598d052bb904008464632ecb3f81b1c3094 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Fri, 1 Jun 2001 23:23:19 +0000 Subject: [PATCH] 2001-06-01 Michael Snyder * infrun.c (handle_inferior_event): After singlestepping over a thread-specific breakpoint, use currently_stepping() to decide whether to step or continue. --- gdb/ChangeLog | 6 ++++++ gdb/infrun.c | 36 ++++++++++++++++++++++-------------- 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 + + * 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 * 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 { -- 2.7.4