diff options
Diffstat (limited to 'conform')
-rw-r--r-- | conform/conformtest.pl | 39 | ||||
-rw-r--r-- | conform/data/complex.h-data | 76 | ||||
-rw-r--r-- | conform/data/sys/utsname.h-data | 10 | ||||
-rw-r--r-- | conform/data/termios.h-data | 2 | ||||
-rw-r--r-- | conform/data/tgmath.h-data | 398 | ||||
-rw-r--r-- | conform/data/time.h-data | 4 | ||||
-rw-r--r-- | conform/data/wchar.h-data | 7 |
7 files changed, 509 insertions, 27 deletions
diff --git a/conform/conformtest.pl b/conform/conformtest.pl index f7c5368..371a04e 100644 --- a/conform/conformtest.pl +++ b/conform/conformtest.pl @@ -12,21 +12,21 @@ GetOptions ('headers=s' => \@headers, 'dialect=s' => \$dialect); if (@headers == ()) { @headers = ("wordexp.h", "wctype.h", "wchar.h", "varargs.h", "utmpx.h", "utime.h", "unistd.h", "ulimit.h", "ucontext.h", "time.h", - "termios.h", "tar.h", "sys/wait.h", "sys/utsname.h", "sys/un.h", - "sys/uio.h", "sys/types.h", "sys/times.h", "sys/timeb.h", - "sys/time.h", "sys/statvfs.h", "sys/stat.h", "sys/socket.h", - "sys/shm.h", "sys/sem.h", "sys/select.h", "sys/resource.h", - "sys/msg.h", "sys/mman.h", "sys/ipc.h", "syslog.h", "stropts.h", - "strings.h", "string.h", "stdlib.h", "stdio.h", "stdint.h", - "stddef.h", "stdarg.h", "spawn.h", "signal.h", "setjmp.h", - "semaphore.h", "search.h", "sched.h", "regex.h", "pwd.h", - "pthread.h", "poll.h", "nl_types.h", "netinet/tcp.h", - "netinet/in.h", "net/if.h", "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", "dirent.h", "ctype.h", "cpio.h", - "assert.h", "arpa/inet.h", "aio.h"); + "tgmath.h", "termios.h", "tar.h", "sys/wait.h", "sys/utsname.h", + "sys/un.h", "sys/uio.h", "sys/types.h", "sys/times.h", + "sys/timeb.h", "sys/time.h", "sys/statvfs.h", "sys/stat.h", + "sys/socket.h", "sys/shm.h", "sys/sem.h", "sys/select.h", + "sys/resource.h", "sys/msg.h", "sys/mman.h", "sys/ipc.h", + "syslog.h", "stropts.h", "strings.h", "string.h", "stdlib.h", + "stdio.h", "stdint.h", "stddef.h", "stdarg.h", "spawn.h", + "signal.h", "setjmp.h", "semaphore.h", "search.h", "sched.h", + "regex.h", "pwd.h", "pthread.h", "poll.h", "nl_types.h", + "netinet/tcp.h", "netinet/in.h", "net/if.h", "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", "dirent.h", "ctype.h", "cpio.h", + "complex.h", "assert.h", "arpa/inet.h", "aio.h"); } if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3" @@ -56,6 +56,7 @@ $CFLAGS{"XOPEN2K"} = "-I. '-D__attribute__(x)=' -D_XOPEN_SOURCE=600"; $mustprepend{'regex.h'} = "#include <sys/types.h>\n"; $mustprepend{'sched.h'} = "#include <sys/types.h>\n"; $mustprepend{'signal.h'} = "#include <pthread.h>\n"; +$mustprepend{'wchar.h'} = "#include <stdarg.h>\n"; $mustprepend{'wordexp.h'} = "#include <stddef.h>\n"; # Make a hash table from this information. @@ -807,9 +808,10 @@ while ($#headers >= 0) { compiletest ($fnamebase, "Test for type of function $fname", "Function \"$fname\" has incorrect type.", $res, 0); - } elsif (/^variable *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*)/) { + } elsif (/^variable *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) *(.*)/) { my($type) = "$2$3"; my($vname) = "$4"; + my($rest) = "$5"; my($res) = $missing; # Remember that this name is allowed. @@ -820,7 +822,8 @@ while ($#headers >= 0) { print TESTFILE "$prepend"; print TESTFILE "#include <$h>\n"; # print TESTFILE "#undef $fname\n"; - print TESTFILE "$type *foobarbaz = &$vname;\n"; + print TESTFILE "typedef $type xyzzy$rest;\n"; + print TESTFILE "$xyzzy *foobarbaz = &$vname;\n"; close (TESTFILE); $res = compiletest ($fnamebase, "Test availability of variable $vname", @@ -831,7 +834,7 @@ while ($#headers >= 0) { print TESTFILE "$prepend"; print TESTFILE "#include <$h>\n"; # print TESTFILE "#undef $fname\n"; - print TESTFILE "extern $type $vname;\n"; + print TESTFILE "extern $type $vname$rest;\n"; close (TESTFILE); compiletest ($fnamebase, "Test for type of variable $fname", diff --git a/conform/data/complex.h-data b/conform/data/complex.h-data new file mode 100644 index 0000000..5c5eedd --- /dev/null +++ b/conform/data/complex.h-data @@ -0,0 +1,76 @@ +#ifdef XOPEN2K +macro complex +macro _Complex_I +optional-macro imaginary +optional-macro _Imaginary_I +macro I + +function double cabs (double complex) +function {double complex} cacos (double complex) +function {double complex} cacosh (double complex) +function double carg (double complex) +function {double complex} casin (double complex) +function {double complex} casinh (double complex) +function {double complex} catan (double complex) +function {double complex} catanh (double complex) +function {double complex} ccos (double complex) +function {double complex} ccosh (double complex) +function {double complex} cexp (double complex) +function double cimag (double complex) +function {double complex} clog (double complex) +function {double complex} conj (double complex) +function {double complex} cpow (double complex, double complex) +function {double complex} cproj (double complex) +function double creal (double complex) +function {double complex} csin (double complex) +function {double complex} csinh (double complex) +function {double complex} csqrt (double complex) +function {double complex} ctan (double complex) +function {double complex} ctanh (double complex) + +function float cabsf (float complex) +function {float complex} cacosf (float complex) +function {float complex} cacoshf (float complex) +function float cargf (float complex) +function {float complex} casinf (float complex) +function {float complex} casinhf (float complex) +function {float complex} catanf (float complex) +function {float complex} catanhf (float complex) +function {float complex} ccosf (float complex) +function {float complex} ccoshf (float complex) +function {float complex} cexpf (float complex) +function float cimagf (float complex) +function {float complex} clogf (float complex) +function {float complex} conjf (float complex) +function {float complex} cpowf (float complex, float complex) +function {float complex} cprojf (float complex) +function float crealf (float complex) +function {float complex} csinf (float complex) +function {float complex} csinhf (float complex) +function {float complex} csqrtf (float complex) +function {float complex} ctanf (float complex) +function {float complex} ctanhf (float complex) + +function {long double} cabsl (long double complex) +function {long double complex} cacosl (long double complex) +function {long double complex} cacoshl (long double complex) +function {long double} cargl (long double complex) +function {long double complex} casinhl (long double complex) +function {long double complex} casinl (long double complex) +function {long double complex} catanhl (long double complex) +function {long double complex} catanl (long double complex) +function {long double complex} ccoshl (long double complex) +function {long double complex} ccosl (long double complex) +function {long double complex} cexpl (long double complex) +function {long double} cimagl (long double complex) +function {long double complex} clogl (long double complex) +function {long double complex} conjl (long double complex) +function {long double complex} cpowl (long double complex, long double complex) +function {long double complex} cprojl (long double complex) +function {long double} creall (long double complex) +function {long double complex} csinhl (long double complex) +function {long double complex} csinl (long double complex) +function {long double complex} csqrtl (long double complex) +function {long double complex} ctanhl (long double complex) +function {long double complex} ctanl (long double complex) +#endif diff --git a/conform/data/sys/utsname.h-data b/conform/data/sys/utsname.h-data index 9f7d4fd..680b666 100644 --- a/conform/data/sys/utsname.h-data +++ b/conform/data/sys/utsname.h-data @@ -1,11 +1,11 @@ #ifndef ISO type {struct utsname} -element {struct utsname} char sysname [1] -element {struct utsname} char nodename [1] -element {struct utsname} char release [1] -element {struct utsname} char version [1] -element {struct utsname} char machine [1] +element {struct utsname} char sysname [] +element {struct utsname} char nodename [] +element {struct utsname} char release [] +element {struct utsname} char version [] +element {struct utsname} char machine [] function int uname (struct utsname *) #endif diff --git a/conform/data/termios.h-data b/conform/data/termios.h-data index 07351b4..d867d4c 100644 --- a/conform/data/termios.h-data +++ b/conform/data/termios.h-data @@ -130,7 +130,7 @@ function int tcflush (int, int) function int tcgetattr (int, struct termios*) function pid_t tcgetsid (int) function int tcsendbreak (int, int) -function int tcsetattr (int, int, struct termios*) +function int tcsetattr (int, int, const struct termios*) allow CBAUD allow DEFECHO diff --git a/conform/data/tgmath.h-data b/conform/data/tgmath.h-data new file mode 100644 index 0000000..2a6bd0c --- /dev/null +++ b/conform/data/tgmath.h-data @@ -0,0 +1,398 @@ +#ifdef XOPEN2K +// <math.h> +macro fpclassify +macro isfinite +macro isinf +macro isnan +macro isnormal +macro signbit +macro isgreater +macro isgreaterequal +macro isless +macro islessequal +macro islessgreater +macro isunordered + +constant M_E +constant M_LOG2E +constant M_LOG10E +constant M_LN2 +constant M_LN10 +constant M_PI +constant M_PI_2 +constant M_PI_4 +constant M_1_PI +constant M_2_PI +constant M_2_SQRTPI +constant M_SQRT2 +constant M_SQRT1_2 + +constant MAXFLOAT +constant HUGE_VAL +constant HUGE_VALF +constant HUGE_VALL +constant INFINITY +constant NAN + +macro FP_INFINITE +macro FP_NAN +macro FP_NORMAL +macro FP_SUBNORMAL +macro FP_ZERO + +optional-macro FP_FAST_FMA +optional-macro FP_FAST_FMAF +optional-macro FP_FAST_FMAL + +constant FP_ILOGB0 +constant FP_ILOGBNAN + +macro MATH_ERRNO == 1 +macro MATH_ERREXCEPT == 2 + +function double acos (double) +function double asin (double) +function double atan (double) +function double atan2 (double, double) +function double ceil (double) +function double copysign (double, double) +function double cos (double) +function double cosh (double) +function double exp (double) +function double exp2 (double) +function double fabs (double) +function double floor (double) +function double fmod (double, double) +function double frexp (double, int*) +function double ldexp (double, int) +function double log (double) +function double log10 (double) +function double log2 (double) +function double modf (double, double*) +function double pow (double, double) +function double sin (double) +function double sinh (double) +function double sqrt (double) +function double tan (double) +function double tanh (double) +function double erf (double) +function double erfc (double) +function double gamma (double) +function double hypot (double, double) +function double j0 (double) +function double j1 (double) +function double jn (int, double) +function double lgamma (double) +function double tgamma (double) +function double y0 (double) +function double y1 (double) +function double yn (int, double) +function int isnan (double) +function double acosh (double) +function double asinh (double) +function double atanh (double) +function double cbrt (double) +function double expm1 (double) +function int ilogb (double) +function double log1p (double) +function double logb (double) +function double nextafter (double, double) +function double nexttoward (double, long double) +function double nearbyint (double) +function double remainder (double, double) +function double rint (double) +function double round (double) +function double trunc (double) +function long lrint (double) +function {long long} llrint (double) +function long lround (double) +function {long long} llround (double) +function double remquo (double, double, int*) +function double scalb (double, double) +function double scalbn (double, int) +function double scalbln (double, long) +function double fdim (double, double) +function double fmax (double, double) +function double fmin (double, double) +function double fma (double, double, double) +function double nan (const char*) + +// variable signgam +allow signgam + +function float acosf (float) +function float asinf (float) +function float atanf (float) +function float atan2f (float, float) +function float ceilf (float) +function float copysignf (float, float) +function float cosf (float) +function float coshf (float) +function float expf (float) +function float exp2f (float) +function float fabsf (float) +function float floorf (float) +function float fmodf (float, float) +function float frexpf (float, int*) +function float ldexpf (float, int) +function float logf (float) +function float log10f (float) +function float log2f (float) +function float modff (float, float*) +function float powf (float, float) +function float sinf (float) +function float sinhf (float) +function float sqrtf (float) +function float tanf (float) +function float tanhf (float) +function float erff (float) +function float erfcf (float) +function float gammaf (float) +function float hypotf (float, float) +function float j0f (float) +function float j1f (float) +function float jnf (int, float) +function float lgammaf (float) +function float tgammaf (float) +function float y0f (float) +function float y1f (float) +function float ynf (int, float) +function int isnanf (float) +function float acoshf (float) +function float asinhf (float) +function float atanhf (float) +function float cbrtf (float) +function float expm1f (float) +function int ilogbf (float) +function float log1pf (float) +function float logbf (float) +function float nextafterf (float, float) +function float nexttowardf (float, long double) +function float nearbyintf (float) +function float remainderf (float, float) +function float rintf (float) +function float roundf (float) +function float truncf (float) +function long lrintf (float) +function {long long} llrintf (float) +function long lroundf (float) +function {long long} llroundf (float) +function float remquof (float, float, int*) +function float scalbf (float, float) +function float scalbnf (float, int) +function float scalblnf (float, long) +function float fdimf (float, float) +function float fmaxf (float, float) +function float fminf (float, float) +function float fmaf (float, float, float) +function float nanf (const char*) + +function {long double} acosl (long double) +function {long double} asinl (long double) +function {long double} atanl (long double) +function {long double} atan2l (long double, long double) +function {long double} ceill (long double) +function {long double} copysignl (long double, long double) +function {long double} cosl (long double) +function {long double} coshl (long double) +function {long double} expl (long double) +function {long double} exp2l (long double) +function {long double} fabsl (long double) +function {long double} floorl (long double) +function {long double} fmodl (long double, long double) +function {long double} frexpl (long double, int*) +function {long double} ldexpl (long double, int) +function {long double} logl (long double) +function {long double} log10l (long double) +function {long double} log2l (long double) +function {long double} modfl (long double, long double*) +function {long double} powl (long double, long double) +function {long double} sinl (long double) +function {long double} sinhl (long double) +function {long double} sqrtl (long double) +function {long double} tanl (long double) +function {long double} tanhl (long double) +function {long double} erfl (long double) +function {long double} erfcl (long double) +function {long double} gammal (long double) +function {long double} hypotl (long double, long double) +function {long double} j0l (long double) +function {long double} j1l (long double) +function {long double} jnl (int, long double) +function {long double} lgammal (long double) +function {long double} tgammal (long double) +function {long double} y0l (long double) +function {long double} y1l (long double) +function {long double} ynl (int, long double) +function int isnanl (long double) +function {long double} acoshl (long double) +function {long double} asinhl (long double) +function {long double} atanhl (long double) +function {long double} cbrtl (long double) +function {long double} expm1l (long double) +function int ilogbl (long double) +function {long double} log1pl (long double) +function {long double} logbl (long double) +function {long double} nextafterl (long double, long double) +function {long double} nexttowardl (long double, long double) +function {long double} nearbyintl (long double) +function {long double} remainderl (long double, long double) +function {long double} rintl (long double) +function {long double} roundl (long double) +function {long double} truncl (long double) +function long lrintl (long double) +function {long long} llrintl (long double) +function long lroundl (long double) +function {long long} llroundl (long double) +function {long double} remquol (long double, long double, int*) +function {long double} scalbl (long double, long double) +function {long double} scalbnl (long double, int) +function {long double} scalblnl (long double, long) +function {long double} fdiml (long double, long double) +function {long double} fmaxl (long double, long double) +function {long double} fminl (long double, long double) +function {long double} fmal (long double, long double, long double) +function {long double} nanl (const char*) + +allow *_t +allow FP_* + +// <complex.h> +macro complex +macro _Complex_I +optional-macro imaginary +optional-macro _Imaginary_I +macro I + +function double cabs (double complex) +function {double complex} cacos (double complex) +function {double complex} cacosh (double complex) +function double carg (double complex) +function {double complex} casin (double complex) +function {double complex} casinh (double complex) +function {double complex} catan (double complex) +function {double complex} catanh (double complex) +function {double complex} ccos (double complex) +function {double complex} ccosh (double complex) +function {double complex} cexp (double complex) +function double cimag (double complex) +function {double complex} clog (double complex) +function {double complex} conj (double complex) +function {double complex} cpow (double complex, double complex) +function {double complex} cproj (double complex) +function double creal (double complex) +function {double complex} csin (double complex) +function {double complex} csinh (double complex) +function {double complex} csqrt (double complex) +function {double complex} ctan (double complex) +function {double complex} ctanh (double complex) + +function float cabsf (float complex) +function {float complex} cacosf (float complex) +function {float complex} cacoshf (float complex) +function float cargf (float complex) +function {float complex} casinf (float complex) +function {float complex} casinhf (float complex) +function {float complex} catanf (float complex) +function {float complex} catanhf (float complex) +function {float complex} ccosf (float complex) +function {float complex} ccoshf (float complex) +function {float complex} cexpf (float complex) +function float cimagf (float complex) +function {float complex} clogf (float complex) +function {float complex} conjf (float complex) +function {float complex} cpowf (float complex, float complex) +function {float complex} cprojf (float complex) +function float crealf (float complex) +function {float complex} csinf (float complex) +function {float complex} csinhf (float complex) +function {float complex} csqrtf (float complex) +function {float complex} ctanf (float complex) +function {float complex} ctanhf (float complex) + +function {long double} cabsl (long double complex) +function {long double complex} cacosl (long double complex) +function {long double complex} cacoshl (long double complex) +function {long double} cargl (long double complex) +function {long double complex} casinhl (long double complex) +function {long double complex} casinl (long double complex) +function {long double complex} catanhl (long double complex) +function {long double complex} catanl (long double complex) +function {long double complex} ccoshl (long double complex) +function {long double complex} ccosl (long double complex) +function {long double complex} cexpl (long double complex) +function {long double} cimagl (long double complex) +function {long double complex} clogl (long double complex) +function {long double complex} conjl (long double complex) +function {long double complex} cpowl (long double complex, long double complex) +function {long double complex} cprojl (long double complex) +function {long double} creall (long double complex) +function {long double complex} csinhl (long double complex) +function {long double complex} csinl (long double complex) +function {long double complex} csqrtl (long double complex) +function {long double complex} ctanhl (long double complex) +function {long double complex} ctanl (long double complex) + +// <tgmath.h> +macro acos +macro asin +macro atan +macro acosh +macro asinh +macro atanh +macro cos +macro sin +macro tan +macro cosh +macro sinh +macro tanh +macro exp +macro pow +macro sqrt +macro fabs + +macro atan2 +macro cbrt +macro ceil +macro copysign +macro erf +macro erfc +macro exp2 +macro expm1 +macro fdim +macro floor +macro fma +macro fmax +macro fmin +macro fmod +macro frexp +macro hypot +macro ilogb +macro ldexp +macro lgamma +macro llrint +macro llround +macro log10 +macro log1p +macro log2 +macro logb +macro lrint +macro lround +macro nearbyint +macro nextafter +macro nexttoward +macro remainder +macro remquo +macro rint +macro round +macro scalbn +macro scalbln +macro tgamma +macro trunc + +macro carg +macro cimag +macro conj +macro cproj +macro creal +#endif diff --git a/conform/data/time.h-data b/conform/data/time.h-data index e0b91f3..f503165 100644 --- a/conform/data/time.h-data +++ b/conform/data/time.h-data @@ -11,7 +11,9 @@ element {struct tm} int tm_yday element {struct tm} int tm_isdst constant NULL +#ifndef XOPEN2K constant CLK_TCK +#endif constant CLOCKS_PER_SEC constant CLOCK_PROCESS_CPUTIME_ID constant CLOCK_THREAD_CPUTIME_ID @@ -68,7 +70,7 @@ function void tzset (void) variable int daylight variable {long int} timezone -// variable {char*} tzname [] +variable {char*} tzname [2] allow tm_* allow clock_* diff --git a/conform/data/wchar.h-data b/conform/data/wchar.h-data index 49f85c5..7c15895 100644 --- a/conform/data/wchar.h-data +++ b/conform/data/wchar.h-data @@ -31,7 +31,7 @@ function wint_t getwc (FILE*) function wint_t getwchar (void) function int mbsinit (const mbstate_t*) function size_t mbrlen (const char*, size_t, mbstate_t*) -function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_*) +function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_t*) function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*) function wint_t putwc (wchar_t, FILE*) function wint_t putwchar (wchar_t) @@ -40,9 +40,12 @@ function int swscanf (const wchar_t*, const wchar_t*, ...) function wint_t towlower (wint_t) function wint_t towupper (wint_t) function wint_t ungetwc (wint_t, FILE*) -function int vfwprintf (FILE, const wchar_t*, va_list) +function int vfwprintf (FILE*, const wchar_t*, va_list) +function int vfwscanf (FILE*, const wchar_t*, va_list) function int vwprintf (const wchar_t*, va_list) +function int vwscanf (const wchar_t*, va_list) function int vswprintf (wchar_t*, size_t, const wchar_t*, va_list) +function int vswscanf (const wchar_t*, const wchar_t*, va_list) function size_t wcrtomb (char*, wchar_t, mbstate_t*) function {wchar_t*} wcscat (wchar_t*, const wchar_t*) function {wchar_t*} wcschr (const wchar_t*, wchar_t) |