On Sat, Sep 20, 2003 at 11:20:36AM -0400, Daniel Jacobowitz wrote:
> Here's a snippet from emulate_load_store_insn. See the way the sdl and sdr
> are wrapped in fixups? Well, the fixups can't trigger: we get to
> emulate_load_store_insn a second time, and we hit the fact that sdl_op has a
> "goto sigbus" before we hit the fixup_exception call.
> It doesn't much matter, the bug I'm working on is whatever caused the first
> call. But we get a SIGBUS when arguably we ought to get a SIGSEGV.
The fixup can be triggered - think of an missaligned load or store
inside the kernel itself. If there's no fixup we'll simply assume the
instruction was in userspace and send a signal which is true unless there's
a kernel bug.
In case we deliver a signal at fault: I think it's arguable what signal is
the most appropriate one but for simplicity I decieded to consider the
address error exception as the cause so SIGBUS is the right signal. We
simply don't gather sufficient information to deciede what the right
signal to send is and it's a very rare case anyway so nobody noticed yet :)