Skip to content

Commit 9b23967

Browse files
committed
provide fenv functions on windows
1 parent ec41733 commit 9b23967

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

amd64/fenv.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*/
2828

2929
#include "bsd_fpu.h"
30+
#include "math_private.h"
3031

3132
#define _fenv_static
3233
#include "fenv.h"
@@ -45,10 +46,10 @@ const fenv_t __fe_dfl_env = {
4546
__INITIAL_MXCSR__
4647
};
4748

48-
extern inline int feclearexcept(int __excepts);
49-
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
49+
extern inline DLLEXPORT int feclearexcept(int __excepts);
50+
extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts);
5051

51-
int
52+
DLLEXPORT int
5253
fesetexceptflag(const fexcept_t *flagp, int excepts)
5354
{
5455
fenv_t env;
@@ -66,7 +67,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts)
6667
return (0);
6768
}
6869

69-
int
70+
DLLEXPORT int
7071
feraiseexcept(int excepts)
7172
{
7273
fexcept_t ex = excepts;
@@ -76,11 +77,11 @@ feraiseexcept(int excepts)
7677
return (0);
7778
}
7879

79-
extern inline int fetestexcept(int __excepts);
80-
extern inline int fegetround(void);
81-
extern inline int fesetround(int __round);
80+
extern inline DLLEXPORT int fetestexcept(int __excepts);
81+
extern inline DLLEXPORT int fegetround(void);
82+
extern inline DLLEXPORT int fesetround(int __round);
8283

83-
int
84+
DLLEXPORT int
8485
fegetenv(fenv_t *envp)
8586
{
8687

@@ -94,7 +95,7 @@ fegetenv(fenv_t *envp)
9495
return (0);
9596
}
9697

97-
int
98+
DLLEXPORT int
9899
feholdexcept(fenv_t *envp)
99100
{
100101
uint32_t mxcsr;
@@ -109,9 +110,9 @@ feholdexcept(fenv_t *envp)
109110
return (0);
110111
}
111112

112-
extern inline int fesetenv(const fenv_t *__envp);
113+
extern inline DLLEXPORT int fesetenv(const fenv_t *__envp);
113114

114-
int
115+
DLLEXPORT int
115116
feupdateenv(const fenv_t *envp)
116117
{
117118
uint32_t mxcsr;

i387/fenv.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626
* $FreeBSD: src/lib/msun/i387/fenv.c,v 1.8 2011/10/21 06:25:31 das Exp $
2727
*/
2828

29-
#include <include/cdefs-compat.h>
30-
#include <include/types-compat.h>
29+
#include <cdefs-compat.h>
30+
#include <types-compat.h>
31+
#include <math_private.h>
3132
#if defined(__WIN32__) || defined(__linux__)
3233
#include <i387/bsd_npx.h>
3334
#else
@@ -93,10 +94,10 @@ __test_sse(void)
9394
return (0);
9495
}
9596

96-
extern inline int feclearexcept(int __excepts);
97-
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
97+
extern inline DLLEXPORT int feclearexcept(int __excepts);
98+
extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts);
9899

99-
int
100+
DLLEXPORT int
100101
fesetexceptflag(const fexcept_t *flagp, int excepts)
101102
{
102103
fenv_t env;
@@ -117,7 +118,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts)
117118
return (0);
118119
}
119120

120-
int
121+
DLLEXPORT int
121122
feraiseexcept(int excepts)
122123
{
123124
fexcept_t ex = excepts;
@@ -127,9 +128,9 @@ feraiseexcept(int excepts)
127128
return (0);
128129
}
129130

130-
extern inline int fetestexcept(int __excepts);
131-
extern inline int fegetround(void);
132-
extern inline int fesetround(int __round);
131+
extern inline DLLEXPORT int fetestexcept(int __excepts);
132+
extern inline DLLEXPORT int fegetround(void);
133+
extern inline DLLEXPORT int fesetround(int __round);
133134

134135
int
135136
fegetenv(fenv_t *envp)
@@ -166,9 +167,9 @@ feholdexcept(fenv_t *envp)
166167
return (0);
167168
}
168169

169-
extern inline int fesetenv(const fenv_t *__envp);
170+
extern inline DLLEXPORT int fesetenv(const fenv_t *__envp);
170171

171-
int
172+
DLLEXPORT int
172173
feupdateenv(const fenv_t *envp)
173174
{
174175
uint32_t mxcsr;

0 commit comments

Comments
 (0)