Date: Thu, 02 Feb 2006 13:38:24 +0100 From: "O. Hartmann" <ohartman@uni-mainz.de> To: Bruce Evans <bde@zeta.org.au> Cc: "O. Hartmann" <ohartman@mail.uni-mainz.de>, freebsd-stable@FreeBSD.org, freebsd-amd64@FreeBSD.org Subject: Re: missing fpresetsticky in ieeefp.h Message-ID: <43E1FD40.9060408@uni-mainz.de> In-Reply-To: <20060202224815.K7234@delplex.bde.org> References: <43E1D1E9.3000302@mail.uni-mainz.de> <43E1E8B0.3030702@uni-mainz.de> <20060202224815.K7234@delplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans schrieb: > On Thu, 2 Feb 2006, O. Hartmann wrote: > >> O. Hartmann schrieb: >>> Hello. >>> I do not know whether this should be a bug report or not, I will ask >>> prior to any further action. >>> >>> Reading 'man fpresetsticky' show up a man page for FPGETROUND(3) and >>> tells me the existence of the fpresetsticky routine. > > This is a bug in the man page. fpresetsticky() is supposed to only exist > on i386's, but the man page and its link to fpresetsticky.3 are installed > for all arches. > >>> Now take a look into <machine/ieeefp.h>, where this function should >>> be declared. Nothing, I can not find this routine, it seems to be >>> 'not available' on my FreeBSD6.1-PRERELEASE AMD64 (no 32Bit >>> compatibility). > > It was removed for amd64 and never existed for some other arches. It was > apparently unused when it was removed a year ago. > >>> Background is, I try to compile GMT 4.1 and ran into this problem >>> again (I reveal this error since FBSD 5.4-PRE also on i386). >>> >>> If fpresetsticky() isn't available on amd64 anymore, it shouldn't be >>> mentioned in the manpage. But it seems to me to be a bug, so somebody >>> should confirm this. > > % RCS file: /home/ncvs/src/sys/amd64/include/ieeefp.h,v > % Working file: ieeefp.h > % head: 1.14 > % ... > % ---------------------------- > % revision 1.13 > % date: 2005/03/15 15:53:39; author: das; state: Exp; lines: +0 -20 > % Remove fpsetsticky(). This was added for SysV compatibility, but due > % to mistakes from day 1, it has always had semantics inconsistent with > % SVR4 and its successors. In particular, given argument M: > % % - On Solaris and FreeBSD/{alpha,sparc64}, it clobbers the old flags > % and *sets* the new flag word to M. (NetBSD, too?) > % - On FreeBSD/{amd64,i386}, it *clears* the flags that are specified in M > % and leaves the remaining flags unchanged (modulo a small bug on amd64.) > % - On FreeBSD/ia64, it is not implemented. > % % There is no way to fix fpsetsticky() to DTRT for both old FreeBSD apps > % and apps ported from other operating systems, so the best approach > % seems to be to kill the function and fix any apps that break. I > % couldn't find any ports that use it, and any such ports would already > % be broken on FreeBSD/ia64 and Linux anyway. > % % By the way, the routine has always been undocumented in FreeBSD, > % except for an MLINK to a manpage that doesn't describe it. This > % manpage has stated since 5.3-RELEASE that the functions it describes > % are deprecated, so that must mean that functions that it is *supposed* > % to describe but doesn't are even *more* deprecated. ;-) > % % Note that fpresetsticky() has been retained on FreeBSD/i386. As far > % as I can tell, no other operating systems or ports of FreeBSD > % implement it, so there's nothing for it to be inconsistent with. > % % PR: 75862 > % Suggested by: bde > % ---------------------------- > > Bruce Thanks a lot. In prior software compilations of GMT on FBSD/AMD64 I commented out the appropriate line in gmt_init.c without any hazardous effects - but I never used GMT that intensive having ever recognozed any malicious side effects. I should contact the guys from Soest/Hawaii asking them for any serious effects commenting out this line on amd64 architectures. Oliver
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43E1FD40.9060408>