2004-04-29 Joel Brobecker <brobecker@gnat.com>
authorAndrew Cagney <cagney@redhat.com>
Thu, 29 Apr 2004 22:36:24 +0000 (22:36 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 29 Apr 2004 22:36:24 +0000 (22:36 +0000)
Committed by Andrew Cagney.
        * infrun.c (handle_inferior_event): Rely on frame IDs to detect
        function calls.

gdb/ChangeLog
gdb/infrun.c

index efd7c50..37dd1db 100644 (file)
@@ -1,3 +1,9 @@
+2004-04-29  Joel Brobecker  <brobecker@gnat.com>
+
+       Committed by Andrew Cagney.
+        * infrun.c (handle_inferior_event): Rely on frame IDs to detect
+        function calls.
+
 2004-04-29  Andrew Cagney  <cagney@redhat.com>
 
        * mips-tdep.c (mips_abi_regsize): Replace tdep parameter with
index fea2498..5f11475 100644 (file)
@@ -2465,6 +2465,18 @@ 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;
+    }
+
   /* We can't update step_sp every time through the loop, because
      reading the stack pointer would slow down stepping too much.
      But we can update it every time we leave the step range.  */
@@ -2543,11 +2555,8 @@ process_event_stop_test:
       return;
     }
 
-  if (((stop_pc == ecs->stop_func_start        /* Quick test */
-       || in_prologue (stop_pc, ecs->stop_func_start))
-       && !IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
-      || IN_SOLIB_CALL_TRAMPOLINE (stop_pc, ecs->stop_func_name)
-      || ecs->stop_func_name == 0)
+  if (frame_id_eq (get_frame_id (get_prev_frame (get_current_frame ())),
+                   step_frame_id))
     {
       /* It's a subroutine call.  */
       handle_step_into_function (ecs);