diff options
author | Michael Snyder <msnyder@vmware.com> | 2001-06-01 23:23:19 +0000 |
---|---|---|
committer | Michael Snyder <msnyder@vmware.com> | 2001-06-01 23:23:19 +0000 |
commit | c6ad9598d052bb904008464632ecb3f81b1c3094 (patch) | |
tree | dc06ecf9d91994a939d297601b4274029ed88687 /gdb | |
parent | b27b8843dcccc202de20a9ac2d32d2017c07d859 (diff) | |
download | gdb-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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | 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 <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 { |