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 some ISO C headers


I've gone through the first six headers from C90 (errno.h, float.h, 
limits.h, stddef.h, assert.h, ctype.h) and propose this patch to update 
their conformtest expectations for all of C90, C99 and C11, using the 
various new features from the previous patches in this series to represent 
the standard requirements better.

I hope at some point to continue going through the other ISO C headers and 
updating requirements for them (and hope some people may similarly go 
through the other supported standards and make sure the data accurately 
describes the headers in those standards, as best as it can be described 
for conformtest).  (First I hope we can get this fifteen-patch (so far) 
series in as a basis for such further work.)

Fixing conformtest failures is also in many cases easy, at least given 
this patch series as a basis which cleans things up somewhat.  Look at a 
failure, figure out where the problem lies, and fix the expectations or 
the headers accordingly (sometimes the issues are with the include/ 
headers, and can be fixed with _ISOMAC conditionals there, rather than 
with headers actually used with installed glibc) - if fixing a header, 
remember to do a full glibc build/test run.  (With GCC before 4.7, there 
are ISO11 failures because of compiler limitations; ignore those.)  Some 
of the relevant standards are online:

http://pubs.opengroup.org/onlinepubs/007908799/toc.htm (UNIX98)
http://pubs.opengroup.org/onlinepubs/009695399/toc.htm (XOPEN2K)
http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm (XOPEN2K8 and POSIX2008)

and X/Open System Interfaces and Headers Issue 4, Version 2 (document 
number C435), which defines both -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED 
(XPG4) and -D_XOPEN_SOURCE (XPG3), is freely downloadable given 
registration.

https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?catalogno=c435

2012-04-29  Joseph Myers  <joseph@codesourcery.com>

	* conform/data/assert.h-data [ISO || ISO99 || ISO11] (*_t): Do not
	allow.
	* conform/data/ctype.h-data [C99-based standards] (isblank):
	Expect function.
	(is*): Change to is[abcdefghijklmnopqrstuvwxyz]*.
	(to*): Change to to[abcdefghijklmnopqrstuvwxyz]*.
	[ISO || ISO99 || ISO11] (*_t): Do not allow.
	* conform/data/errno.h-data (EDOM): Use macro-int-constant.
	Specify type.  Require positive value.
	(EILSEQ): Likewise.
	(ERANGE): Likewise.
	[ISO || POSIX] (EILSEQ): Do not expect.
	[!ISO && !ISO99 && !ISO11] (E2BIG): Use macro-int-constant.
	Specify type.  Require positive value.
	[!ISO && !ISO99 && !ISO11] (EACCES): Likewise.
	[!ISO && !ISO99 && !ISO11] (EADDRINUSE): Likewise.
	[!ISO && !ISO99 && !ISO11] (EADDRNOTAVAIL): Likewise.
	[!ISO && !ISO99 && !ISO11] (EAFNOSUPPORT): Likewise.
	[!ISO && !ISO99 && !ISO11] (EAGAIN): Likewise.
	[!ISO && !ISO99 && !ISO11] (EALREADY): Likewise.
	[!ISO && !ISO99 && !ISO11] (EBADF): Likewise.
	[!ISO && !ISO99 && !ISO11] (EBADMSG): Likewise.
	[!ISO && !ISO99 && !ISO11] (EBUSY): Likewise.
	[!ISO && !ISO99 && !ISO11] (ECANCELED): Likewise.
	[!ISO && !ISO99 && !ISO11] (ECHILD): Likewise.
	[!ISO && !ISO99 && !ISO11] (ECONNABORTED): Likewise.
	[!ISO && !ISO99 && !ISO11] (ECONNREFUSED): Likewise.
	[!ISO && !ISO99 && !ISO11] (ECONNRESET): Likewise.
	[!ISO && !ISO99 && !ISO11] (EDEADLK): Likewise.
	[!ISO && !ISO99 && !ISO11] (EDESTADDRREQ): Likewise.
	[!ISO && !ISO99 && !ISO11] (EDQUOT): Likewise.
	[!ISO && !ISO99 && !ISO11] (EEXIST): Likewise.
	[!ISO && !ISO99 && !ISO11] (EFAULT): Likewise.
	[!ISO && !ISO99 && !ISO11] (EFBIG): Likewise.
	[!ISO && !ISO99 && !ISO11] (EHOSTUNREACH): Likewise.
	[!ISO && !ISO99 && !ISO11] (EIDRM): Likewise.
	[!ISO && !ISO99 && !ISO11] (EINPROGRESS): Likewise.
	[!ISO && !ISO99 && !ISO11] (EINTR): Likewise.
	[!ISO && !ISO99 && !ISO11] (EINVAL): Likewise.
	[!ISO && !ISO99 && !ISO11] (EIO): Likewise.
	[!ISO && !ISO99 && !ISO11] (EISCONN): Likewise.
	[!ISO && !ISO99 && !ISO11] (EISDIR): Likewise.
	[!ISO && !ISO99 && !ISO11] (ELOOP): Likewise.
	[!ISO && !ISO99 && !ISO11] (EMFILE): Likewise.
	[!ISO && !ISO99 && !ISO11] (EMLINK): Likewise.
	[!ISO && !ISO99 && !ISO11] (EMSGSIZE): Likewise.
	[!ISO && !ISO99 && !ISO11] (EMULTIHOP): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENAMETOOLONG): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENETDOWN): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENETUNREACH): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENFILE): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOBUFS): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENODATA): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENODEV): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOENT): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOEXEC): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOLCK): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOLINK): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOMEM): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOMSG): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOPROTOOPT): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOSPC): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOSR): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOSTR): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOSYS): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTCONN): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTDIR): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTEMPTY): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTSOCK): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTSUP): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENOTTY): Likewise.
	[!ISO && !ISO99 && !ISO11] (ENXIO): Likewise.
	[!ISO && !ISO99 && !ISO11] (EOPNOTSUPP): Likewise.
	[!ISO && !ISO99 && !ISO11] (EOVERFLOW): Likewise.
	[!ISO && !ISO99 && !ISO11] (EPERM): Likewise.
	[!ISO && !ISO99 && !ISO11] (EPIPE): Likewise.
	[!ISO && !ISO99 && !ISO11] (EPROTO): Likewise.
	[!ISO && !ISO99 && !ISO11] (EPROTONOSUPPORT): Likewise.
	[!ISO && !ISO99 && !ISO11] (EPROTOTYPE): Likewise.
	[!ISO && !ISO99 && !ISO11] (EROFS): Likewise.
	[!ISO && !ISO99 && !ISO11] (ESPIPE): Likewise.
	[!ISO && !ISO99 && !ISO11] (ESRCH): Likewise.
	[!ISO && !ISO99 && !ISO11] (ESTALE): Likewise.
	[!ISO && !ISO99 && !ISO11] (ETIME): Likewise.
	[!ISO && !ISO99 && !ISO11] (ETIMEDOUT): Likewise.
	[!ISO && !ISO99 && !ISO11] (ETXTBSY): Likewise.
	[!ISO && !ISO99 && !ISO11] (EWOULDBLOCK): Likewise.
	[!ISO && !ISO99 && !ISO11] (EXDEV): Likewise.
	[XOPEN2K8 || defined POSIX2008] (ENOTRECOVERABLE): Likewise.
	[XOPEN2K8 || defined POSIX2008] (EOWNERDEAD): Likewise.
	* conform/data/float.h-data (FLT_RADIX): Use macro-int-constant.
	Require >= 2.
	(FLT_ROUNDS): Expect as macro, not constant.
	(FLT_MANT_DIG): Use macro-int-constant.
	(DBL_MANT_DIG): Likewise.
	(LDBL_MANT_DIG): Likewise.
	(FLT_DIG): Likewise.
	(DBL_DIG): Likewise.
	(LDBL_DIG): Likewise.
	(FLT_MIN_EXP): Use macro-int-constant.  Require < 0.
	(DBL_MIN_EXP): Likewise.
	(LDBL_MIN_EXP): Likewise.
	(FLT_MAX_EXP): Use macro-int-constant.
	(DBL_MAX_EXP): Likewise.
	(LDBL_MAX_EXP): Likewise.
	(FLT_MAX_10_EXP): Likewise.
	(DBL_MAX_10_EXP): Likewise.
	(LDBL_MAX_10_EXP): Likewise.
	(FLT_MAX): Use macro-constant.
	(DBL_MAX): Likewise.
	(LDBL_MAX): Likewise.
	(FLT_EPSILON): Use macro-constant.  Give upper bound.
	(DBL_EPSILON): Likewise.
	(LDBL_EPSILON): Likewise.
	(FLT_MIN): Likewise.
	(DBL_MIN): Likewise.
	(LDBL_MIN): Likewise.
	[C99-based standards] (DECIMAL_DIG): Use macro-int-constant.
	[C99-based standards] (FLT_EVAL_METHOD): Likewise.
	[ISO11] (DBL_HAS_SUBNORM): Use macro-int-constant.
	[ISO11] (FLT_HAS_SUBNORM): Likewise.
	[ISO11] (LDBL_HAS_SUBNORM): Likewise.
	[ISO11] (DBL_DECIMAL_DIG): Likewise.
	[ISO11] (FLT_DECIMAL_DIG): Likewise.
	[ISO11] (LDBL_DECIMAL_DIG): Likewise.
	[ISO11] (DBL_TRUE_MIN): Use macro-constant.
	[ISO11] (FLT_TRUE_MIN): Likewise.
	[ISO11] (LDBL_TRUE_MIN): Likewise.
	[ISO || ISO99 || ISO11] (*_t): Do not allow.
	* conform/data/limits.h-data (CHAR_BIT): Use macro-int-constant.
	(SCHAR_MIN): Use macro-int-constant.  Specify type.
	(SCHAR_MAX): Likewise.
	(UCHAR_MAX): Likewise.
	(CHAR_MIN): Likewise.
	(CHAR_MAX): Likewise.
	(MB_LEN_MAX): Use macro-int-constant.
	(SHRT_MIN): Use macro-int-constant.  Specify type.
	(SHRT_MAX): Likewise.
	(USHRT_MAX): Likewise.
	(INT_MAX): Likewise.
	(INT_MIN): Use macro-int-constant.  Specify type.  Make upper
	bound negative.
	(UINT_MAX): Use macro-int-constant.  Specify type.  Suffix lower
	bound with "U".
	(LONG_MAX): Use macro-int-constant.  Specify type.  Suffix lower
	bound with "L".
	(LONG_MIN): Use macro-int-constant.  Specify type.  Make upper
	bound negative.  Suffix upper bound with "L".
	(ULONG_MAX): Use macro-int-constant.  Specify type.  Suffix lower
	bound with "UL".
	[C99-based standards] (LLONG_MIN): Use macro-int-constant.
	Specify type.
	[C99-based standards] (LLONG_MAX): Likewise.
	[C99-based standards] (ULLONG_MAX): Likewise.
	* conform/data/stddef.h-data (NULL): Use macro-constant.  Require
	== 0.
	[ISO11] (max_align_t): Require type.
	[ISO || ISO99 || ISO11] (*_t): Do not allow.

