summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2005-08-01 03:32:32 +0000
committerDaniel Jacobowitz <dan@debian.org>2005-08-01 03:32:32 +0000
commitce4d16ffb5d11c1b7b5ef32d6f6db4c25f8f9793 (patch)
tree98a67523bc574dc8c38f80c8eb1973fa9eb83c1b
parent21156c5d8673bce2c950530aa2af4320144a05e0 (diff)
downloadgdb-ce4d16ffb5d11c1b7b5ef32d6f6db4c25f8f9793.tar.gz
Suggested by Vladimir Prus <ghost@cs.msu.su>:
* infrun.c (handle_inferior_event): Check for line information in undebuggable functions.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/infrun.c11
2 files changed, 12 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4a38761c5d2..630aca39ecc 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/infrun.c b/gdb/infrun.c
index f0a3a5d61a1..edaf17a40b4 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -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