My SBCL port (githum.com/shamazmazum/sbcl-dragonfly) works no longer with
DragonFly after this commit (I found it out with git bisect):
> kernel - Fix signal FP save/restore issues when AVX is enabled
> * The kernel was not saving/restoring the full FP context when entering
> or returning from a signal, leading to corrupt FP registers even when
> AVX is not used, when AVX is enabled in the kernel.
> ANY SIGNAL COULD CORRUPT THE FP STATE.
> * Fixed by adjusting the on-user-stack fpsave area sizes and operation.
> * This unfortunately changes a number of user visible structures.
> ucontext_t, mcontext_t, sigcontext, sigframe.
> It is POSSIBLE that most userland use cases will be unaffected, but I'm
> not holding my breath.
> Major-Sleuthing-by: ftigeot
> Testing-by: ftigeot, dillon
Problem is that SBCL quits on lose ("set_pseudo_atomic: pseudo atomic bits
is 1"). I build SBCL both with RESTORE_FP_CONTROL_FROM_CONTEXT and without
it. Please note, what mcontext_t structure has been changed and mc_fpregs
are now 64 byte aligned (and was 16 byte aligned). Can this be a problem?
As far as I know pseudo atomic bits reside in 'static memory' at address
which is specified in src/runtime/genesis/static-symbols.h and I really
have no idea how it can be connected with FP status register / mcontext_t.
Any advices/decisions would be appreciated.