Re: m68k, signals and single-stepping

Al Viro
2010-09-30T16:50:42Z

On Thu, Sep 30, 2010 at 02:34:11PM +0200, Andreas Schwab wrote:

> > Um... What's wrong with doing that from trap_c()?
>
> IIRC that was the only way to make gdb work correctly wrt. single
> stepping over system calls and into signal handlers. If anyone wants to
> test it with today's kernel on real hardware, please go ahead.

Ouch... Resurrecting that 840av box will be interesting - most likely
a dead battery, but... ;-/ And yes, I certainly understand why qemu
testing is not sufficient for that kind of stuff - subtle enough to
make the odds of stepping on qemu bugs...

Oh, well. Anyway, the obvious ones I've got are:
* setup_frame/setup_rt_frame should report failure, so that
handle_signal() wouldn't block signals in that case (losing the original
mask, since it's not stored anywhere in that case)
* notify_resume isn't handled at all
* sigsuspend would be better off with ERESTARTNOHAND scheme.

FWIW, I wonder if it would be better to have handle_signal() call
send_sig() and clear regs.SR.T1 and forget about checking return
value of do_signal(); do_delayed_trace is still needed, since currently
there are two places that can reach it, but it'd make the code around
calling do_signal() simpler while preserving the current behaviour...