Web lists-archives.com

Symbols _fe_dfl_env and _fe_nomask_env not exported on x86_64




L.S.,

This STC fails to compile on Cygwin for x86_64:

// gcc -Wall -o stc-fenv stc-fenv.c
// Linux: gcc -Wall -o stc-fenv stc-fenv.c -lm
#define _GNU_SOURCE
#include <fenv.h>

int main()
{
    fesetenv(FE_DFL_ENV);
    fesetenv(FE_NOMASK_ENV);
}

64-@@ gcc -Wall -o stc-fenv stc-fenv.c
/tmp/cchxZMgV.o:stc-fenv.c:(.rdata$.refptr._fe_nomask_env[.refptr._fe_nomask_env]+0x0): undefined reference to `_fe_nomask_env' /tmp/cchxZMgV.o:stc-fenv.c:(.rdata$.refptr._fe_dfl_env[.refptr._fe_dfl_env]+0x0): undefined reference to `_fe_dfl_env'
collect2: error: ld returned 1 exit status

However the STC does compile on x86.

Where has the machinery gone wrong?

Regards,

Henri

-----
File /usr/include/fenv.h contains: (line 124 ff)

extern const fenv_t *_fe_dfl_env;
#define FE_DFL_ENV (_fe_dfl_env)
[snip]
...
#if __GNU_VISIBLE
[snip]
...
extern const fenv_t *_fe_nomask_env;
#define FE_NOMASK_ENV (_fe_nomask_env)
#endif /* __GNU_VISIBLE */

File winsup/cygwin/fenv.cc contains: (line 35 ff)

/* These are writable so we can initialise them at startup.  */
static fenv_t fe_dfl_env;
static fenv_t fe_nomask_env;

/* These pointers provide the outside world with read-only access to them. */
const fenv_t *_fe_dfl_env = &fe_dfl_env;
const fenv_t *_fe_nomask_env = &fe_nomask_env

=====

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple