This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Set the stepping range from the function@PC, not@stop_pc.
On Friday 05 December 2008 20:43:28, Daniel Jacobowitz wrote:
> On Fri, Dec 05, 2008 at 09:30:38PM +0100, Ulrich Weigand wrote:
> > > I think it's obvious after the discussion, but I'd still like to
> > > have your approval. OK? Any objections?
> >
> > It might be better to use get_frame_pc (frame) instead of read_pc (),
>
> Yes, please.
>
Good idea. I wonder if this I've checked this in then. There are two
other instances of read_pc in infcmd.c that could use the same idiom --- I
guess these calls predate the sentinel frame.
--
Pedro Alves
2008-12-05 Pedro Alves <pedro@codesourcery.com>
* infcmd.c (step_1, step_once): Look up the stepping range based
on the current frame's PC, not on stop_pc.
---
gdb/infcmd.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
Index: src/gdb/infcmd.c
===================================================================
--- src.orig/gdb/infcmd.c 2008-12-05 20:03:59.000000000 +0000
+++ src/gdb/infcmd.c 2008-12-05 21:42:56.000000000 +0000
@@ -812,12 +812,15 @@ step_1 (int skip_subroutines, int single
if (!single_inst)
{
- find_pc_line_pc_range (stop_pc,
+ CORE_ADDR pc;
+
+ pc = get_frame_pc (frame);
+ find_pc_line_pc_range (pc,
&tp->step_range_start, &tp->step_range_end);
if (tp->step_range_end == 0)
{
char *name;
- if (find_pc_partial_function (stop_pc, &name,
+ if (find_pc_partial_function (pc, &name,
&tp->step_range_start,
&tp->step_range_end) == 0)
error (_("Cannot find bounds of current function"));
@@ -932,7 +935,10 @@ step_once (int skip_subroutines, int sin
if (!single_inst)
{
- find_pc_line_pc_range (stop_pc,
+ CORE_ADDR pc;
+
+ pc = get_frame_pc (frame);
+ find_pc_line_pc_range (pc,
&tp->step_range_start, &tp->step_range_end);
/* If we have no line info, switch to stepi mode. */
@@ -943,7 +949,7 @@ step_once (int skip_subroutines, int sin
else if (tp->step_range_end == 0)
{
char *name;
- if (find_pc_partial_function (stop_pc, &name,
+ if (find_pc_partial_function (pc, &name,
&tp->step_range_start,
&tp->step_range_end) == 0)
error (_("Cannot find bounds of current function"));