Re: Source file structure for fenv.h support

Joel Sherrill <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAF9ehCXU7hLhpitx+zzhcXAd88uVr9AmDpTgW0qrPyZAJTaZRQ@mail.gmail.com>
On Tue, Jul 30, 2019 at 11:05 AM Howland, Craig D. - US via newlib <
[email protected]> wrote:

> >From: [email protected] <[email protected]> on
> behalf of Corinna Vinschen <[email protected]>
> >Sent: Tuesday, July 30, 2019 3:37 AM
> >To: Joel Sherrill
> >Cc: Newlib; Vaibhav Gupta
> >Subject: Re: Source file structure for fenv.h support
> >
> >On Jul 29 13:48, Joel Sherrill wrote:
> >> Hi
> >>
> >> Vaibhav is looking at porting *BSD fenv support for a few more
> >> architectures. Right now, it looks like there is only SPU and RISC-V
> >> support with this structure:
> >>
> >> - libc/machine/ARCH/include/fenv.h - portable POSIX interface, includes
> >> sys/fenv.h
> >> - libc/machine/ARCH/include/sys/fenv.h - architecture specific details.
> >>
> >> I think (but have not confirmed) that the RISC-V version is correct per
> >> POSIX. The SPU version clearly is not as it does not have the right
> >> signature for most of the methods as they all are supposed to return int
> >> and not void.
> >>
> >> My proposal is to verify the RISC-V include/fenv.h is POSIX correct and
> >> then move it to libc/include/fenv.h.For completeness, we may need a
> >> minimal, non-functional sys/fenv.h which defines dummy fexcept_t and
> fenv_t
> >> structures.  But it becomes the responsibility of a port to provide
> >> <sys/fenv.h> and implementations.
> >>
> >> In the event a port provides the entire implementation as inlines, it
> can
> >> override fenv.h.
> >>
> >> Does this make sense? Is it a good approach? I want to avoid
> duplicating a
> >> pure POSIX version of fenv.h like RISC-V has.
> >
> >Sounds good to me, but please don't forget the Cygwin version of fenv.h.
> >It's sys parts are basically the x86/x86_64 variation of the same, and
> >it's pretty complete, including glibc-only and BSD-only functions.
> >
> >
> >Corinna
>
> --------------------------------------------------------------------------------
>      I think the proposal is one fairly-trivial step short.  As noted,
> very
> few architectures have support for it, but only "a few more" are planned
> to
> be added.  For there to be a base libc/include/fenv.h, there also need to
> be
> default functions which return an error.  Lacking that, there probably
> should
> not be a default libc/include/fenv.h.  (Perhaps there could be a default
> sys/env.h with a #error in it, but stub error-returning functions would be
> better.)
>

Good idea. Put them in libm/math as individual files?

Looking at opengroup.org, it looks like returning a non-zero number is
sufficient. No errno's are defined. We could also set errno=ENOSYS
if you like.

I will try to put together a stub and header file proposal patch for
discussion.

--joel


>                                 Craig
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.