i386 and x86_64 fenv support

Joel Sherrill joel@rtems.org
Tue Aug 27 13:32:00 GMT 2019


Earlier we discussed moving the winsup fenv.h files to newlib. Splitting
winsup/cygwin/include/fenv.h to create a sys/fenv.h looks easy enough.
But I have some status and a question after tinkering with this code out
of tree and compiling with the RTEMS i386 and x86_64

It includes winsup.h and wincap.h but it doesn't need them.

It is a C++ file and changing it to C only resulted in needing to change
bool to int and true/false to 1/0. That should be OK.

There are prototypes for fegetprec() and fesetprec(). I think the
prototypes need to move to the shared fenv.h and commented
stubs for the constants needs to be in the shared dummy sys/fenv.h.
Does this sound right?

My remaining issue is that it appears that i386 and x86_64 will need to
share the same files. Do I just copy the files to both machine directories?
I don't know if newlib's build infrastructure supports putting it in one
place and using it in another architecture.

FWIW this moved up in importance because the x86_64 RTEMS toolchain
won't build with the gcc/newlib master because libquadmath assumes the
existence of the FE_TONEAREST since it the autoconf probe now sees
we have fenv.h support now. This is probably a bug in this code since it
can't assume a rounding mode is supported.

Feedback appreciated.



More information about the Newlib mailing list