broken kernel FP completion, -mieee
Hi,
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
unknown
dhd@blood-axp:~$ perl -le '$f = 1e-308; $f++; print $f'
Floating point exception
vs.
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'
1
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'
1
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.
Reply to: