[answering to self...] > Why does this "hack" not work? It was precisely devised for this purpose.
Probably because you don't set fs->signal_frame in the fallback routine: /* SIGILL, SIGFPE and SIGTRAP are delivered with psw_addr after the faulting instruction rather than before it. Don't set FS->signal_frame in that case. */ if (!signo || (*signo != 4 && *signo != 5 && *signo != 8)) fs->signal_frame = 1; You might need to un-overload fs->signal_frame then. -- Eric Botcazou