On Tue, 2005-03-01 at 15:29, Petko Manolov wrote: > On Tue, 1 Mar 2005, Paul Brook wrote: > > > The "old" arm-none-elf and arm-linux targets still use SJLJ exceptions. They > > will probably never be "fixed" as this would involve an ABI change. > > Didn't understand that. How is all non scratch FP registers save at the > prologue related to the exceptions?
SJLJ exceptions implement unwinding by using built-in setjmp and longjump (hence SJLJ). The built-in setjmp is what you are seeing. It's saving all the registers that might possibly be affected by any functions that this routine might call and which might throw exceptions. It has no real information about which registers might be altered by other routines, so it must save all call-saved registers. SJLJ exceptions are very slow to set up, but can be very fast to unwind if throwing from deep down a call-stack. The converse is generally true for table-based unwinders. R.