2004-05-13 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Thu, 13 May 2004 19:34:00 +0000 (19:34 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 13 May 2004 19:34:00 +0000 (19:34 +0000)
* infrun.c (handle_inferior_event): Check for
STEP_OVER_UNDEBUGGABLE after signal trampolines and function
calls.  Update comments.

gdb/ChangeLog
gdb/infrun.c

index 151f4f3446a800aabeaaff1105177581eafc8925..ad96413124d5e1bbadb4d56723dda61131fe6b11 100644 (file)
@@ -1,3 +1,9 @@
+2004-05-13  Andrew Cagney  <cagney@redhat.com>
+
+       * infrun.c (handle_inferior_event): Check for
+       STEP_OVER_UNDEBUGGABLE after signal trampolines and function
+       calls.  Update comments.
+
 2004-05-13  Jim Blandy  <jimb@redhat.com>
 
        * aix-thread.c (supply_gprs64, fetch_regs_user_thread)
index 0ba857bb115037b8b7e275bc6173f2eaa7760bbd..225dc531387ca0699afe933cf1f0166151677fb0 100644 (file)
@@ -2411,18 +2411,6 @@ process_event_stop_test:
       return;
     }
 
-  if (step_over_calls == STEP_OVER_UNDEBUGGABLE
-      && ecs->stop_func_name == NULL)
-    {
-      /* There is no symbol, not even a minimal symbol, corresponding
-         to the address where we just stopped.  So we just stepped
-         inside undebuggable code.  Since we want to step over this
-         kind of code, we keep going until the inferior returns from
-         the current function.  */
-      handle_step_into_function (ecs);
-      return;
-    }
-
   if (step_range_end != 1
       && (step_over_calls == STEP_OVER_UNDEBUGGABLE
          || step_over_calls == STEP_OVER_ALL)
@@ -2437,6 +2425,22 @@ process_event_stop_test:
       return;
     }
 
+  if (step_over_calls == STEP_OVER_UNDEBUGGABLE
+      && ecs->stop_func_name == NULL)
+    {
+      /* The inferior just stepped into, or returned to, an
+         undebuggable function (where there is no symbol, not even a
+         minimal symbol, corresponding to the address where the
+         inferior stopped).  Since we want to skip this kind of code,
+         we keep going until the inferior returns from this
+         function.  */
+      /* NOTE: cagney/2004-05-12: This test is performed after the
+        sigtramp test as often sigtramps, while recognized by GDB,
+        have no symbol information.  */
+      handle_step_into_function (ecs);
+      return;
+    }
+
   if (frame_id_eq (frame_unwind_id (get_current_frame ()),
                    step_frame_id))
     {