Date: Sun, 5 Nov 1995 19:02:33 -0800 (PST) From: julian@TFS.COM (Julian Elischer) To: markd@grizzly.com (Mark Diekhans) Cc: bde@zeta.org.au, julian@ref.tfs.com, freebsd-hackers@freebsd.org, markd@grizzly.com, jkh@time.cdrom.com Subject: Re: NPX still broken in 2.1.0-951104-SNAP... Message-ID: <m0tCHpR-0003w0C@TFS.COM> In-Reply-To: <199511060224.SAA06030@Grizzly.COM> from "Mark Diekhans" at Nov 5, 95 06:24:20 pm
next in thread | previous in thread | raw e-mail | index | archive | help
da-man speaks the truth bruce.. just because there is a BETTER solution doesn't mean we should have extra problems in 2.1 for no reason.... julian ~v > > > Hey Bruce, > > <responses to various piece of mail from bde included> > > >>but is it MORE broken than it is now to do this? > >>surely such a simple change that might help some people > >>is worth puting in now? > > > >I think the current behaviour (trapping) is more useful for > >most programs. Programs that can handle IEEE arithmetic > >should do something special to check and get it at confiuration > >time since it is not guaranteed. > > Its incompatible with every Unix system I have access to. See enclosed table. > No system core dumps! I don't have any standards handy, but SCO, which > is X/Open, ANSI, and POSIX compatible sets errno and returns NaN. > > Most portable software checks errno, although the best approach is to check > both errno and NaN. > > >The change similar to mapping page 0 and putting 0's there so > >that strcmp("foo", NULL) works right. > >Surely such a simple change that might help some people > >is worth puting in now? ;-) > > I don't see this as being analogous. strcmp to NULL is an undefined, invalid > operation. IMHO calling acos with an out of range operand is an error case > akin to calling open with an invalid file name. The big difference between > this and strcmp is that you can read a man page and find out the expected > error respones. > Sure, it would help some people to core dump if you couldn't open a file. It > sure would be pain in the rear for us portable software writers that have to > deal with this kind of incompatibility. Call some non-standard, FreeBSD only > function (fpsetmask) to make the libraries behave as they do on other systems. > > > >>that wants to get a status back from the floating point math functions instead > >>of a core dump. Tcl is most notable, but it breaks several other packages as > >>well. > > > >The tcl port has a patch to set the exception mask to ~0. > > The ports are very handy, but they are no substitute for compatibility. > For instance, the ports don't have the lastest Tcl alpha. Elk is in > there, but it doesn't have a patch to add the fpsetmask call. It just > happens to not have as extensive a test suite as Tcl, but this breaks it. > > > >This still fails for more-portable software that sets errno to 0 before > >calling every math function and checks for errno being ERANGE or EDOM > >after the call (this is the only error reporting mechanism guaranteed > >in ANSI C). You can fix this by changing CFLAGS in libc/msun/Makefile > >to the POSIX/ANSI setting recommended there (-D_POSIX_MODE), but then > >acos(2.0) will return a stupid value (0 instead of NaN). > > Yes, I can change my system to work like others (I already have), its > the problem of writing portable code for others that I am worried about. > > It seems pretty straight forward to modify k_standard.c to return NaN > in POSIX_MODE. Making the modified POSIX mode the default, and changing the > default FPU exception mask, would make the vast majority of the software out > there happy. > > Just another PD software writer trying to help make FreeBSD a good target > to port to (unlike Linux). > > Mark > > ---------------------------------------------- > SCO 3.2v5: > acos (2.0) = nan, errno = 33 > ---------------------------------------------- > BSDI 1.1: > acos (2.0) = NaN, errno = 0 > ---------------------------------------------- > HP-UX A.09.01: > acos: DOMAIN error > acos (2.0) = 0, errno = 33 > ---------------------------------------------- > IRIX 5.3 > acos (2.0) = nan0x7fffffff, errno = 33 > ---------------------------------------------- > OSF/1 V3.0 > acos (2.0) = 0, errno = 33 > ---------------------------------------------- > ULTRIX 4.3 > acos (2.0) = NaN, errno = 33 > ---------------------------------------------- > SunOS olden 4.1.3_U1 1 sun4c > acos: DOMAIN error > acos (2.0) = NaN, errno = 33 > ---------------------------------------------- > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0tCHpR-0003w0C>