This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

conformtest: Add test data for fenv.h


The conform/ tests don't test fenv.h at all.  This patch adds test
data for this header (C11 and POSIX add no requirements beyond those
in C99, so the data doesn't have any complicated conditionals).

I do intend to fix the problems (bug 3439) with fenv.h constants not
being usable in #if, which show as failures of the new tests, but
think that's independent of this patch (so far we've made these tests
represent standard requirements, whether they then pass or fail with
current glibc).

Tested x86_64.

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>.

diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index d3e41be..af21941 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 0000000..e5ab90b
--- /dev/null
+++ b/conform/data/fenv.h-data
@@ -0,0 +1,33 @@
+#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_*
+
+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 *)
+
+#endif
diff --git a/include/fenv.h b/include/fenv.h
index 59d4c3f..67ef385 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

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]