Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Feb 2006 16:01:05 -0000
From:      "Bruce Evans" <bde@zeta.org.au>
To:        <Administrator>
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:  <000601c62811$dfaaddf0$fe07000a@Home.local>
In-Reply-To: <43E1E8B0.3030702@uni-mainz.de>
References:  <43E1D1E9.3000302@mail.uni-mainz.de><43E1E8B0.3030702@uni-mainz.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000601c62811$dfaaddf0$fe07000a>