diff --git a/conform/data/assert.h-data b/conform/data/assert.h-data
index 9c3cc04..acdfef9 100644
--- a/conform/data/assert.h-data
+++ b/conform/data/assert.h-data
@@ -4,4 +4,6 @@ macro assert
 macro static_assert
 #endif
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#endif
diff --git a/conform/data/ctype.h-data b/conform/data/ctype.h-data
index e2c6019..3ee21c9 100644
--- a/conform/data/ctype.h-data
+++ b/conform/data/ctype.h-data
@@ -12,6 +12,10 @@ function int isxdigit (int)
 function int tolower (int)
 function int toupper (int)
 
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
+function int isblank (int)
+#endif
+
 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function int isascii (int)
 function int toascii (int)
@@ -39,9 +43,9 @@ function int tolower_l (int, locale_t)
 function int toupper_l (int, locale_t)
 # endif
 
-// The following is not entirely correct.  It should be is[a-z]* but the
-// replacement fnmatch implementation does not grok it.
-allow is*
-allow to*
+allow is[abcdefghijklmnopqrstuvwxyz]*
+allow to[abcdefghijklmnopqrstuvwxyz]*
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#endif
diff --git a/conform/data/errno.h-data b/conform/data/errno.h-data
index 328687f..eaf6c21 100644
--- a/conform/data/errno.h-data
+++ b/conform/data/errno.h-data
@@ -1,90 +1,92 @@
-constant EDOM
-constant EILSEQ
-constant ERANGE
+macro-int-constant EDOM {int} > 0
+#if !defined ISO && !defined POSIX
+macro-int-constant EILSEQ {int} > 0
+#endif
+macro-int-constant ERANGE {int} > 0
 
 // variable int errno
 allow errno
 
 #if !defined ISO && !defined ISO99 && !defined ISO11
