Re: [patch/rfc] Use frame_type for sigtramp test in infrun.c

Andrew Cagney
2004-04-02T20:50:51Z

> I'm not sure what the correct way to fix this issue would be.
>
> However, simply removing the whole 'if' block makes signals.exp pass on s390.
> This is because both the handler and the signal return trampoline are now
> simply treated as calls into subroutines, and both are skipped with
> step_over_function, so that everything works just as expected.
>
> Why is this if needed in the first place? Isn't this just to work around
> frame problems that caused step_over_function to not handle signal handlers
> correctly? I.e. if we have new-style frames that work properly, can't we
> just skip that whole if?

Joel, from memory you had a change to:

if (((stop_pc == ecs->stop_func_start /* Quick test */
|| 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)
|| ecs->stop_func_name == 0)
{
/* It's a subroutine call. */
handle_step_into_function (ecs);
return;
}

pending? If we do pull the sigtramp code I think it would be prudent to
first have that committed - Joel's change greatly clarifies the logic.

Andrew