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: Update expectations for more ISO C headers


Continuing the review of conformtest data for ISO C standards, I
propose this patch updating the data for locale.h, math.h, setjmp.h,
signal.h and stdarg.h to correspond more accurately with C90, C99 and
C11 and to use conformtest features to describe as many requirements
of the standards on those headers as possible.

Tested x86_64.  With this patch, locale.h conformtest failures will
appear for all standards until Paul Eggert's (approved) patch for bug
3440 goes in, and math.h failures will appear for C99-based standards
until at least the math.h part of the similar bug 3439 is fixed.
Since the makefiles currently ignore all errors from conformtest, and
there are existing errors from conformtest for other standards, I
think this is fine.

2012-05-07  Joseph Myers  <joseph@codesourcery.com>

	* conform/data/locale.h-data (NULL): Use macro-constant.  Require
	== 0.
	(LC_ALL): Use macro-int-constant.
	(LC_COLLATE): Likewise.
	(LC_CTYPE): Likewise.
	(LC_MESSAGES): Likewise.
	(LC_MONETARY): Likewise.
	(LC_NUMERIC): Likewise.
	(LC_TIME): Likewise.
	[ISO || ISO99 || ISO11] (LC_MESSAGES): Do not require.
	(LC_*): Change to LC_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*.
	[ISO || ISO99 || ISO11] (*_t): Do not allow.
	* conform/data/math.h-data (HUGE_VAL): Use macro-constant.
	Specify type.
	[C99-based standards] (float_t): Expect type.
	[C99-based standards] (double_t): Expect type.
	[C99-based standards] (HUGE_VALF): Use macro-constant.  Specify
	type.
	[C99-based standards] (HUGE_VALL): Likewise.
	[C99-based standards] (INFINITY): Likewise.
	[C99-based standards] (NAN): Likewise.
	[C99-based standards] (FP_INFINITE): Use macro-int-constant.
	[C99-based standards] (FP_NAN): Likewise.
	[C99-based standards] (FP_NORMAL): Likewise.
	[C99-based standards] (FP_SUBNORMAL): Likewise.
	[C99-based standards] (FP_ZERO): Likewise.
	[C99-based standards] (FP_FAST_FMA): Use
	optional-macro-int-constant.  Specify type.  Require == 1.
	[C99-based standards] (FP_FAST_FMAF): Likewise.
	[C99-based standards] (FP_FAST_FMAL): Likewise.
	[C99-based standards] (FP_ILOGB0): Use macro-int-constant.
	[C99-based standards] (FP_ILOGBNAN): Likewise.
	[C99-based standards] (MATH_ERRNO): Use macro-int-constant.
	Specify type.
	[C99-based standards] (MATH_ERREXCEPT): Likewise.
	[C99-based standards] (math_errhandling): Specify type.
	[ISO99 || ISO11] (signgam): Do not allow.
	[non-C99-based standards] (copysignf): Do not allow.
	[non-C99-based standards] (exp2f): Likewise.
	[non-C99-based standards] (log2f): Likewise.
	[non-C99-based standards] (modff): Allow.
	[non-C99-based standards] (erff): Do not allow.
	[non-C99-based standards] (erfcf): Likewise.
	[non-C99-based standards] (gammaf): Likewise.
	[non-C99-based standards] (hypotf): Likewise.
	[non-C99-based standards] (j0f): Likewise.
	[non-C99-based standards] (j1f): Likewise.
	[non-C99-based standards] (jnf): Likewise.
	[non-C99-based standards] (lgammaf): Likewise.
	[non-C99-based standards] (tgammaf): Likewise.
	[non-C99-based standards] (y0f): Likewise.
	[non-C99-based standards] (y1f): Likewise.
	[non-C99-based standards] (ynf): Likewise.
	[non-C99-based standards] (isnanf): Likewise.
	[non-C99-based standards] (acoshf): Likewise.
	[non-C99-based standards] (asinhf): Likewise.
	[non-C99-based standards] (atanhf): Likewise.
	[non-C99-based standards] (cbrtf): Likewise.
	[non-C99-based standards] (expm1f): Likewise.
	[non-C99-based standards] (ilogbf): Likewise.
	[non-C99-based standards] (log1pf): Likewise.
	[non-C99-based standards] (logbf): Likewise.
	[non-C99-based standards] (nextafterf): Likewise.
	[non-C99-based standards] (remainderf): Likewise.
	[non-C99-based standards] (rintf): Likewise.
	[non-C99-based standards] (scalbf): Likewise.
	[non-C99-based standards] (copysignl): Likewise.
	[non-C99-based standards] (exp2l): Likewise.
	[non-C99-based standards] (log2l): Likewise.
	[non-C99-based standards] (modfl): Allow.
	[non-C99-based standards] (erfl): Do not allow.
	[non-C99-based standards] (erfcl): Likewise.
	[non-C99-based standards] (gammal): Likewise.
	[non-C99-based standards] (hypotl): Likewise.
	[non-C99-based standards] (j0l): Likewise.
	[non-C99-based standards] (j1l): Likewise.
	[non-C99-based standards] (jnl): Likewise.
	[non-C99-based standards] (lgammal): Likewise.
	[non-C99-based standards] (tgammal): Likewise.
	[non-C99-based standards] (y0l): Likewise.
	[non-C99-based standards] (y1l): Likewise.
	[non-C99-based standards] (ynl): Likewise.
	[non-C99-based standards] (isnanl): Likewise.
	[non-C99-based standards] (acoshl): Likewise.
	[non-C99-based standards] (asinhl): Likewise.
	[non-C99-based standards] (atanhl): Likewise.
	[non-C99-based standards] (cbrtl): Likewise.
	[non-C99-based standards] (expm1l): Likewise.
	[non-C99-based standards] (ilogbl): Likewise.
	[non-C99-based standards] (log1pl): Likewise.
	[non-C99-based standards] (logbl): Likewise.
	[non-C99-based standards] (nextafterl): Likewise.
	[non-C99-based standards] (remainderl): Likewise.
	[non-C99-based standards] (rintl): Likewise.
	[non-C99-based standards] (scalbl): Likewise.
	[ISO || ISO99 || ISO11] (*_t): Do not allow.
	[non-C99-based standards] (FP_*): Do not allow.
	[C99-based standards] (FP_*): Change to
	FP_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*.
	* conform/data/setjmp.h-data [ISO || ISO99 || ISO11] (*_t): Do not
	allow.
	* conform/data/signal.h-data (SIG_DFL): Use macro-constant.
	(SIG_ERR): Likewise.
	[X/Open-based standards] (SIG_HOLD): Likewise.
	(SIG_IGN): Likewise.
	(SIGABRT): Use macro-int-constant.  Specify type.  Require
	positive value.
	(SIGFPE): Likewise.
	(SIGILL): Likewise.
	(SIGINT): Likewise.
	(SIGSEGV): Likewise.
	(SIGTER): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGALRM): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGHUP): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGIO): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGKILL): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGPIPE): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGQUIT): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGUSR1): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGUSR2): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGCHLD): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGCONT): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGSTOP): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGTSTP): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGTTIN): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGTTOU): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGBUS): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGPOLL): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGPROF): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGSYS): Likewise.
	[X/Open-based standards] (SIGTRAP): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGURG): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGVTALRM): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGXCPU): Likewise.
	[!ISO && !ISO99 && !ISO11] (SIGXFSZ): Likewise.
	* conform/data/stdarg.h-data [ISO || ISO99 || ISO11] (*_t): Do not
	allow.