-constant E2BIG
-constant EACCES
-constant EADDRINUSE
-constant EADDRNOTAVAIL
-constant EAFNOSUPPORT
-constant EAGAIN
-constant EALREADY
-constant EBADF
-constant EBADMSG
-constant EBUSY
-constant ECANCELED
-constant ECHILD
-constant ECONNABORTED
-constant ECONNREFUSED
-constant ECONNRESET
-constant EDEADLK
-constant EDESTADDRREQ
-constant EDQUOT
-constant EEXIST
-constant EFAULT
-constant EFBIG
-constant EHOSTUNREACH
-constant EIDRM
-constant EINPROGRESS
-constant EINTR
-constant EINVAL
-constant EIO
-constant EISCONN
-constant EISDIR
-constant ELOOP
-constant EMFILE
-constant EMLINK
-constant EMSGSIZE
-constant EMULTIHOP
-constant ENAMETOOLONG
-constant ENETDOWN
-constant ENETUNREACH
-constant ENFILE
-constant ENOBUFS
-constant ENODATA
-constant ENODEV
-constant ENOENT
-constant ENOEXEC
-constant ENOLCK
-constant ENOLINK
-constant ENOMEM
-constant ENOMSG
-constant ENOPROTOOPT
-constant ENOSPC
-constant ENOSR
-constant ENOSTR
-constant ENOSYS
-constant ENOTCONN
-constant ENOTDIR
-constant ENOTEMPTY
-constant ENOTSOCK
-constant ENOTSUP
-constant ENOTTY
-constant ENXIO
-constant EOPNOTSUPP
-constant EOVERFLOW
-constant EPERM
-constant EPIPE
-constant EPROTO
-constant EPROTONOSUPPORT
-constant EPROTOTYPE
-constant EROFS
-constant ESPIPE
-constant ESRCH
-constant ESTALE
-constant ETIME
-constant ETIMEDOUT
-constant ETXTBSY
-constant EWOULDBLOCK
-constant EXDEV
+macro-int-constant E2BIG {int} > 0
+macro-int-constant EACCES {int} > 0
+macro-int-constant EADDRINUSE {int} > 0
+macro-int-constant EADDRNOTAVAIL {int} > 0
+macro-int-constant EAFNOSUPPORT {int} > 0
+macro-int-constant EAGAIN {int} > 0
+macro-int-constant EALREADY {int} > 0
+macro-int-constant EBADF {int} > 0
+macro-int-constant EBADMSG {int} > 0
+macro-int-constant EBUSY {int} > 0
+macro-int-constant ECANCELED {int} > 0
+macro-int-constant ECHILD {int} > 0
+macro-int-constant ECONNABORTED {int} > 0
+macro-int-constant ECONNREFUSED {int} > 0
+macro-int-constant ECONNRESET {int} > 0
+macro-int-constant EDEADLK {int} > 0
+macro-int-constant EDESTADDRREQ {int} > 0
+macro-int-constant EDQUOT {int} > 0
+macro-int-constant EEXIST {int} > 0
+macro-int-constant EFAULT {int} > 0
+macro-int-constant EFBIG {int} > 0
+macro-int-constant EHOSTUNREACH {int} > 0
+macro-int-constant EIDRM {int} > 0
+macro-int-constant EINPROGRESS {int} > 0
+macro-int-constant EINTR {int} > 0
+macro-int-constant EINVAL {int} > 0
+macro-int-constant EIO {int} > 0
+macro-int-constant EISCONN {int} > 0
+macro-int-constant EISDIR {int} > 0
+macro-int-constant ELOOP {int} > 0
+macro-int-constant EMFILE {int} > 0
+macro-int-constant EMLINK {int} > 0
+macro-int-constant EMSGSIZE {int} > 0
+macro-int-constant EMULTIHOP {int} > 0
+macro-int-constant ENAMETOOLONG {int} > 0
+macro-int-constant ENETDOWN {int} > 0
+macro-int-constant ENETUNREACH {int} > 0
+macro-int-constant ENFILE {int} > 0
+macro-int-constant ENOBUFS {int} > 0
+macro-int-constant ENODATA {int} > 0
+macro-int-constant ENODEV {int} > 0
+macro-int-constant ENOENT {int} > 0
+macro-int-constant ENOEXEC {int} > 0
+macro-int-constant ENOLCK {int} > 0
+macro-int-constant ENOLINK {int} > 0
+macro-int-constant ENOMEM {int} > 0
+macro-int-constant ENOMSG {int} > 0
+macro-int-constant ENOPROTOOPT {int} > 0
+macro-int-constant ENOSPC {int} > 0
+macro-int-constant ENOSR {int} > 0
+macro-int-constant ENOSTR {int} > 0
+macro-int-constant ENOSYS {int} > 0
+macro-int-constant ENOTCONN {int} > 0
+macro-int-constant ENOTDIR {int} > 0
+macro-int-constant ENOTEMPTY {int} > 0
+macro-int-constant ENOTSOCK {int} > 0
+macro-int-constant ENOTSUP {int} > 0
+macro-int-constant ENOTTY {int} > 0
+macro-int-constant ENXIO {int} > 0
+macro-int-constant EOPNOTSUPP {int} > 0
+macro-int-constant EOVERFLOW {int} > 0
+macro-int-constant EPERM {int} > 0
+macro-int-constant EPIPE {int} > 0
+macro-int-constant EPROTO {int} > 0
+macro-int-constant EPROTONOSUPPORT {int} > 0
+macro-int-constant EPROTOTYPE {int} > 0
+macro-int-constant EROFS {int} > 0
+macro-int-constant ESPIPE {int} > 0
+macro-int-constant ESRCH {int} > 0
+macro-int-constant ESTALE {int} > 0
+macro-int-constant ETIME {int} > 0
+macro-int-constant ETIMEDOUT {int} > 0
+macro-int-constant ETXTBSY {int} > 0
+macro-int-constant EWOULDBLOCK {int} > 0
+macro-int-constant EXDEV {int} > 0
 
 # if defined XOPEN2K8 || defined POSIX2008
