Suggested by Vladimir Prus <ghost@cs.msu.su>:

* infrun.c (handle_inferior_event): Check for line information in
	undebuggable functions.
This commit is contained in:
Daniel Jacobowitz
2005-08-01 03:32:32 +00:00
parent c2dde2c9c9
commit 7ed0fe6656
2 changed files with 12 additions and 5 deletions

View 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> 2005-07-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add * cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add

View 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 /* NOTE: tausq/2004-05-24: This if block used to be done before all
the trampoline processing logic, however, there are some trampolines the trampoline processing logic, however, there are some trampolines
that have no names, so we should do trampoline handling first. */ that have no names, so we should do trampoline handling first. */
if (step_over_calls == STEP_OVER_UNDEBUGGABLE if (step_over_calls == STEP_OVER_UNDEBUGGABLE
&& ecs->stop_func_name == NULL) && ecs->stop_func_name == NULL
&& ecs->sal.line == 0)
{ {
if (debug_infrun) if (debug_infrun)
fprintf_unfiltered (gdb_stdlog, "infrun: stepped into undebuggable function\n"); fprintf_unfiltered (gdb_stdlog, "infrun: stepped into undebuggable function\n");
/* The inferior just stepped into, or returned to, an /* The inferior just stepped into, or returned to, an
undebuggable function (where there is no symbol, not even a undebuggable function (where there is no debugging information
minimal symbol, corresponding to the address where the and no line number corresponding to the address where the
inferior stopped). Since we want to skip this kind of code, inferior stopped). Since we want to skip this kind of code,
we keep going until the inferior returns from this we keep going until the inferior returns from this
function. */ function. */
@ -2532,8 +2535,6 @@ process_event_stop_test:
return; return;
} }
ecs->sal = find_pc_line (stop_pc, 0);
if (ecs->sal.line == 0) if (ecs->sal.line == 0)
{ {
/* We have no line number information. That means to stop /* We have no line number information. That means to stop