2001-06-01 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 1 Jun 2001 23:23:19 +0000 (23:23 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 1 Jun 2001 23:23:19 +0000 (23:23 +0000)
* infrun.c (handle_inferior_event): After singlestepping over a
thread-specific breakpoint, use currently_stepping() to decide
whether to step or continue.

gdb/ChangeLog
gdb/infrun.c

index 7504d2c..c213315 100644 (file)
@@ -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
index 824b610..aa93cf5 100644 (file)
@@ -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
              {