-constant ENOTRECOVERABLE
-constant EOWNERDEAD
+macro-int-constant ENOTRECOVERABLE {int} > 0
+macro-int-constant EOWNERDEAD {int} > 0
 # endif
 
 allow E*
diff --git a/conform/data/float.h-data b/conform/data/float.h-data
index 49d953a..350802a 100644
--- a/conform/data/float.h-data
+++ b/conform/data/float.h-data
@@ -1,60 +1,62 @@
-macro FLT_RADIX
+macro-int-constant FLT_RADIX >= 2
 
-constant FLT_ROUNDS
+macro FLT_ROUNDS
 
-macro FLT_MANT_DIG
-macro DBL_MANT_DIG
-macro LDBL_MANT_DIG
+macro-int-constant FLT_MANT_DIG
+macro-int-constant DBL_MANT_DIG
+macro-int-constant LDBL_MANT_DIG
 
-constant FLT_DIG >= 6
-constant DBL_DIG >= 10
-constant LDBL_DIG >= 10
+macro-int-constant FLT_DIG >= 6
+macro-int-constant DBL_DIG >= 10
+macro-int-constant LDBL_DIG >= 10
 
-macro FLT_MIN_EXP
-macro DBL_MIN_EXP
-macro LDBL_MIN_EXP
+macro-int-constant FLT_MIN_EXP < 0
+macro-int-constant DBL_MIN_EXP < 0
+macro-int-constant LDBL_MIN_EXP < 0
 