diff --git a/conform/data/locale.h-data b/conform/data/locale.h-data
index 8897ee0..adcd25f 100644
--- a/conform/data/locale.h-data
+++ b/conform/data/locale.h-data
@@ -26,15 +26,17 @@ element {struct lconv} char int_p_sep_by_space
 element {struct lconv} char int_p_sign_posn
 #endif
 
-constant NULL
+macro-constant NULL == 0
 
-macro LC_ALL
-macro LC_COLLATE
-macro LC_CTYPE
-macro LC_MESSAGES
-macro LC_MONETARY
-macro LC_NUMERIC
-macro LC_TIME
+macro-int-constant LC_ALL
+macro-int-constant LC_COLLATE
+macro-int-constant LC_CTYPE
+#if !defined ISO && !defined ISO99 && !defined ISO11
+macro-int-constant LC_MESSAGES
+#endif
+macro-int-constant LC_MONETARY
+macro-int-constant LC_NUMERIC
+macro-int-constant LC_TIME
 
 #if defined XOPEN2K8 || defined POSIX2008
 constant LC_GLOBAL_LOCALE
@@ -59,8 +61,10 @@ function locale_t newlocale (int, const char*, locale_t)
 function locale_t uselocale (locale_t)
 #endif
 
-allow LC_*
+allow LC_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#endif
 #if defined XOPEN2K8 || defined POSIX2008
 allow LC_*_MASK
 #endif
diff --git a/conform/data/math.h-data b/conform/data/math.h-data
index ce41dc5..0d9246d 100644
--- a/conform/data/math.h-data
+++ b/conform/data/math.h-data
@@ -1,4 +1,4 @@
-constant HUGE_VAL
+macro-constant HUGE_VAL {double}
 
 #if !defined ISO && !defined POSIX
 # if !defined XPG3 && !defined XPG4 && !defined UNIX98
@@ -14,6 +14,8 @@ macro isless
 macro islessequal
 macro islessgreater
 macro isunordered
+type float_t
+type double_t
 # endif
 # if defined XPG3 || defined XPG4 || defined UNIX98
 function double isnan (double)
@@ -37,28 +39,28 @@ constant M_SQRT1_2
 constant MAXFLOAT
 # endif
 # if !defined XPG3 && !defined XPG4 && !defined UNIX98
-constant HUGE_VALF
-constant HUGE_VALL
-constant INFINITY
-constant NAN
+macro-constant HUGE_VALF {float}
+macro-constant HUGE_VALL {long double}
+macro-constant INFINITY {float}
+macro-constant NAN {float}
 
-macro FP_INFINITE
-macro FP_NAN
-macro FP_NORMAL
-macro FP_SUBNORMAL
-macro FP_ZERO
+macro-int-constant FP_INFINITE
+macro-int-constant FP_NAN
+macro-int-constant FP_NORMAL
+macro-int-constant FP_SUBNORMAL
+macro-int-constant FP_ZERO
 
-optional-macro FP_FAST_FMA
-optional-macro FP_FAST_FMAF
-optional-macro FP_FAST_FMAL
+optional-macro-int-constant FP_FAST_FMA {int} == 1
+optional-macro-int-constant FP_FAST_FMAF {int} == 1
+optional-macro-int-constant FP_FAST_FMAL {int} == 1
 
-constant FP_ILOGB0
-constant FP_ILOGBNAN
+macro-int-constant FP_ILOGB0
+macro-int-constant FP_ILOGBNAN
 
-macro MATH_ERRNO == 1
-macro MATH_ERREXCEPT == 2
+macro-int-constant MATH_ERRNO {int} == 1
+macro-int-constant MATH_ERREXCEPT {int} == 2
 
-macro math_errhandling
+macro math_errhandling {int}
 # endif
 #endif
 
@@ -155,7 +157,7 @@ function double nan (const char*)
 #  endif
 # endif
 
-# if !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 // variable signgam
 allow signgam
 # endif
@@ -303,11 +305,9 @@ allow asinf
 allow atanf
 allow atan2f
 allow ceilf
-allow copysignf
 allow cosf
 allow coshf
 allow expf
-allow exp2f
 allow fabsf
 allow floorf
 allow fmodf
@@ -315,49 +315,22 @@ allow frexpf
 allow ldexpf
 allow logf
 allow log10f
-allow log2f
+allow modff
 allow powf
 allow sinf
 allow sinhf
 allow sqrtf
 allow tanf
 allow tanhf
-allow erff
-allow erfcf
-allow gammaf
-allow hypotf
-allow j0f
-allow j1f
-allow jnf
-allow lgammaf
-allow tgammaf
-allow y0f
-allow y1f
-allow ynf
-allow isnanf
-allow acoshf
-allow asinhf
-allow atanhf
-allow cbrtf
-allow expm1f
-allow ilogbf
-allow log1pf
-allow logbf
-allow nextafterf
-allow remainderf
-allow rintf
-allow scalbf
 
 allow acosl
 allow asinl
 allow atanl
 allow atan2l
 allow ceill
-allow copysignl
 allow cosl
 allow coshl
 allow expl
-allow exp2l
 allow fabsl
 allow floorl
 allow fmodl
@@ -365,41 +338,18 @@ allow frexpl
 allow ldexpl
 allow logl
 allow log10l
-allow log2l
+allow modfl
 allow powl
 allow sinl
 allow sinhl
 allow sqrtl
 allow tanl
 allow tanhl
