Suggested by Vladimir Prus <ghost@cs.msu.su>:
authorDaniel Jacobowitz <drow@false.org>
Mon, 1 Aug 2005 03:32:32 +0000 (03:32 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 1 Aug 2005 03:32:32 +0000 (03:32 +0000)
* infrun.c (handle_inferior_event): Check for line information in
undebuggable functions.

gdb/ChangeLog
gdb/infrun.c

index 4a38761c5d2e9721a0f4934a8827e6c19f57db64..630aca39ecc384c07abf7f81908c141f996ab993 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-31  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Suggested by Vladimir Prus <ghost@cs.msu.su>:
+       * infrun.c (handle_inferior_event): Check for line information in
+       undebuggable functions.
+
 2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add
index f0a3a5d61a1c079bc342da9275533b58a65eb90a..edaf17a40b47ed26abd076ace54d224442fbe2be 100644 (file)
@@ -2485,18 +2485,21 @@ process_event_stop_test:
        }
     }
 
+  ecs->sal = find_pc_line (stop_pc, 0);
+
   /* NOTE: tausq/2004-05-24: This if block used to be done before all
      the trampoline processing logic, however, there are some trampolines 
      that have no names, so we should do trampoline handling first.  */
   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
-      && ecs->stop_func_name == NULL)
+      && ecs->stop_func_name == NULL
+      && ecs->sal.line == 0)
     {
       if (debug_infrun)
         fprintf_unfiltered (gdb_stdlog, "infrun: stepped into undebuggable function\n");
 
       /* 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
+         undebuggable function (where there is no debugging information
+         and no line number 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.  */
@@ -2532,8 +2535,6 @@ process_event_stop_test:
       return;
     }
 
-  ecs->sal = find_pc_line (stop_pc, 0);
-
   if (ecs->sal.line == 0)
     {
       /* We have no line number information.  That means to stop