-constant FLT_MIN_10_EXP <= -37
-constant DBL_MIN_10_EXP <= -37
-constant LDBL_MIN_10_EXP <= -37
+macro-int-constant FLT_MIN_10_EXP <= -37
+macro-int-constant DBL_MIN_10_EXP <= -37
+macro-int-constant LDBL_MIN_10_EXP <= -37
 
-macro FLT_MAX_EXP
-macro DBL_MAX_EXP
-macro LDBL_MAX_EXP
+macro-int-constant FLT_MAX_EXP
+macro-int-constant DBL_MAX_EXP
+macro-int-constant LDBL_MAX_EXP
 
-constant FLT_MAX_10_EXP >= 37
-constant DBL_MAX_10_EXP >= 37
-constant LDBL_MAX_10_EXP >= 37
+macro-int-constant FLT_MAX_10_EXP >= 37
+macro-int-constant DBL_MAX_10_EXP >= 37
+macro-int-constant LDBL_MAX_10_EXP >= 37
 
-constant FLT_MAX >= 1.0E37
-constant DBL_MAX >= 1.0E37
-constant LDBL_MAX >= 1.0E37
+macro-constant FLT_MAX >= 1.0E37
+macro-constant DBL_MAX >= 1.0E37
+macro-constant LDBL_MAX >= 1.0E37
 
-macro FLT_EPSILON
-macro DBL_EPSILON
-macro LDBL_EPSILON
+macro-constant FLT_EPSILON <= 1.0E-5
+macro-constant DBL_EPSILON <= 1.0E-9
+macro-constant LDBL_EPSILON <= 1.0E-9
 
-macro FLT_MIN
-macro DBL_MIN
-macro LDBL_MIN
+macro-constant FLT_MIN <= 1.0E-37
+macro-constant DBL_MIN <= 1.0E-37
+macro-constant LDBL_MIN <= 1.0E-37
 
 #if !defined ISO && !defined XPG3 && !defined XPG4 && !defined POSIX && !defined UNIX98
-constant DECIMAL_DIG >= 10
-constant FLT_EVAL_METHOD
+macro-int-constant DECIMAL_DIG >= 10
+macro-int-constant FLT_EVAL_METHOD
 #endif
 
 #if defined ISO11
-constant DBL_HAS_SUBNORM
-constant FLT_HAS_SUBNORM
-constant LDBL_HAS_SUBNORM
+macro-int-constant DBL_HAS_SUBNORM
+macro-int-constant FLT_HAS_SUBNORM
+macro-int-constant LDBL_HAS_SUBNORM
 
-constant DBL_DECIMAL_DIG >= 10
-constant FLT_DECIMAL_DIG >= 6
-constant LDBL_DECIMAL_DIG >= 10
+macro-int-constant DBL_DECIMAL_DIG >= 10
+macro-int-constant FLT_DECIMAL_DIG >= 6
+macro-int-constant LDBL_DECIMAL_DIG >= 10
 
