Hi, Le 9 mai 10 à 15:42, Martin Guy a écrit :
A quick grep in the source turns up play/unix/fpuset.c:332 #elif defined(FPU_GCC_ARM) void u_fpu_setup(int when) { if (when <= 0) { unsigned int fpucw = 0x70200; __asm__ ("wfs %0" : : "r" (fpucw));/* includes bit to trap on signalling NaN (may affect libm behavior) */} }
[...]
where "wfs" is an old FPA instruction. Unfortunately, the play/unix/config.sh chooses a GCC_FPU_* macro by testing whether this file compiles, not whether it runs.
From the build log, FPU_GCC_FENV is selected, not FPU_GCC_ARM. I believe it is really fpeenableexcept() from fenv.h that fails, I guess that means a bug in either GCC or the kernel, right?
The "easy" way out is to build with "FPU_IGNORE" so yorick won't try catching FPE's at all (I'll try that by tomorrow). This way it will run on all machines, but with the drawback that it will die upon FPE's instead of entering debug mode. I'm not sure whether this is better than the current situation, where yorick runs well on most machines and not at all on other machines.
Regards, Thibaut.