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