-constant DBL_TRUE_MIN <= 1E-37
-constant FLT_TRUE_MIN <= 1E-37
-constant LDBL_TRUE_MIN <= 1E-37
+macro-constant DBL_TRUE_MIN <= 1E-37
+macro-constant FLT_TRUE_MIN <= 1E-37
+macro-constant LDBL_TRUE_MIN <= 1E-37
 #endif
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 allow *_t
+#endif
diff --git a/conform/data/limits.h-data b/conform/data/limits.h-data
index 8f7a001..dec178a 100644
--- a/conform/data/limits.h-data
+++ b/conform/data/limits.h-data
@@ -1,28 +1,29 @@
-constant CHAR_BIT >= 8
-constant SCHAR_MIN <= -127
-constant SCHAR_MAX >= 127
-constant UCHAR_MAX >= 255
+macro-int-constant CHAR_BIT >= 8
+macro-int-constant SCHAR_MIN {promoted:signed char} <= -127
+macro-int-constant SCHAR_MAX {promoted:signed char} >= 127
+macro-int-constant UCHAR_MAX {promoted:unsigned char} >= 255
 #ifdef __CHAR_UNSIGNED__
-constant CHAR_MIN == 0
-constant CHAR_MAX == UCHAR_MAX
+macro-int-constant CHAR_MIN {promoted:char} == 0
+macro-int-constant CHAR_MAX {promoted:char} == UCHAR_MAX
 #else
-constant CHAR_MIN == SCHAR_MIN
-constant CHAR_MAX == SCHAR_MAX
+macro-int-constant CHAR_MIN {promoted:char} == SCHAR_MIN
+macro-int-constant CHAR_MAX {promoted:char} == SCHAR_MAX
 #endif
-constant MB_LEN_MAX >= 1
-constant SHRT_MIN <= -32767
-constant SHRT_MAX >= 32767
-constant USHRT_MAX >= 65535
-constant INT_MAX >= 2147483647
-constant INT_MIN <= 2147483647
-constant UINT_MAX >= 4294967295
-constant LONG_MAX >= 2147483647
-constant LONG_MIN <= 2147483647
-constant ULONG_MAX >= 4294967295
+macro-int-constant MB_LEN_MAX >= 1
+macro-int-constant SHRT_MIN {promoted:short int} <= -32767
+macro-int-constant SHRT_MAX {promoted:short int} >= 32767
+macro-int-constant USHRT_MAX {promoted:unsigned short int} >= 65535
+// The ranges for int and unsigned int are from POSIX.
+macro-int-constant INT_MAX {int} >= 2147483647
+macro-int-constant INT_MIN {int} <= -2147483647
+macro-int-constant UINT_MAX {unsigned int} >= 4294967295U
+macro-int-constant LONG_MAX {long int} >= 2147483647L
+macro-int-constant LONG_MIN {long int} <= -2147483647L
+macro-int-constant ULONG_MAX {unsigned long int} >= 4294967295UL
 #if defined ISO99 || defined ISO11 || defined XOPEN2K8 || defined POSIX2008
-constant LLONG_MIN <= -9223372036854775807ll
-constant LLONG_MAX >= 9223372036854775807ll
-constant ULLONG_MAX >= 18446744073709551615ull
+macro-int-constant LLONG_MIN {long long int} <= -9223372036854775807ll
+macro-int-constant LLONG_MAX {long long int} >= 9223372036854775807ll
+macro-int-constant ULLONG_MAX {unsigned long long int} >= 18446744073709551615ull
 #endif
 
 #if !defined ISO && !defined ISO99 && !defined ISO11
diff --git a/conform/data/stddef.h-data b/conform/data/stddef.h-data
index a9acf2d..9ded4f1 100644
--- a/conform/data/stddef.h-data
+++ b/conform/data/stddef.h-data
@@ -1,4 +1,4 @@
-constant NULL
+macro-constant NULL == 0
 
 macro offsetof
 
@@ -6,4 +6,10 @@ type ptrdiff_t
 type wchar_t
 type size_t
 
+#if defined ISO11
+type max_align_t
+#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]