
Practically, it is possible to achieve the same flexibility by using setjmp()/longjmp() with minor effort.
Are you aware of the C99 standard which defines setjmp()/longjmp() to provide non-local jumps but does not require that longjmp() preserves the current stack frame, e. g. jumping into a function which was exited via a call to > longjmp() is undefined?
Yes. The implementation I'm suggesting jumps into a function that hasn't exited yet. In short, we dump a memory image of the process including the stack and the jump buffer. The jump back is done into one of the predecessors of the image dump function, so the function has not exited yet. The relevant local variables are marked as volatile and are therefore clearly defined. --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.