-allow erfl
-allow erfcl
-allow gammal
-allow hypotl
-allow j0l
-allow j1l
-allow jnl
-allow lgammal
-allow tgammal
-allow y0l
-allow y1l
-allow ynl
-allow isnanl
-allow acoshl
-allow asinhl
-allow atanhl
-allow cbrtl
-allow expm1l
-allow ilogbl
-allow log1pl
-allow logbl
-allow nextafterl
-allow remainderl
-allow rintl
-allow scalbl
 #endif
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
-// The following expressions are not entirely correct but the current
-// poorfnmatch implementation doesn't grok the right form.
-allow FP_*
+#endif
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
+allow FP_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
+#endif
diff --git a/conform/data/setjmp.h-data b/conform/data/setjmp.h-data
index 310105b..af28ddb 100644
--- a/conform/data/setjmp.h-data
+++ b/conform/data/setjmp.h-data
@@ -19,4 +19,6 @@ macro-function int _setjmp (jmp_buf)
 # endif
 #endif
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#endif
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
index 99468ae..ba9019b 100644
--- a/conform/data/signal.h-data
+++ b/conform/data/signal.h-data
@@ -1,9 +1,9 @@
-constant SIG_DFL {void(*)(int)}
-constant SIG_ERR {void(*)(int)}
+macro-constant SIG_DFL {void(*)(int)}
+macro-constant SIG_ERR {void(*)(int)}
 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
-constant SIG_HOLD {void(*)(int)}
+macro-constant SIG_HOLD {void(*)(int)}
 #endif
-constant SIG_IGN {void(*)(int)}
+macro-constant SIG_IGN {void(*)(int)}
 
 type sig_atomic_t
 #if !defined ISO && !defined ISO99 && !defined ISO11
@@ -56,42 +56,42 @@ macro SIGRTMIN
 macro SIGRTMAX
 #endif
 
-constant SIGABRT
-constant SIGFPE
-constant SIGILL
-constant SIGINT
-constant SIGSEGV
-constant SIGTERM
+macro-int-constant SIGABRT {int} > 0
+macro-int-constant SIGFPE {int} > 0
+macro-int-constant SIGILL {int} > 0
+macro-int-constant SIGINT {int} > 0
+macro-int-constant SIGSEGV {int} > 0
+macro-int-constant SIGTERM {int} > 0
 
 function void (*signal (int, void(*)(int)))(int)
 function int raise (int)
 
 #if !defined ISO && !defined ISO99 && !defined ISO11
-constant SIGALRM
-constant SIGHUP
-constant SIGIO
-constant SIGKILL
-constant SIGPIPE
-constant SIGQUIT
-constant SIGUSR1
-constant SIGUSR2
-constant SIGCHLD
-constant SIGCONT
-constant SIGSTOP
-constant SIGTSTP
-constant SIGTTIN
-constant SIGTTOU
-constant SIGBUS
-constant SIGPOLL
-constant SIGPROF
-constant SIGSYS
+macro-int-constant SIGALRM {int} > 0
+macro-int-constant SIGHUP {int} > 0
+macro-int-constant SIGIO {int} > 0
+macro-int-constant SIGKILL {int} > 0
+macro-int-constant SIGPIPE {int} > 0
+macro-int-constant SIGQUIT {int} > 0
+macro-int-constant SIGUSR1 {int} > 0
+macro-int-constant SIGUSR2 {int} > 0
+macro-int-constant SIGCHLD {int} > 0
+macro-int-constant SIGCONT {int} > 0
+macro-int-constant SIGSTOP {int} > 0
+macro-int-constant SIGTSTP {int} > 0
+macro-int-constant SIGTTIN {int} > 0
+macro-int-constant SIGTTOU {int} > 0
+macro-int-constant SIGBUS {int} > 0
+macro-int-constant SIGPOLL {int} > 0
+macro-int-constant SIGPROF {int} > 0
+macro-int-constant SIGSYS {int} > 0
 # if !defined POSIX && !defined POSIX2008
-constant SIGTRAP
+macro-int-constant SIGTRAP {int} > 0
 # endif
-constant SIGURG
-constant SIGVTALRM
-constant SIGXCPU
-constant SIGXFSZ
+macro-int-constant SIGURG {int} > 0
+macro-int-constant SIGVTALRM {int} > 0
+macro-int-constant SIGXCPU {int} > 0
+macro-int-constant SIGXFSZ {int} > 0
 
 type {struct sigaction}
 
diff --git a/conform/data/stdarg.h-data b/conform/data/stdarg.h-data
index a9b5d65..2c87a3b 100644
--- a/conform/data/stdarg.h-data
+++ b/conform/data/stdarg.h-data
@@ -9,4 +9,6 @@ macro va_end
 macro va_copy
 #endif
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#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]