aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--conform/conformtest.pl2
-rw-r--r--conform/data/fenv.h-data36
-rw-r--r--include/fenv.h2
4 files changed, 44 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c13fe181f1..be5ab22729 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2012-11-02 Joseph Myers <joseph@codesourcery.com>
+ * conform/conformtest.pl (@headers): Add fenv.h.
+ * conform/data/fenv.h-data: New file.
+ * include/fenv.h [_ISOMAC]: Disable all contents of file except
+ include of <math/fenv.h>.
+
* conform/data/complex.h-data [ISO99 || ISO11 || XOPEN2K ||
POSIX2008]: Change condition to [!ISO && !POSIX && !XPG3 && !XPG4
&& !UNIX98]. Enables tests for XOPEN2K8.
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index d3e41be4cb..af21941596 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -27,7 +27,7 @@ if (@headers == ()) {
"netdb.h", "ndbm.h", "mqueue.h", "monetary.h", "math.h",
"locale.h", "libgen.h", "limits.h", "langinfo.h", "iso646.h",
"inttypes.h", "iconv.h", "grp.h", "glob.h", "ftw.h", "fnmatch.h",
- "fmtmsg.h", "float.h", "fcntl.h", "errno.h", "dlfcn.h",
+ "fmtmsg.h", "float.h", "fenv.h", "fcntl.h", "errno.h", "dlfcn.h",
"dirent.h", "ctype.h", "cpio.h", "complex.h", "assert.h",
"arpa/inet.h", "aio.h");
}
diff --git a/conform/data/fenv.h-data b/conform/data/fenv.h-data
new file mode 100644
index 0000000000..bb33d4b06e
--- /dev/null
+++ b/conform/data/fenv.h-data
@@ -0,0 +1,36 @@
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
+type fenv_t
+type fexcept_t
+
+optional-macro-int-constant FE_DIVBYZERO
+optional-macro-int-constant FE_INEXACT
+optional-macro-int-constant FE_INVALID
+optional-macro-int-constant FE_OVERFLOW
+optional-macro-int-constant FE_UNDERFLOW
+macro-int-constant FE_ALL_EXCEPT
+
+optional-macro-int-constant FE_DOWNWARD
+optional-macro-int-constant FE_TONEAREST
+optional-macro-int-constant FE_TOWARDZERO
+optional-macro-int-constant FE_UPWARD
+
+allow FE_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
+
+macro FE_DFL_ENV {const fenv_t *}
+
+function int feclearexcept (int)
+function int fegetexceptflag (fexcept_t*, int)
+function int feraiseexcept (int)
+function int fesetexceptflag (const fexcept_t*, int)
+function int fetestexcept (int)
+function int fegetround (void)
+function int fesetround (int)
+function int fegetenv (fenv_t*)
+function int feholdexcept (fenv_t*)
+function int fesetenv (const fenv_t*)
+function int feupdateenv (const fenv_t *)
+
+#if !defined ISO && !defined ISO99 && !defined ISO11
+allow *_t
+#endif
+#endif
diff --git a/include/fenv.h b/include/fenv.h
index 59d4c3f63c..67ef385bbf 100644
--- a/include/fenv.h
+++ b/include/fenv.h
@@ -1,6 +1,7 @@
#ifndef _FENV_H
#include <math/fenv.h>
+#ifndef _ISOMAC
/* Now define the internal interfaces. */
extern int __feclearexcept (int __excepts);
@@ -19,5 +20,6 @@ libm_hidden_proto (fesetround)
libm_hidden_proto (feholdexcept)
libm_hidden_proto (feupdateenv)
libm_hidden_proto (fetestexcept)
+#endif
#endif