From: "Michael Kerrisk" <mtk.manpages-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
To: "Joseph S. Myers" <joseph-qD8j1LwMmJjtCj0u4l0SBw@public.gmane.org>
Cc: libc-alpha-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org,
Andreas Jaeger <aj-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>,
Andries Brouwer <Andries.Brouwer-rh8NL+sEX9E@public.gmane.org>,
linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: Report bugs for variations in error handling in math functions?
Date: Fri, 25 Jul 2008 17:53:06 +0200 [thread overview]
Message-ID: <cfd18e0f0807250853q636b8d2dx8cefd53bc672b7a9@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0807251535040.7701-9YEB1lltEqivcGRMvF24k2I39yigxGEX@public.gmane.org>
On Fri, Jul 25, 2008 at 5:43 PM, Joseph S. Myers
<joseph-qD8j1LwMmJjtCj0u4l0SBw@public.gmane.org> wrote:
> On Fri, 25 Jul 2008, Michael Kerrisk wrote:
>
>> Currently, I'm revising all of the math pages in man-pages, and in the
>> process testing the error handling (glibc 2.8) for each function.
>>
>> I find the following:
>>
>> a) on error, many (probably a majority of) functions set errno AND
>> raise an exception (fetestexcept()).
>> b) on error, a very few functions DO set errno but DON"T raise an
>> exception (fetestexcept()).
>> c) on error, a few functions DON'T set errno but DO raise an exception
>> (fetestexcept()).
>> d) on error, a very few functions pursue a mixture of all of the
>> above, depending on the error.
>>
>> A math_error(7) page that I recently wrote (see
>> http://www.kernel.org/doc/man-pages/online/pages/man7/math_error.7.html
>> ) currently implies that all functions should do a). Clearly I'll
>> need to amend that.
>>
>> But the main question is, should I raise glibc bugs for the functions
>> in cases b), c), and d)?
>
> I've run third-party C conformance tests on glibc that have shown similar
> issues.
>
> C90 requires errno to be set by various functions. C99 allows it not to
> be set, in an incompatible quiet change from C90, if exceptions are used
> instead. The correct handling under C99 depends on the value of
> math_errhandling. Implementing math_errhandling requires compiler and
> linker support (see messages linked from the CONFORMANCE file):
Yes, I saw those already.
> if any
> translation unit is compiled with -fno-math-errno then math_errhandling &
> MATH_ERRNO must not be set. (I'd suggest that the compiler set object
> attributes which the static linker then uses to provide the relevant
> information to libc.)
>
> I think the correct approach is to consider it a bug if functions do not
> set errno, or do not raise exceptions - that is, all of (b), (c) and (d)
> are bugs. This would allow math_errhandling to be
> MATH_ERRNO|MATH_ERREXCEPT unless translation units are compiled with
> options preventing this, and make the error handling options available
> consistent across the math.h functions supported by glibc. To conform
> with C99, at least one approach (errno or exceptions) must be consistently
> supported across all the functions, in any case.
Not even one approach is consistent. Many functions don't set errno.
But there are one or two that don't raise exceptions: the Bessel
functions (j0(), y0 etc), for example. It's all a bit of a mess,
unfortunately.
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-07-25 15:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-25 10:14 Report bugs for variations in error handling in math functions? Michael Kerrisk
[not found] ` <cfd18e0f0807250314h5c063754gd672c04b2eeef2f6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-07-25 15:43 ` Joseph S. Myers
[not found] ` <Pine.LNX.4.64.0807251535040.7701-9YEB1lltEqivcGRMvF24k2I39yigxGEX@public.gmane.org>
2008-07-25 15:53 ` Michael Kerrisk [this message]
[not found] ` <cfd18e0f0807250853q636b8d2dx8cefd53bc672b7a9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-07-25 17:06 ` Joseph S. Myers
2008-07-28 5:54 ` Michael Kerrisk
[not found] ` <cfd18e0f0807272254k54343bc3pdddde9afca423eec-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-07-28 17:05 ` Joseph S. Myers
2008-07-31 14:02 ` Michael Kerrisk
[not found] ` <4891C60A.5000103-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-04 5:48 ` Michael Kerrisk
[not found] ` <cfd18e0f0808032248l3f9d7ef4r2af2a989da4d9eb9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-06 9:27 ` Michael Kerrisk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cfd18e0f0807250853q636b8d2dx8cefd53bc672b7a9@mail.gmail.com \
--to=mtk.manpages-gm/ye1e23mwn+bqq9rbeug@public.gmane.org \
--cc=Andries.Brouwer-rh8NL+sEX9E@public.gmane.org \
--cc=aj-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org \
--cc=joseph-qD8j1LwMmJjtCj0u4l0SBw@public.gmane.org \
--cc=libc-alpha-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org \
--cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox