[PATCH v6 2/3] Add default implementation of fenv.h and all methods

Joel Sherrill joel@rtems.org
Thu Aug 8 20:04:00 GMT 2019


On Thu, Aug 8, 2019 at 2:05 PM Corinna Vinschen <vinschen@redhat.com> wrote:

> On Aug  8 11:27, joel@rtems.org wrote:
> > +/*
> > + * This is a non-functional implementation that should be overridden
> > + * by an architecture specific implementation in
> newlib/libm/machine/ARCH.
> > + *
> > + * The implmentation must defined FE_DFL_ENV to point to a default
> > + * environment of type fenv_t.
> > + */
> > +static const fenv_t fe_dfl_env = { 0 };
> > +const fenv_t *_fe_dfl_env = &fe_dfl_env;
>
> Bummer.  This doesn't work.  The problem is that Cygwin needs to
> initialize fe_dfl_env, like this:
>
>   fegetenv (&fe_dfl_env);
>
> However, even if I drop `const' as in Cygwin, if fe_dfl_env is static
> I can't access it from the _feinitialise() function at DLL init time.
>
> I'm not quite sure how to fix this.  Any ideas?  Do I have to drop
> the idea to reuse this file and we need our own target-specific one?
>

I'm not opposed to making it non-const and not static. Whatever it
takes to make it work on Cygwin.

>
>
> Corinna
>
>
> P.S.: Apart from this problem we can use this now.  We should just add
> the GNU specific FE_NOMASK_ENV soon, too.
>

I'm not disagreeing but can that be added after this bulk is pushed?

It would be easier to address the Cygwin issue as you see fit and add this
if you could just change it in git. :)

--joel


>
> --
> Corinna Vinschen
> Cygwin Maintainer
> Red Hat
>



More information about the Newlib mailing list