[RFA] OSF/1 - "next" over prologueless function call

Andrew Cagney cagney@gnu.org
Thu Dec 4 01:49:00 GMT 2003


>> See my recent comments further down in that file.  I think GDB should be 
>> using:
>> 
>> 	frame_id_unwind(current_frame) == frame_id_from_before_stepi
>> 
>> to determine if it did a step into a function.  What happens if that is 
>> used?
> 
> 
> Sounds like a good idea, almost obvious actually :-).  I tried the
> following change on osf1 and x86-linux without any regression, and it
> does solve the problem on osf1.

(only took 15 years to realise how "obvious" it was :-)

> However, I tried it on sparc-solaris with the gdb-6.0 sources because
> I knew this target hasn't transitioned to the new frame framework.
> It doesn't look like GDB is liking this change there (I've got a lot of
> timeouts in call-ar-st). I am currently retrying on the head right now,
> hoping the testsuite completes in a reasonable amount of time.
> 
> 
> --- infrun.c    25 Nov 2003 16:01:36 -0000      1.122
> +++ infrun.c    3 Dec 2003 19:24:07 -0000
> @@ -2473,6 +2473,8 @@ process_event_stop_test:
>      }
> 
>    if (((stop_pc == ecs->stop_func_start        /* Quick test */
> +        || frame_id_eq (get_frame_id (get_prev_frame (get_current_frame ())),
> +                        step_frame_id)
>         || 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)
> 
> 
> Stay tuned.

You can use legacy_frame_p for differentiating old and new code.

Hmm, is "stop_pc == ecs->stop_func_start" a valid test, what happens if 
the program is at 1: and there's a next?

	foo:
		...
	1:	goto foo

Hmm, is in_prologue() adding value when frame_id always works?  Unless 
it's being used to handle stepping through a prologue?

Andrew




More information about the Gdb-patches mailing list