broken kernel FP completion, -mieee
I've noticed that floating point operations involving inexact results or
denormalized numbers seem to result in a SIGFPE on Alpha, whereas they do
not on any other platform. This seems to affect a large number of packages,
the most recent one I noticed was my own Festival package.
A simple demonstration:
dhd@blood-axp:~$ uname -a
Linux blood-axp.eradicator.org 2.2.13 #1 Tue Nov 2 12:55:27 EST 1999 alpha
dhd@blood-axp:~$ perl -le '$f = 1e-308; $f++; print $f'
Floating point exception
dhd@bender:~$ uname -a
Linux bender.foo.bogus 2.2.10 #125 Tue Oct 26 23:02:35 EDT 1999 m68k unknown
dhd@bender:~$ perl -le '$f = 1e-308; $f++; print $f'
dhd@elgin:~$ uname -a
Linux elgin 2.2.13 #1 Tue Nov 2 20:16:34 EST 1999 i686 unknown
dhd@elgin:~$ perl -le '$f = 1e-308; $f++; print $f'
If I understand correctly this is related to the design of the Alpha FPU,
and can be compensated for by specifying the -mieee flag in compilation.
However I was under the impression that the kernel's floating point
emulation should compensate for inexact results automatically.
Is this a bug in the kernel? Should we be recompiling things that are
broken with -mieee? (That's what I've done for Festival for the time being)
It strikes me that the Linux kernel should provide source compatibility
across platforms, and this behaviour breaks that assumption very badly.
make: *** No rule to make target `binary-argh'. Stop.