This is the mail archive of the glibc-cvs@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]

GNU C Library master sources branch, master, updated. glibc-2.15-227-g3134156


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3134156779108fe8b46e0f4cd60d837572faaa93 (commit)
      from  7a270350a9bc3110cd5ba12bbd8c5c8c365e0032 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3134156779108fe8b46e0f4cd60d837572faaa93

commit 3134156779108fe8b46e0f4cd60d837572faaa93
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Sat Feb 25 23:18:39 2012 -0500

    First steps to get conformtest fully working

diff --git a/ChangeLog b/ChangeLog
index f1dd278..b216015 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,136 @@
 2012-02-25  Ulrich Drepper  <drepper@gmail.com>
 
+	* conform/run-conformtest.sh: New file.
+	* conform/Makefile: Run run-conformtest for tests.
+	* conform/conformtest.pl: Many bug fixes.  Add ISO C99, ISO C11
+	support.
+
+	* conform/data/uchar.h-data: New file.
+	* conform/data/aio.h-data: Fixes for ISO C and POSIX 1995 testing.
+	* conform/data/arpa/inet.h-data: Likewise.
+	* conform/data/assert.h-data: Likewise.
+	* conform/data/complex.h-data: Likewise.
+	* conform/data/cpio.h-data: Likewise.
+	* conform/data/ctype.h-data: Likewise.
+	* conform/data/dirent.h-data: Likewise.
+	* conform/data/dlfcn.h-data: Likewise.
+	* conform/data/errno.h-data: Likewise.
+	* conform/data/fcntl.h-data: Likewise.
+	* conform/data/float.h-data: Likewise.
+	* conform/data/fmtmsg.h-data: Likewise.
+	* conform/data/fnmatch.h-data: Likewise.
+	* conform/data/ftw.h-data: Likewise.
+	* conform/data/glob.h-data: Likewise.
+	* conform/data/grp.h-data: Likewise.
+	* conform/data/iconv.h-data: Likewise.
+	* conform/data/inttypes.h-data: Likewise.
+	* conform/data/langinfo.h-data: Likewise.
+	* conform/data/libgen.h-data: Likewise.
+	* conform/data/limits.h-data: Likewise.
+	* conform/data/locale.h-data: Likewise.
+	* conform/data/math.h-data: Likewise.
+	* conform/data/monetary.h-data: Likewise.
+	* conform/data/mqueue.h-data: Likewise.
+	* conform/data/ndbm.h-data: Likewise.
+	* conform/data/net/if.h-data: Likewise.
+	* conform/data/netdb.h-data: Likewise.
+	* conform/data/netinet/in.h-data: Likewise.
+	* conform/data/nl_types.h-data: Likewise.
+	* conform/data/poll.h-data: Likewise.
+	* conform/data/pthread.h-data: Likewise.
+	* conform/data/pwd.h-data: Likewise.
+	* conform/data/regex.h-data: Likewise.
+	* conform/data/sched.h-data: Likewise.
+	* conform/data/search.h-data: Likewise.
+	* conform/data/semaphore.h-data: Likewise.
+	* conform/data/setjmp.h-data: Likewise.
+	* conform/data/signal.h-data: Likewise.
+	* conform/data/spawn.h-data: Likewise.
+	* conform/data/stdarg.h-data: Likewise.
+	* conform/data/stdio.h-data: Likewise.
+	* conform/data/stdlib.h-data: Likewise.
+	* conform/data/string.h-data: Likewise.
+	* conform/data/strings.h-data: Likewise.
+	* conform/data/stropts.h-data: Likewise.
+	* conform/data/sys/ipc.h-data: Likewise.
+	* conform/data/sys/mman.h-data: Likewise.
+	* conform/data/sys/msg.h-data: Likewise.
+	* conform/data/sys/resource.h-data: Likewise.
+	* conform/data/sys/select.h-data: Likewise.
+	* conform/data/sys/sem.h-data: Likewise.
+	* conform/data/sys/shm.h-data: Likewise.
+	* conform/data/sys/socket.h-data: Likewise.
+	* conform/data/sys/stat.h-data: Likewise.
+	* conform/data/sys/statvfs.h-data: Likewise.
+	* conform/data/sys/time.h-data: Likewise.
+	* conform/data/sys/timeb.h-data: Likewise.
+	* conform/data/sys/times.h-data: Likewise.
+	* conform/data/sys/types.h-data: Likewise.
+	* conform/data/sys/uio.h-data: Likewise.
+	* conform/data/sys/un.h-data: Likewise.
+	* conform/data/sys/utsname.h-data: Likewise.
+	* conform/data/sys/wait.h-data: Likewise.
+	* conform/data/syslog.h-data: Likewise.
+	* conform/data/tar.h-data: Likewise.
+	* conform/data/termios.h-data: Likewise.
+	* conform/data/utime.h-data: Likewise.
+	* conform/data/utmpx.h-data: Likewise.
+	* conform/data/varargs.h-data: Likewise.
+	* conform/data/wchar.h-data: Likewise.
+	* conform/data/wctype.h-data: Likewise.
+	* conform/data/wordexp.h-data: Likewise.
+
+	* include/stropts.h: New file.
+	* include/uchar.h: New file.
+	* include/aio.h: Changes to allow conformtest.pl to use the headers.
+	* include/assert.h: Likewise.
+	* include/ctype.h: Likewise.
+	* include/dirent.h: Likewise.
+	* include/dlfcn.h: Likewise.
+	* include/fcntl.h: Likewise.
+	* include/fnmatch.h: Likewise.
+	* include/glob.h: Likewise.
+	* include/grp.h: Likewise.
+	* include/libio.h: Likewise.
+	* include/locale.h: Likewise.
+	* include/math.h: Likewise.
+	* include/net/if.h: Likewise.
+	* include/netdb.h: Likewise.
+	* include/netinet/in.h: Likewise.
+	* include/pthread.h: Likewise.
+	* include/pwd.h: Likewise.
+	* include/regex.h: Likewise.
+	* include/sched.h: Likewise.
+	* include/search.h: Likewise.
+	* include/setjmp.h: Likewise.
+	* include/signal.h: Likewise.
+	* include/stdio.h: Likewise.
+	* include/stdlib.h: Likewise.
+	* include/string.h: Likewise.
+	* include/sys/cdefs.h: Likewise.
+	* include/sys/mman.h: Likewise.
+	* include/sys/msg.h: Likewise.
+	* include/sys/resource.h: Likewise.
+	* include/sys/select.h: Likewise.
+	* include/sys/socket.h: Likewise.
+	* include/sys/stat.h: Likewise.
+	* include/sys/statvfs.h: Likewise.
+	* include/sys/time.h: Likewise.
+	* include/sys/times.h: Likewise.
+	* include/sys/uio.h: Likewise.
+	* include/sys/utsname.h: Likewise.
+	* include/sys/wait.h: Likewise.
+	* include/termios.h: Likewise.
+	* include/time.h: Likewise.
+	* include/ulimit.h: Likewise.
+	* include/unistd.h: Likewise.
+	* include/utime.h: Likewise.
+	* include/wchar.h: Likewise.
+	* include/wctype.h: Likewise.
+	* include/wordexp.h: Likewise.
+
+	* posix/tar.h (TSVTX): Should not be visible for POSIX before 2008.
+
 	* time/time.h: TIME_UTC must be a macro.
 	Make timespec_get available for ISO C11 only as well.
 
diff --git a/conform/Makefile b/conform/Makefile
index ee5c540..5d88732 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2012 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -24,3 +24,13 @@ distribute = conformtest.pl $(wildcard data/*.h-data) \
 	   $(wildcard data/*/*.h-data)
 
 include ../Rules
+
+tests: $(objpfx)run-conformtest.out
+
+$(objpfx)run-conformtest.out: run-conformtest.sh conformtest.pl \
+			      $(wildcard data/*.h-data) \
+			      $(wildcard data/*/*.h-data)
+	$(SHELL) -e $< $(objpfx) $(PERL) '$(CC)' \
+	  '-I../include $(+sysdep-includes) $(sysincludes) -I..'
+
+generated = $(wildcard $(objpfx)conform-*.out)
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index d324d81..f90a418 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -5,47 +5,40 @@ use POSIX;
 
 $CC = "gcc";
 
-$dialect="XOPEN2K";
-GetOptions ('headers=s' => \@headers, 'dialect=s' => \$dialect);
+$standard="XOPEN2K8";
+GetOptions ('headers=s' => \@headers, 'standard=s' => \$standard,
+	    'flags=s' => \$flags, 'cc=s' => \$CC);
 @headers = split(/,/,join(',',@headers));
 
 # List of the headers we are testing.
 if (@headers == ()) {
   @headers = ("wordexp.h", "wctype.h", "wchar.h", "varargs.h", "utmpx.h",
-	      "utime.h", "unistd.h", "ulimit.h", "ucontext.h", "time.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");
+	      "utime.h", "unistd.h", "ulimit.h", "ucontext.h", "uchar.h",
+	      "time.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"
-    && $dialect ne "XPG4" && $dialect ne "UNIX98" && $dialect ne "XOPEN2K"
-    && $dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") {
-  die "unknown dialect \"$dialect\"";
+if ($standard ne "ISO" && $standard ne "ISO99" && $standard ne "ISO11"
+    && $standard ne "POSIX" && $standard ne "XPG3" && $standard ne "XPG4"
+    && $standard ne "UNIX98" && $standard ne "XOPEN2K" && $standard ne "XOPEN2K8"
+    && $standard ne "POSIX2008") {
+  die "unknown standard \"$standard\"";
 }
 
-$CFLAGS{"ISO"} = "-I. -fno-builtin '-D__attribute__(x)=' -ansi";
-$CFLAGS{"POSIX"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE=199912";
-$CFLAGS{"XPG3"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE";
-$CFLAGS{"XPG4"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE_EXTENDED";
-$CFLAGS{"UNIX98"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=500";
-$CFLAGS{"XOPEN2K"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=600";
-$CFLAGS{"XOPEN2K8"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=700";
-$CFLAGS{"POSIX2008"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE=200809L";
-
-
 # These are the ISO C99 keywords.
 @keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default',
 	     'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto',
@@ -56,14 +49,31 @@ $CFLAGS{"POSIX2008"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE
 # These are symbols which are known to pollute the namespace.
 @knownproblems = ('unix', 'linux', 'i386');
 
-if ($dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") {
+$CFLAGS{"ISO"} = "-ansi";
+$CFLAGS{"ISO99"} = "-std=c99";
+$CFLAGS{"ISO11"} = "-std=c1x -D_ISOC11_SOURCE";
+$CFLAGS{"POSIX"} = "-D_POSIX_C_SOURCE=199912";
+$CFLAGS{"XPG3"} = "-D_XOPEN_SOURCE";
+$CFLAGS{"XPG4"} = "-D_XOPEN_SOURCE_EXTENDED";
+$CFLAGS{"UNIX98"} = "-D_XOPEN_SOURCE=500";
+$CFLAGS{"XOPEN2K"} = "-D_XOPEN_SOURCE=600";
+$CFLAGS{"XOPEN2K8"} = "-D_XOPEN_SOURCE=700";
+$CFLAGS{"POSIX2008"} = "-D_POSIX_C_SOURCE=200809L";
+
+$CFLAGS = "$flags -fno-builtin '-D__attribute__(x)=' $CFLAGS{$standard} -D_ISOMAC";
+
+if ($standard ne "XOPEN2K8" && $standard ne "POSIX2008") {
   # Some headers need a bit more attention.  At least with XPG7
   # all headers should be self-contained.
   $mustprepend{'inttypes.h'} = "#include <stddef.h>\n";
+  $mustprepend{'glob.h'} = "#include <sys/types.h>\n";
+  $mustprepend{'grp.h'} = "#include <sys/types.h>\n";
   $mustprepend{'regex.h'} = "#include <sys/types.h>\n";
+  $mustprepend{'pwd.h'} = "#include <sys/types.h>\n";
   $mustprepend{'sched.h'} = "#include <sys/types.h>\n";
-  $mustprepend{'signal.h'} = "#include <pthread.h>\n";
+  $mustprepend{'signal.h'} = "#include <pthread.h>\n#include <sys/types.h>\n";
   $mustprepend{'stdio.h'} = "#include <sys/types.h>\n";
+  $mustprepend{'sys/stat.h'} = "#include <sys/types.h>\n";
   $mustprepend{'wchar.h'} = "#include <stdarg.h>\n";
   $mustprepend{'wordexp.h'} = "#include <stddef.h>\n";
 }
@@ -100,9 +110,17 @@ sub poorfnmatch {
     $res = ($strlen >= $patlen
 	    && substr ($pattern, -$patlen, $patlen) eq substr ($string, -$patlen, $patlen));
   } elsif (substr ($pattern, -1, 1) eq '*') {
-    my($patlen) = length ($pattern) - 1;
-    $res = ($strlen >= $patlen
-	    && substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen));
+    if (substr ($pattern, -2, 1) eq ']') {
+      my($patlen) = index ($pattern, '[');
+      my($range) = substr ($pattern, $patlen + 1, -2);
+      $res = ($strlen > $patlen
+	      && substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen)
+	      && index ($range, substr ($string, $patlen, 1)) != -1);
+    } else {
+      my($patlen) = length ($pattern) - 1;
+      $res = ($strlen >= $patlen
+	      && substr ($pattern, 0, $patlen) eq substr ($string, 0, $patlen));
+    }
   } else {
     $res = $pattern eq $string;
   }
@@ -123,7 +141,7 @@ sub compiletest
     ++$skipped;
     printf (" SKIP\n");
   } else {
-    $ret = system "$CC $CFLAGS{$dialect} -c $fnamebase.c -o $fnamebase.o > $fnamebase.out 2>&1";
+    $ret = system "$CC $CFLAGS -c $fnamebase.c -o $fnamebase.o > $fnamebase.out 2>&1";
     if ($ret != 0) {
       if ($optional != 0) {
 	printf (" $errmsg\n");
@@ -175,7 +193,7 @@ sub runtest
     ++$skipped;
     printf (" SKIP\n");
   } else {
-    $ret = system "$CC $CFLAGS{$dialect} -o $fnamebase $fnamebase.c > $fnamebase.out 2>&1";
+    $ret = system "$CC $CFLAGS -o $fnamebase $fnamebase.c > $fnamebase.out 2>&1";
     if ($ret != 0) {
       printf (" FAIL\n");
       if ($verbose != 0) {
@@ -232,9 +250,7 @@ sub newtoken {
     return if (poorfnmatch ($allow[$idx], $token));
   }
 
-  if ($isknown{$token}) {
-    ++$nknown;
-  } else {
+  unless ($isknown{$token}) {
     $errors{$token} = 1;
   }
 }
@@ -264,7 +280,7 @@ sub checknamespace {
 
   undef %errors;
   $nknown = 0;
-  open (CONTENT, "$CC $CFLAGS{$dialect} -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |");
+  open (CONTENT, "$CC $CFLAGS -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |");
   loop: while (<CONTENT>) {
     chop;
     if (/^#define (.*)/) {
@@ -303,12 +319,7 @@ sub checknamespace {
   }
 
   if ($realerror == 0) {
-    if ($nknown > 0) {
-      printf ("EXPECTED FAILURES\n");
-      ++$known;
-    } else {
-      printf ("OK\n");
-    }
+    printf ("OK\n");
   }
 }
 
@@ -318,32 +329,36 @@ while ($#headers >= 0) {
   my($hf) = $h;
   $hf =~ s|/|-|;
   my($fnamebase) = "$tmpdir/$hf-test";
-  my($missing);
+  my($missing) = 1;
   my(@allow) = ();
   my(@allowheader) = ();
   my(%seenheader) = ();
   my($prepend) = $mustprepend{$h};
+  my($test_exist) = 1;
 
   printf ("Testing <$h>\n");
   printf ("----------" . "-" x length ($h) . "\n");
 
-  # Generate a program to test for the availability of this header.
-  open (TESTFILE, ">$fnamebase.c");
-  print TESTFILE "$prepend";
-  print TESTFILE "#include <$h>\n";
-  close (TESTFILE);
-
-  $missing = compiletest ($fnamebase, "Checking whether <$h> is available",
-			  "Header <$h> not available", 0, 0);
-
-  printf ("\n");
-
-  open (CONTROL, "$CC -E -D$dialect - < data/$h-data |");
+  open (CONTROL, "$CC -E -D$standard -x c data/$h-data |");
   control: while (<CONTROL>) {
     chop;
     next control if (/^#/);
     next control if (/^[	]*$/);
 
+    if ($test_exist) {
+      $test_exist = 0;
+      # Generate a program to test for the availability of this header.
+      open (TESTFILE, ">$fnamebase.c");
+      print TESTFILE "$prepend";
+      print TESTFILE "#include <$h>\n";
+      close (TESTFILE);
+
+      $missing = compiletest ($fnamebase, "Checking whether <$h> is available",
+			      "Header <$h> not available", 0, 0);
+      printf ("\n");
+      last control if ($missing);
+    }
+
     if (/^element *({([^}]*)}|([^{ ]*)) *({([^}]*)}|([^{ ]*)) *([A-Za-z0-9_]*) *(.*)/) {
       my($struct) = "$2$3";
       my($type) = "$5$6";
@@ -421,7 +436,7 @@ while ($#headers >= 0) {
 		     "Member \"$member\" does not have the correct type.",
 		     $res, 0);
       }
-    } elsif (/^optional-constant *([a-zA-Z0-9_]*) ([>=<]+) ([A-Za-z0-9_]*)/) {
+    } elsif (/^optional-constant *([a-zA-Z0-9_]*) ([>=<]+) ([A-Za-z0-9_-]*)/) {
       my($const) = $1;
       my($op) = $2;
       my($value) = $3;
@@ -452,7 +467,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of constant $const",
 			"Constant \"$const\" has not the right value.", $res);
       }
-    } elsif (/^constant *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_]*)/) {
+    } elsif (/^constant *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_-]*)/) {
       my($const) = $1;
       my($op) = $2;
       my($value) = $3;
@@ -483,7 +498,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of constant $const",
 			"Constant \"$const\" has not the right value.", $res);
       }
-    } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) {
+    } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_-]*)?/) {
       my($const) = $1;
       my($type) = "$3$4";
       my($value) = $5;
@@ -525,7 +540,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of constant $const",
 			"Constant \"$const\" has not the right value.", $res);
       }
-    } elsif (/^optional-constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) {
+    } elsif (/^optional-constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
       my($const) = $1;
       my($value) = $2;
       my($res) = $missing;
@@ -554,7 +569,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of constant $const",
 			"Constant \"$const\" has not the right value.", $res);
       }
-    } elsif (/^constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) {
+    } elsif (/^constant *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
       my($const) = $1;
       my($value) = $2;
       my($res) = $missing;
@@ -583,7 +598,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of constant $const",
 			"Constant \"$const\" has not the right value.", $res);
       }
-    } elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)?/) {
+    } elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
       my($symbol) = $1;
       my($value) = $2;
       my($res) = $missing;
@@ -614,7 +629,7 @@ while ($#headers >= 0) {
 	$res = runtest ($fnamebase, "Testing for value of symbol $symbol",
 			"Symbol \"$symbol\" has not the right value.", $res);
       }
-    } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) {
+    } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_-]*)?/) {
       my($const) = $1;
       my($type) = "$3$4";
       my($value) = $5;
@@ -908,7 +923,7 @@ while ($#headers >= 0) {
       print TESTFILE "#endif\n";
       close (TESTFILE);
 
-      $res = compiletest ($fnamebase, "Test availability of function $fname",
+      $res = compiletest ($fnamebase, "Test availability of macro $fname",
 			  "Function \"$fname\" is not available.", $res, 0);
 
       # Generate a program to test for the type of this function.
@@ -921,7 +936,7 @@ while ($#headers >= 0) {
       print TESTFILE "#endif\n";
       close (TESTFILE);
 
-      compiletest ($fnamebase, "Test for type of function $fname",
+      compiletest ($fnamebase, "Test for type of macro $fname",
 		   "Function \"$fname\" has incorrect type.", $res, 0);
     } elsif (/^macro-str *([^	 ]*) *(\".*\")/) {
       # The above regex doesn't handle a \" in a string.
@@ -1002,7 +1017,39 @@ while ($#headers >= 0) {
 	print TESTFILE "int main (void) { return !($macro $op $value); }\n";
 	close (TESTFILE);
 
-	$res = runtest ($fnamebase, "Testing for value of constant $macro",
+	$res = runtest ($fnamebase, "Testing for value of macro $macro",
+			"Macro \"$macro\" has not the right value.", $res);
+      }
+    } elsif (/^macro *([a-zA-Z0-9_]*) *([A-Za-z0-9_]*)/) {
+      my($macro) = "$1";
+      my($value) = $2;
+      my($res) = $missing;
+
+      # Remember that this name is allowed.
+      push @allow, $macro;
+
+      # Generate a program to test for availability of this macro.
+      open (TESTFILE, ">$fnamebase.c");
+      print TESTFILE "$prepend";
+      print TESTFILE "#include <$h>\n";
+      print TESTFILE "#ifndef $macro\n";
+      print TESTFILE "# error \"Macro $macro not defined\"\n";
+      print TESTFILE "#endif\n";
+      close (TESTFILE);
+
+      $res = compiletest ($fnamebase, "Test availability of macro $macro",
+			  "Macro \"$macro\" is not available.", $res, 0);
+
+      if ($value ne "") {
+	# Generate a program to test for the value of this constant.
+	open (TESTFILE, ">$fnamebase.c");
+	print TESTFILE "$prepend";
+	print TESTFILE "#include <$h>\n";
+	# Negate the value since 0 means ok
+	print TESTFILE "int main (void) { return !($macro == $value); }\n";
+	close (TESTFILE);
+
+	$res = runtest ($fnamebase, "Testing for value of macro $macro",
 			"Macro \"$macro\" has not the right value.", $res);
       }
     } elsif (/^macro *([^	]*)/) {
@@ -1046,7 +1093,7 @@ while ($#headers >= 0) {
   while ($#allowheader >= 0) {
     my($ah) = pop @allowheader;
 
-    open (ALLOW, "$CC -E -D$dialect - < data/$ah-data |");
+    open (ALLOW, "$CC -E -D$standard - < data/$ah-data |");
     acontrol: while (<ALLOW>) {
       chop;
       next acontrol if (/^#/);
@@ -1091,13 +1138,17 @@ while ($#headers >= 0) {
     close (ALLOW);
   }
 
-  # Now check the namespace.
-  printf ("  Checking the namespace of \"%s\"... ", $h);
-  if ($missing) {
-    ++$skipped;
-    printf ("SKIP\n");
+  if ($test_exist) {
+    printf ("  Not defined\n");
   } else {
-    checknamespace ($h, $fnamebase, @allow);
+    # Now check the namespace.
+    printf ("  Checking the namespace of \"%s\"... ", $h);
+    if ($missing) {
+      ++$skipped;
+      printf ("SKIP\n");
+    } else {
+      checknamespace ($h, $fnamebase, @allow);
+    }
   }
 
   printf ("\n\n");
@@ -1106,14 +1157,6 @@ while ($#headers >= 0) {
 printf "-" x 76 . "\n";
 printf ("  Total number of tests   : %4d\n", $total);
 
-printf ("  Number of known failures: %4d (", $known);
-$percent = ($known * 100) / $total;
-if ($known > 0 && $percent < 1.0) {
-  printf (" <1%%)\n");
-} else {
-  printf ("%3d%%)\n", $percent);
-}
-
 printf ("  Number of failed tests  : %4d (", $errors);
 $percent = ($errors * 100) / $total;
 if ($errors > 0 && $percent < 1.0) {
@@ -1131,3 +1174,6 @@ if ($skipped > 0 && $percent < 1.0) {
 }
 
 exit $errors != 0;
+# Local Variables:
+#  perl-indent-level: 2
+# End:
diff --git a/conform/data/aio.h-data b/conform/data/aio.h-data
index 75698cb..b810014 100644
--- a/conform/data/aio.h-data
+++ b/conform/data/aio.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct aiocb}
 
 // Test elements of the AIO control struct.
diff --git a/conform/data/arpa/inet.h-data b/conform/data/arpa/inet.h-data
index 98f5e0e..becee2f 100644
--- a/conform/data/arpa/inet.h-data
+++ b/conform/data/arpa/inet.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 // in_port_t should have exactly 16 bits
 type in_port_t
 // in_addr_t should have exactly 32 bits
diff --git a/conform/data/assert.h-data b/conform/data/assert.h-data
index 1b11808..9c3cc04 100644
--- a/conform/data/assert.h-data
+++ b/conform/data/assert.h-data
@@ -1,3 +1,7 @@
 macro assert
 
+#ifdef ISO11
+macro static_assert
+#endif
+
 allow *_t
diff --git a/conform/data/complex.h-data b/conform/data/complex.h-data
index 006d6e4..8f31d22 100644
--- a/conform/data/complex.h-data
+++ b/conform/data/complex.h-data
@@ -1,4 +1,4 @@
-#if defined XOPEN2K || defined POSIX2008
+#if defined ISO99 || defined ISO11 || defined XOPEN2K || defined POSIX2008
 macro complex
 macro _Complex_I
 optional-macro imaginary
@@ -73,4 +73,10 @@ 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)
+
+# if defined ISO11
+macro-function {double complex} CMPLX (double, double)
+macro-function {float complex} CMPLXF (float, float)
+macro-function {long double complex} CMPLXL (long double, long double)
+# endif
 #endif
diff --git a/conform/data/cpio.h-data b/conform/data/cpio.h-data
index c6f4d89..6e71319 100644
--- a/conform/data/cpio.h-data
+++ b/conform/data/cpio.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant C_IRUSR 0000400
 constant C_IWUSR 0000200
 constant C_IXUSR 0000100
diff --git a/conform/data/ctype.h-data b/conform/data/ctype.h-data
index 091d377..e2c6019 100644
--- a/conform/data/ctype.h-data
+++ b/conform/data/ctype.h-data
@@ -12,7 +12,7 @@ function int isxdigit (int)
 function int tolower (int)
 function int toupper (int)
 
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function int isascii (int)
 function int toascii (int)
 
diff --git a/conform/data/dirent.h-data b/conform/data/dirent.h-data
index f1cd59c..be7ad06 100644
--- a/conform/data/dirent.h-data
+++ b/conform/data/dirent.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type DIR
 
 type {struct dirent}
diff --git a/conform/data/dlfcn.h-data b/conform/data/dlfcn.h-data
index 93e3354..59dd028 100644
--- a/conform/data/dlfcn.h-data
+++ b/conform/data/dlfcn.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 macro RTLD_LAZY
 macro RTLD_NOW
 macro RTLD_GLOBAL
diff --git a/conform/data/errno.h-data b/conform/data/errno.h-data
index ffdf6b5..328687f 100644
--- a/conform/data/errno.h-data
+++ b/conform/data/errno.h-data
@@ -2,7 +2,10 @@ constant EDOM
 constant EILSEQ
 constant ERANGE
 
-#ifndef ISO
+// variable int errno
+allow errno
+
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant E2BIG
 constant EACCES
 constant EADDRINUSE
@@ -84,9 +87,9 @@ constant ENOTRECOVERABLE
 constant EOWNERDEAD
 # endif
 
-// variable int errno
-allow errno
-
 allow E*
 allow *_t
 #endif
+
+allow E[0123456789]*
+allow E[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
diff --git a/conform/data/fcntl.h-data b/conform/data/fcntl.h-data
index 7769a44..54eed41 100644
--- a/conform/data/fcntl.h-data
+++ b/conform/data/fcntl.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 constant F_DUPFD
 constant F_GETFD
 constant F_SETFD
diff --git a/conform/data/float.h-data b/conform/data/float.h-data
index 71a429b..49d953a 100644
--- a/conform/data/float.h-data
+++ b/conform/data/float.h-data
@@ -38,4 +38,23 @@ macro FLT_MIN
 macro DBL_MIN
 macro LDBL_MIN
 
+#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined POSIX && !defined UNIX98
+constant DECIMAL_DIG >= 10
+constant FLT_EVAL_METHOD
+#endif
+
+#if defined ISO11
+constant DBL_HAS_SUBNORM
+constant FLT_HAS_SUBNORM
+constant LDBL_HAS_SUBNORM
+
+constant DBL_DECIMAL_DIG >= 10
+constant FLT_DECIMAL_DIG >= 6
+constant LDBL_DECIMAL_DIG >= 10
+
+constant DBL_TRUE_MIN <= 1E-37
+constant FLT_TRUE_MIN <= 1E-37
+constant LDBL_TRUE_MIN <= 1E-37
+#endif
+
 allow *_t
diff --git a/conform/data/fmtmsg.h-data b/conform/data/fmtmsg.h-data
index 67c35c1..d6d0ff1 100644
--- a/conform/data/fmtmsg.h-data
+++ b/conform/data/fmtmsg.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 macro MM_HARD
 constant MM_HARD
 
diff --git a/conform/data/fnmatch.h-data b/conform/data/fnmatch.h-data
index 96591d6..12a9a4a 100644
--- a/conform/data/fnmatch.h-data
+++ b/conform/data/fnmatch.h-data
@@ -1,9 +1,9 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant FNM_NOMATCH
 constant FNM_PATHNAME
 constant FNM_PERIOD
 constant FNM_NOESCAPE
-#if !defined XOPEN2K8 && !defined POSIX2008
+#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
 constant FNM_NOSYS
 #endif
 
diff --git a/conform/data/ftw.h-data b/conform/data/ftw.h-data
index eb49924..0fa586a 100644
--- a/conform/data/ftw.h-data
+++ b/conform/data/ftw.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type {struct FTW}
 element {struct FTW} int base
 element {struct FTW} int level
diff --git a/conform/data/glob.h-data b/conform/data/glob.h-data
index 9f90f8b..23a5077 100644
--- a/conform/data/glob.h-data
+++ b/conform/data/glob.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type glob_t
 element glob_t size_t gl_pathc
 element glob_t {char**} gl_pathv
diff --git a/conform/data/grp.h-data b/conform/data/grp.h-data
index 1651950..384e1ad 100644
--- a/conform/data/grp.h-data
+++ b/conform/data/grp.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct group}
 element {struct group} {char*} gr_name
 element {struct group} gid_t gr_gid
@@ -13,9 +13,9 @@ type size_t
 
 function {struct group*} getgrgid (gid_t)
 function {struct group*} getgrnam (const char*)
-# ifndef POSIX
 function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**)
 function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**)
+# ifndef POSIX
 function {struct group*} getgrent (void)
 function void endgrent (void)
 #  ifndef POSIX2008
diff --git a/conform/data/iconv.h-data b/conform/data/iconv.h-data
index 7071d90..79fb2d6 100644
--- a/conform/data/iconv.h-data
+++ b/conform/data/iconv.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type iconv_t
 # if defined XOPEN2K8 || defined POSIX2008
 type size_t
diff --git a/conform/data/inttypes.h-data b/conform/data/inttypes.h-data
index 17d2b97..d308a52 100644
--- a/conform/data/inttypes.h-data
+++ b/conform/data/inttypes.h-data
@@ -1,3 +1,4 @@
+#if defined ISO99 || defined ISO11 || defined XOPEN2K || defined POSIX2008
 type int8_t
 type int16_t
 type int32_t
@@ -141,3 +142,4 @@ allow INT*
 allow UINT*
 allow PRI[Xa-z]*
 allow SCN[Xa-z]*
+#endif
diff --git a/conform/data/langinfo.h-data b/conform/data/langinfo.h-data
index 95bc3f9..51dd925 100644
--- a/conform/data/langinfo.h-data
+++ b/conform/data/langinfo.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 constant CODESET
 constant D_T_FMT
 constant D_FMT
diff --git a/conform/data/libgen.h-data b/conform/data/libgen.h-data
index b749b8d..f59bbb0 100644
--- a/conform/data/libgen.h-data
+++ b/conform/data/libgen.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {char*} basename (char*)
 function {char*} dirname (char*)
 
diff --git a/conform/data/limits.h-data b/conform/data/limits.h-data
index 2e720a9..27ae77a 100644
--- a/conform/data/limits.h-data
+++ b/conform/data/limits.h-data
@@ -1,3 +1,31 @@
+constant CHAR_BIT >= 8
+constant SCHAR_MIN <= -127
+constant SCHAR_MAX >= 127
+constant UCHAR_MAX >= 255
+#ifdef __CHAR_UNSIGNED__
+constant CHAR_MIN 0
+constant CHAR_MAX UCHAR_MAX
+#else
+constant CHAR_MIN SCHAR_MIN
+constant CHAR_MAX 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
+#if defined ISO99 || defined ISO11 || defined XOPEN2K8 || defined POSIX2008
+constant LLONG_MIN <= -9223372036854775807ll
+constant LLONG_MAX >= 9223372036854775807ll
+constant ULLONG_MAX >= 18446744073709551615ull
+#endif
+
+#if !defined ISO && !defined ISO99 && !defined ISO11
 // if these values exist, we should check the minimal value
 allow AIO_LIST_MAX
 allow AIO_MAX
@@ -111,25 +139,11 @@ optional-constant _POSIX2_LINE_MAX 2048
 optional-constant _POSIX2_RE_DUP_MAX 255
 optional-constant _XOPEN_IOV_MAX 16
 
-constant CHAR_BIT >= 8
-constant CHAR_MAX
-constant INT_MAX >= 2147483647
+#if !defined POSIX && !defined POSIX2008
+constant WORD_BIT >= 16
 constant LONG_BIT >= 32
-constant MB_LEN_MAX >= 1
-constant LONG_MAX >= 2147483647
-constant SCHAR_MAX >= 127
-constant SHRT_MAX >= 32767
+#endif
 constant SSIZE_MAX
-constant UCHAR_MAX >= 255
-constant UINT_MAX >= 4294967295
-constant ULONG_MAX >= 4294967295
-constant USHRT_MAX >= 65535
-constant WORD_BIT >= 16
-constant CHAR_MIN
-constant INT_MIN <= 2147483647
-constant LONG_MIN <= 2147483647
-constant SCHAR_MIN <= -127
-constant SHRT_MIN <= -32767
 
 optional-constant CHARCLASS_NAME_MAX >= 14
 optional-constant NL_ARGMAX >= 9
@@ -149,3 +163,4 @@ optional-constant TMP_MAX >= 10000
 
 allow *_MAX
 allow *_MIN
+#endif
diff --git a/conform/data/locale.h-data b/conform/data/locale.h-data
index f6e6c22..8897ee0 100644
--- a/conform/data/locale.h-data
+++ b/conform/data/locale.h-data
@@ -17,7 +17,7 @@ element {struct lconv} char p_cs_precedes
 element {struct lconv} char p_sep_by_space
 element {struct lconv} char p_sign_posn
 element {struct lconv} {char*} thousands_sep
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 element {struct lconv} char int_n_cs_precedes
 element {struct lconv} char int_n_sep_by_space
 element {struct lconv} char int_n_sign_posn
diff --git a/conform/data/math.h-data b/conform/data/math.h-data
index f55e632..5f1f11d 100644
--- a/conform/data/math.h-data
+++ b/conform/data/math.h-data
@@ -1,3 +1,5 @@
+constant HUGE_VAL
+
 #if !defined ISO && !defined POSIX
 macro fpclassify
 macro isfinite
@@ -12,7 +14,7 @@ macro islessequal
 macro islessgreater
 macro isunordered
 
-# ifndef POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 constant M_E
 constant M_LOG2E
 constant M_LOG10E
@@ -29,7 +31,6 @@ constant M_SQRT1_2
 
 constant MAXFLOAT
 # endif
-constant HUGE_VAL
 constant HUGE_VALF
 constant HUGE_VALL
 constant INFINITY
@@ -48,22 +49,28 @@ optional-macro FP_FAST_FMAL
 constant FP_ILOGB0
 constant FP_ILOGBNAN
 
+# if !defined XPG3 && !defined XPG4 && !defined UNIX98
 macro MATH_ERRNO == 1
 macro MATH_ERREXCEPT == 2
-#endif
 
 macro math_errhandling
+# endif
+#endif
 
 function double acos (double)
 function double asin (double)
 function double atan (double)
 function double atan2 (double, double)
 function double ceil (double)
+#if !defined ISO && !defined POSIX
 function double copysign (double, double)
+#endif
 function double cos (double)
 function double cosh (double)
 function double exp (double)
+#if !defined ISO && !defined POSIX
 function double exp2 (double)
+#endif
 function double fabs (double)
 function double floor (double)
 function double fmod (double, double)
@@ -71,7 +78,9 @@ function double frexp (double, int*)
 function double ldexp (double, int)
 function double log (double)
 function double log10 (double)
+#if !defined ISO && !defined POSIX
 function double log2 (double)
+#endif
 function double modf (double, double*)
 function double pow (double, double)
 function double sin (double)
@@ -79,24 +88,27 @@ function double sinh (double)
 function double sqrt (double)
 function double tan (double)
 function double tanh (double)
+#if !defined ISO && !defined POSIX
 function double erf (double)
 function double erfc (double)
+#endif
 #if defined XPG3 || defined XPG4 || defined UNIX98
 function double gamma (double)
 #endif
+#if !defined ISO && !defined POSIX
 function double hypot (double, double)
-#if !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function double j0 (double)
 function double j1 (double)
 function double jn (int, double)
-#endif
+# endif
 function double lgamma (double)
 function double tgamma (double)
-#if !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function double y0 (double)
 function double y1 (double)
 function double yn (int, double)
-#endif
+# endif
 function double acosh (double)
 function double asinh (double)
 function double atanh (double)
@@ -117,9 +129,9 @@ function {long long} llrint (double)
 function long lround (double)
 function {long long} llround (double)
 function double remquo (double, double, int*)
-#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
+# if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
 function double scalb (double, double)
-#endif
+# endif
 function double scalbn (double, int)
 function double scalbln (double, long)
 function double fdim (double, double)
@@ -128,9 +140,10 @@ function double fmin (double, double)
 function double fma (double, double, double)
 function double nan (const char*)
 
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 // variable signgam
 allow signgam
+# endif
 #endif
 
 #if !defined ISO && !defined POSIX
@@ -165,14 +178,14 @@ function float erfcf (float)
 function float gammaf (float)
 #endif
 function float hypotf (float, float)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function float j0f (float)
 function float j1f (float)
 function float jnf (int, float)
 #endif
 function float lgammaf (float)
 function float tgammaf (float)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function float y0f (float)
 function float y1f (float)
 function float ynf (int, float)
@@ -239,14 +252,14 @@ function {long double} erfcl (long double)
 function {long double} gammal (long double)
 #endif
 function {long double} hypotl (long double, long double)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {long double} j0l (long double)
 function {long double} j1l (long double)
 function {long double} jnl (int, long double)
 #endif
 function {long double} lgammal (long double)
 function {long double} tgammal (long double)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {long double} y0l (long double)
 function {long double} y1l (long double)
 function {long double} ynl (int, long double)
diff --git a/conform/data/monetary.h-data b/conform/data/monetary.h-data
index 7935f2a..4f0cb9b 100644
--- a/conform/data/monetary.h-data
+++ b/conform/data/monetary.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type size_t
 type ssize_t
 # if defined XOPEN2K8 || defined POSIX2008
diff --git a/conform/data/mqueue.h-data b/conform/data/mqueue.h-data
index 16335a5..d6313b3 100644
--- a/conform/data/mqueue.h-data
+++ b/conform/data/mqueue.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 // should test for not an array type.
 type mqd_t
 
diff --git a/conform/data/ndbm.h-data b/conform/data/ndbm.h-data
index af091de..5d1fc6a 100644
--- a/conform/data/ndbm.h-data
+++ b/conform/data/ndbm.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type datum
 element datum {void*} dptr
 element datum size_t dsize
diff --git a/conform/data/net/if.h-data b/conform/data/net/if.h-data
index d019978..2c3eb4d 100644
--- a/conform/data/net/if.h-data
+++ b/conform/data/net/if.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct if_nameindex}
 
 element {struct if_nameindex} {unsigned int} if_index
diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data
index 95afed8..a73004c 100644
--- a/conform/data/netdb.h-data
+++ b/conform/data/netdb.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 optional-type in_port_t
 optional-type in_addr_t
 
diff --git a/conform/data/netinet/in.h-data b/conform/data/netinet/in.h-data
index 391e1a5..020a97e 100644
--- a/conform/data/netinet/in.h-data
+++ b/conform/data/netinet/in.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type in_port_t
 type in_addr_t
 
diff --git a/conform/data/nl_types.h-data b/conform/data/nl_types.h-data
index ec2c18b..67a0d7a 100644
--- a/conform/data/nl_types.h-data
+++ b/conform/data/nl_types.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type nl_catd
 type nl_item
 
diff --git a/conform/data/poll.h-data b/conform/data/poll.h-data
index 69fd724..395e4b5 100644
--- a/conform/data/poll.h-data
+++ b/conform/data/poll.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct pollfd}
 element {struct pollfd} int fd
 element {struct pollfd} {short int} events
diff --git a/conform/data/pthread.h-data b/conform/data/pthread.h-data
index 70486cc..bf25902 100644
--- a/conform/data/pthread.h-data
+++ b/conform/data/pthread.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant PTHREAD_CANCEL_ASYNCHRONOUS
 constant PTHREAD_CANCEL_ENABLE
 constant PTHREAD_CANCEL_DEFERRED
@@ -31,19 +31,27 @@ constant PTHREAD_MUTEX_STALLED
 # endif
 
 type pthread_attr_t
+# if !defined POSIX
 type pthread_barrier_t
 type pthread_barrierattr_t
+# endif
 type pthread_cond_t
 type pthread_condattr_t
 type pthread_key_t
 type pthread_mutex_t
 type pthread_mutexattr_t
 type pthread_once_t
+# if !defined POSIX
 type pthread_rwlock_t
 type pthread_rwlockattr_t
 type pthread_spinlock_t
+# endif
 type pthread_t
 
+#ifdef POSIX
+# define sigset_t __sigset_t
+#endif
+
 function int pthread_attr_destroy (pthread_attr_t*)
 function int pthread_attr_getdetachstate (const pthread_attr_t*, int*)
 # ifndef POSIX
@@ -66,6 +74,7 @@ function int pthread_attr_setschedpolicy (pthread_attr_t*, int)
 function int pthread_attr_setscope (pthread_attr_t*, int)
 function int pthread_attr_setstackaddr (pthread_attr_t*, void*)
 function int pthread_attr_setstacksize (pthread_attr_t*, size_t)
+# if !defined POSIX
 function int pthread_barrier_destroy (pthread_barrier_t*)
 function int pthread_barrier_init (pthread_barrier_t*, const pthread_barrierattr_t*, unsigned int)
 function int pthread_barrier_wait (pthread_barrier_t*)
@@ -73,6 +82,7 @@ function int pthread_barrierattr_destroy (pthread_barrierattr_t*)
 function int pthread_barrierattr_getpshared (const pthread_barrierattr_t*, int*)
 function int pthread_barrierattr_init (pthread_barrierattr_t*)
 function int pthread_barrierattr_setpshared (pthread_barrierattr_t*, int)
+# endif
 function int pthread_cancel (pthread_t)
 // function int pthread_cleanup_push (void (*) (void*), void*)
 macro pthread_cleanup_push
@@ -97,7 +107,9 @@ function void pthread_exit (void*)
 # if !defined POSIX && !defined POSIX2008
 function int pthread_getconcurrency (void)
 # endif
+# if !defined POSIX
 function int pthread_getcpuclockid (pthread_t, clockid_t*)
+# endif
 function int pthread_getschedparam (pthread_t, int*, struct sched_param*)
 function {void*} pthread_getspecific (pthread_key_t)
 function int pthread_join (pthread_t, void**)
@@ -108,21 +120,27 @@ optional-function int pthread_mutex_getprioceiling (const pthread_mutex_t*, int*
 function int pthread_mutex_init (pthread_mutex_t*, const pthread_mutexattr_t*)
 function int pthread_mutex_lock (pthread_mutex_t*)
 optional-function int pthread_mutex_setprioceiling (pthread_mutex_t*, int, int*)
+# if !defined POSIX
 function int pthread_mutex_timedlock (pthread_mutex_t*, const struct timespec*)
+# endif
 function int pthread_mutex_trylock (pthread_mutex_t*)
 function int pthread_mutex_unlock (pthread_mutex_t*)
 function int pthread_mutexattr_destroy (pthread_mutexattr_t*)
 optional-function int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t*, int*)
 optional-function int pthread_mutexattr_getprotocol (const pthread_mutexattr_t*, int*)
 function int pthread_mutexattr_getpshared (const pthread_mutexattr_t*, int*)
+# if !defined POSIX
 function int pthread_mutexattr_gettype (const pthread_mutexattr_t*, int*)
+# endif
 function int pthread_mutexattr_init (pthread_mutexattr_t*)
 optional-function int pthread_mutexattr_setprioceiling (pthread_mutexattr_t*, int)
 optional-function int pthread_mutexattr_setprotocol (pthread_mutexattr_t*, int)
 function int pthread_mutexattr_setpshared (pthread_mutexattr_t*, int)
+# if !defined POSIX
 function int pthread_mutexattr_settype (pthread_mutexattr_t*, int)
+# endif
 function int pthread_once (pthread_once_t*, void (*) (void))
-# ifndef POSIX
+# if !defined POSIX
 function int pthread_rwlock_init (pthread_rwlock_t*, const pthread_rwlockattr_t*)
 function int pthread_rwlock_rdlock (pthread_rwlock_t*)
 function int pthread_rwlock_timedrdlock (pthread_rwlock_t*, const struct timespec*)
@@ -144,14 +162,16 @@ function int pthread_setconcurrency (int)
 # endif
 function int pthread_setschedparam (pthread_t, int, const struct sched_param*)
 function int pthread_setspecific (pthread_key_t, const void*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
 function int pthread_sigmask (int, const sigset_t*, sigset_t*)
-#endif
+# endif
+# if !defined POSIX
 function int pthread_spin_destroy (pthread_spinlock_t*)
 function int pthread_spin_init (pthread_spinlock_t*, int)
 function int pthread_spin_lock (pthread_spinlock_t*)
 function int pthread_spin_trylock (pthread_spinlock_t*)
 function int pthread_spin_unlock (pthread_spinlock_t*)
+# endif
 function void pthread_testcancel (void)
 # if defined XOPEN2K8 || defined POSIX2008
 function int pthread_mutex_consistent (pthread_mutex_t *)
diff --git a/conform/data/pwd.h-data b/conform/data/pwd.h-data
index a8edf27..f779a69 100644
--- a/conform/data/pwd.h-data
+++ b/conform/data/pwd.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct passwd}
 element {struct passwd} {char*} pw_name
 element {struct passwd} uid_t pw_uid
@@ -18,7 +18,7 @@ function {struct passwd*} getpwnam (const char*)
 function {struct passwd*} getpwuid (uid_t)
 function int getpwnam_r (const char*, struct passwd*, char*, size_t, struct passwd**)
 function int getpwuid_r (uid_t, struct passwd*, char*, size_t, struct passwd**)
-# ifndef POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function void endpwent (void)
 function {struct passwd*} getpwent (void)
 function void setpwent (void)
diff --git a/conform/data/regex.h-data b/conform/data/regex.h-data
index 73e06a8..2822f0b 100644
--- a/conform/data/regex.h-data
+++ b/conform/data/regex.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type regex_t
 element regex_t size_t re_nsub
 
@@ -28,7 +28,7 @@ constant REG_EBRACE
 constant REG_BADBR
 constant REG_ESPACE
 constant REG_BADRPT
-# if !defined XOPEN2K8 && !defined POSIX2008
+# if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
 constant REG_ENOSYS
 # endif
 
diff --git a/conform/data/sched.h-data b/conform/data/sched.h-data
index 5851450..78eb2e4 100644
--- a/conform/data/sched.h-data
+++ b/conform/data/sched.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct sched_param}
 element {struct sched_param} int sched_priority
 optional-element {struct sched_param} int sched_ss_low_priority
diff --git a/conform/data/search.h-data b/conform/data/search.h-data
index dadb1ff..3abbc66 100644
--- a/conform/data/search.h-data
+++ b/conform/data/search.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type ENTRY
 type {struct entry}
 element {struct entry} {char*} key
diff --git a/conform/data/semaphore.h-data b/conform/data/semaphore.h-data
index 5484884..9bb3d44 100644
--- a/conform/data/semaphore.h-data
+++ b/conform/data/semaphore.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type sem_t
 
 constant SEM_FAILED
@@ -9,7 +9,9 @@ function int sem_getvalue (sem_t*, int*)
 function int sem_init (sem_t*, int, unsigned int)
 function {sem_t*} sem_open (const char*, int, ...)
 function int sem_post (sem_t*)
+# if !defined POSIX
 function int sem_timedwait (sem_t*, const struct timespec*)
+# endif
 function int sem_trywait (sem_t*)
 function int sem_unlink (const char*)
 function int sem_wait (sem_t*)
diff --git a/conform/data/setjmp.h-data b/conform/data/setjmp.h-data
index a89a33f..310105b 100644
--- a/conform/data/setjmp.h-data
+++ b/conform/data/setjmp.h-data
@@ -1,10 +1,10 @@
 type jmp_buf
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type sigjmp_buf
 #endif
 
 function void longjmp (jmp_buf, int)
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function void siglongjmp (sigjmp_buf, int)
 # if !defined POSIX && !defined POSIX2008
 function void _longjmp (jmp_buf, int)
@@ -12,7 +12,7 @@ function void _longjmp (jmp_buf, int)
 #endif
 
 macro-function int setjmp (jmp_buf)
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 macro-function int sigsetjmp (sigjmp_buf, int)
 # if !defined POSIX && !defined POSIX2008
 macro-function int _setjmp (jmp_buf)
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
index 6dbf1fb..927211b 100644
--- a/conform/data/signal.h-data
+++ b/conform/data/signal.h-data
@@ -1,13 +1,15 @@
 typed-constant SIG_DFL {void(*)(int)}
 typed-constant SIG_ERR {void(*)(int)}
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 typed-constant SIG_HOLD {void(*)(int)}
 #endif
 typed-constant SIG_IGN {void(*)(int)}
 
 type sig_atomic_t
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type sigset_t
 type pid_t
+#endif
 #if defined XOPEN2K8 || defined POSIX2008
 type size_t
 type pthread_t
@@ -26,6 +28,7 @@ element {struct timespec} __time_t tv_sec
 element {struct timespec} long tv_nsec
 #endif
 
+#if defined UNIX98 || defined XOPEN2K8 || defined POSIX2008
 element {union sigval} int sival_int
 element {union sigval} {void*} sival_ptr
 
@@ -46,19 +49,25 @@ type {union sigval}
 
 macro SIGRTMIN
 macro SIGRTMAX
+#endif
 
 constant SIGABRT
-constant SIGALRM
 constant SIGFPE
-constant SIGHUP
 constant SIGILL
 constant SIGINT
+constant SIGSEGV
+constant SIGTERM
+
+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 SIGSEGV
-constant SIGTERM
 constant SIGUSR1
 constant SIGUSR2
 constant SIGCHLD
@@ -71,9 +80,9 @@ constant SIGBUS
 constant SIGPOLL
 constant SIGPROF
 constant SIGSYS
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 constant SIGTRAP
-#endif
+# endif
 constant SIGURG
 constant SIGVTALRM
 constant SIGXCPU
@@ -90,21 +99,24 @@ constant SA_NOCLDSTOP
 constant SIG_BLOCK
 constant SIG_UNBLOCK
 constant SIG_SETMASK
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 constant SA_ONSTACK
-#endif
+# endif
+# if !defined POSIX
 constant SA_RESETHAND
 constant SA_RESTART
 constant SA_SIGINFO
 constant SA_NOCLDWAIT
 constant SA_NODEFER
-#if !defined POSIX && !defined POSIX2008
+# endif
+# if !defined POSIX && !defined POSIX2008
 constant SS_ONSTACK
 constant SS_DISABLE
 constant MINSIGSTKSZ
 constant SIGSTKSZ
-#endif
+# endif
 
+# if !defined POSIX
 type ucontext_t
 
 element ucontext_t {ucontext_t*} uc_link
@@ -122,13 +134,14 @@ type {struct sigstack}
 
 element {struct sigstack} int ss_onstack
 element {struct sigstack} {void*} ss_sp
+# endif
 
 type siginfo_t
 
 element siginfo_t int si_signo
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 element siginfo_t int si_errno
-#endif
+# endif
 element siginfo_t int si_code
 element siginfo_t pid_t si_pid
 element siginfo_t uid_t si_uid
@@ -178,50 +191,50 @@ constant SI_TIMER
 constant SI_ASYNCIO
 constant SI_MESGQ
 
-#if !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
+# if !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
 function void (*bsd_signal (int, void(*)(int)))(int)
-#endif
+# endif
 function int kill (pid_t, int)
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function int killpg (pid_t, int)
-#endif
+# endif
 function int pthread_kill (pthread_t, int)
 function int pthread_sigmask (int, const sigset_t*, sigset_t*)
-function int raise (int)
 function int sigaction (int, const struct sigaction*, struct sigaction*)
 function int sigaddset (sigset_t*, int)
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function int sigaltstack (const stack_t*, stack_t*)
-#endif
+# endif
 function int sigdelset (sigset_t*, int)
 function int sigemptyset (sigset_t*)
 function int sigfillset (sigset_t*)
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function int sighold (int)
 function int sigignore (int)
 function int siginterrupt (int, int)
-#endif
+# endif
 function int sigismember (const sigset_t*, int)
-function void (*signal (int, void(*)(int)))(int)
 #if !defined POSIX && !defined POSIX2008
 function int sigpause (int)
-#endif
+# endif
 function int sigpending (sigset_t*)
 function int sigprocmask (int, const sigset_t*, sigset_t*)
 function int sigqueue (pid_t, int, const union sigval)
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function int sigrelse (int)
 function void (*sigset (int, void(*)(int)))(int)
-#endif
+# endif
+# if !defined POSIX
 function int sigstack (struct sigstack*, struct sigstack*)
+# endif
 function int sigsuspend (const sigset_t*)
 function int sigtimedwait (const sigset_t*, siginfo_t*, const struct timespec*)
 function int sigwait (const sigset_t*, int*)
 function int sigwaitinfo (const sigset_t*, siginfo_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function void psiginfo (const siginfo_t*, const char*)
 function void psignal (int, const char*)
-#endif
+# endif
 
 // The following expressions are not entirely correct but the current
 // poorfnmatch implementation doesn't grok the right form.
@@ -248,3 +261,7 @@ allow TRAP_*
 allow *_t
 
 allow-header time.h
+#endif
+
+allow SIG[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
+allow SIG_*
diff --git a/conform/data/spawn.h-data b/conform/data/spawn.h-data
index 81f32d0..889b5bc 100644
--- a/conform/data/spawn.h-data
+++ b/conform/data/spawn.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type posix_spawnattr_t
 type posix_spawn_file_actions_t
 # if defined XOPEN2K8 || defined POSIX2008
diff --git a/conform/data/stdarg.h-data b/conform/data/stdarg.h-data
index ee228d0..a9b5d65 100644
--- a/conform/data/stdarg.h-data
+++ b/conform/data/stdarg.h-data
@@ -4,6 +4,9 @@ type va_list
 macro va_start
 macro va_arg
 macro va_end
+
+#if defined ISO99 || defined ISO11 || defined POSIX2008 || defined XOPEN2K8
 macro va_copy
+#endif
 
 allow *_t
diff --git a/conform/data/stdio.h-data b/conform/data/stdio.h-data
index cba7721..ac2dfc4 100644
--- a/conform/data/stdio.h-data
+++ b/conform/data/stdio.h-data
@@ -6,9 +6,11 @@ constant _IOFBF
 constant _IOLBF
 constant _IONBF
 
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant L_ctermid
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
 constant L_cuserid
+# endif
 #endif
 constant L_tmpnam
 
@@ -22,7 +24,7 @@ constant EOF
 
 constant NULL
 
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant P_tmpdir
 #endif
 
@@ -32,7 +34,11 @@ macro stderr
 
 type FILE
 type fpos_t
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type va_list
+#else
+#define va_list _G_va_list
+#endif
 type size_t
 #if defined XOPEN2K8 || defined POSIX2008
 type off_t
@@ -40,23 +46,31 @@ type ssize_t
 #endif
 
 function void clearerr (FILE*)
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function {char*} ctermid (char*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+# if defined XPG3 || defined XPG4 || defined UNIX98
 function {char*} cuserid (char*)
+# endif
 #endif
 #if defined XOPEN2K8 || defined POSIX2008
 function int dprintf (int, const char*, ...)
 #endif
 function int fclose (FILE*)
+#if defined XOPEN2K8 || defined POSIX2008
 function {FILE*} fdopen (int, const char*)
+#endif
 function int feof (FILE*)
 function int ferror (FILE*)
 function int fflush (FILE*)
 function int fgetc (FILE*)
 function int fgetpos (FILE*, fpos_t*)
 function {char*} fgets (char*, int, FILE*)
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function int fileno (FILE*)
+#endif
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function void flockfile (FILE*)
+#endif
 #if defined XOPEN2K8 || defined POSIX2008
 function {FILE*} fmemopen (void*, size_t, const char*)
 #endif
@@ -68,41 +82,57 @@ function size_t fread (void*, size_t, size_t, FILE*)
 function {FILE*} freopen (const char*, const char*, FILE*)
 function int fscanf (FILE*, const char*, ...)
 function int fseek (FILE*, long int, int)
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int fseeko (FILE*, off_t, int)
+#endif
 function int fsetpos (FILE*, const fpos_t*)
 function {long int} ftell (FILE*)
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function off_t ftello (FILE*)
+#endif
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int ftrylockfile (FILE*)
 function void funlockfile (FILE*)
+#endif
 function size_t fwrite (const void*, size_t, size_t, FILE*)
 function int getc (FILE*)
 function int getchar (void)
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int getc_unlocked (FILE*)
 function int getchar_unlocked ()
+#endif
 #if defined XOPEN2K8 || defined POSIX2008
 function ssize_t getdelim (char**, size_t*, int, FILE*)
 function ssize_t getline (char**, size_t*, FILE*)
 #endif
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98
 function int getopt (int, char *const[], const char *)
 #endif
+#if !defined ISO11
 function {char*} gets (char*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+#endif
+#if defined XPG3 || defined XPG4 || defined UNIX98
 function int getw (FILE*)
 #endif
 #if defined XOPEN2K8 || defined POSIX2008
 function {FILE*} open_memstream (char**, size_t*)
 #endif
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function int pclose (FILE*)
+#endif
 function void perror (const char*)
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function {FILE*} popen (const char*, const char*)
+#endif
 function int printf (const char*, ...)
 function int putc (int, FILE*)
 function int putchar (int)
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int putc_unlocked (int, FILE*)
 function int putchar_unlocked (int)
+#endif
 function int puts (const char*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98
 function int putw (int, FILE*)
 #endif
 function int remove (const char*)
@@ -114,10 +144,12 @@ function void rewind (FILE*)
 function int scanf (const char*, ...)
 function void setbuf (FILE*, char*)
 function int setvbuf (FILE*, char*, int, size_t)
+#if !defined ISO && !defined POSIX
 function int snprintf (char*, size_t, const char*, ...)
+#endif
 function int sprintf (char *, const char *, ...)
 function int sscanf (const char*, const char*, ...)
-#if !defined POSIX && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K || defined XOPEN2K8
 function {char*} tempnam (const char*, const char*)
 #endif
 function {FILE*} tmpfile (void)
@@ -127,20 +159,22 @@ function int ungetc (int, FILE*)
 function int vdprintf (int, const char*, va_list)
 #endif
 function int vfprintf (FILE*, const char*, va_list)
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function int vfscanf (FILE*, const char*, va_list)
 #endif
 function int vprintf (const char*, va_list)
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function int vscanf (const char*, va_list)
 #endif
+#ifndef ISO
 function int vsnprintf (char*, size_t, const char*, va_list)
+#endif
 function int vsprintf (char*, const char*, va_list)
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function int vsscanf (const char*, const char*, va_list)
 #endif
 
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 #if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
 variable {char*} optarg
 variable int opterr
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index 760b5b3..e6abfed 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -1,15 +1,17 @@
-macro EXIT_FAILURE
-constant EXIT_SUCCESS 0
-macro NULL
-constant RAND_MAX >= 32767
-macro MB_CUR_MAX
-
 type div_t
 element div_t int quot
 element div_t int rem
 type ldiv_t
 element ldiv_t long quot
 element ldiv_t long rem
+
+macro EXIT_FAILURE
+macro EXIT_SUCCESS 0
+
+macro NULL
+constant RAND_MAX >= 32767
+macro MB_CUR_MAX
+
 #if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 type lldiv_t
 element lldiv_t {long long} quot
@@ -18,6 +20,7 @@ element lldiv_t {long long} rem
 type size_t
 type wchar_t
 
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 constant WNOHANG
 constant WUNTRACED
 
@@ -27,58 +30,69 @@ macro WIFSIGNALED
 macro WIFSTOPPED
 macro WSTOPSIG
 macro WTERMSIG
+#endif
 
+#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98 && !defined POSIX
 function void _Exit (int)
-#if !defined POSIX && !defined POSIX2008
+#endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function long a64l (const char*)
 #endif
 function void abort (void)
 function int abs (int)
+#if defined ISO11
+function {void *} aligned_alloc (size_t, size_t)
+#endif
 function int atexit (void(*)(void))
+#if defined ISO11
+function int at_quick_exit (void (*) (void))
+#endif
 function double atof (const char*)
 function int atoi (const char*)
 function {long int} atol (const char*)
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function {long long} atoll (const char*)
 #endif
 function {void*} bsearch (const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
 function {void*} calloc (size_t, size_t)
 function div_t div (int, int)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function double drand48 (void)
 #endif
-#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
 function {char*} ecvt (double, int, int*, int*)
 #endif
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function double erand48 (unsigned short int[3])
 #endif
 function void exit (int)
-#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
 function {char*} fcvt (double, int, int*, int*)
 #endif
 function void free (void*)
-#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
 function {char*} gcvt (double, int, char*)
 #endif
 function {char*} getenv (const char*)
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 function int getsubopt (char**, char *const*, char**)
-#if !defined POSIX && !defined POSIX2008
+#endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function int grantpt (int)
 function {char*} initstate (unsigned int, char*, size_t)
 function {long int} jrand48 (unsigned short int[3])
 function {char*} l64a (long)
 #endif
 function {long int} labs (long int)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function void lcong48 (unsigned short int[7])
 #endif
 function ldiv_t ldiv (long int, long int)
-#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
 function {long long} llabs (long long)
 function lldiv_t lldiv (long long, long long)
 #endif
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {long int} lrand48 (void)
 #endif
 function {void*} malloc (size_t)
@@ -88,40 +102,51 @@ function int mbtowc (wchar_t*, const char*, size_t)
 #if defined XOPEN2K8 || defined POSIX2008
 function {char*} mkdtemp (char*)
 #endif
-#if !defined XOPEN2K8 && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
 function {char*} mktemp (char*)
 #endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 function int mkstemp (char*)
-#if !defined POSIX && !defined POSIX2008
+#endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {long int} mrand48 (void)
 function {long int} nrand48 (unsigned short int[3])
 #endif
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int posix_memalign (void**, size_t, size_t)
+#endif
 #if defined XOPEN2K || defined XOPEN2K8
 function int posix_openpt (int)
 #endif
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {char*} ptsname (int)
 function int putenv (char*)
 #endif
 function void qsort (void*, size_t, size_t, int(*)(const void*, const void*))
+#if defined ISO11
+function void quick_exit (int)
+#endif
 function int rand (void)
+#if defined POSIX || defined UNIX98 || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int rand_r (unsigned int*)
-#if !defined POSIX && !defined POSIX2008
+#endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function long random (void)
 #endif
 function {void*} realloc (void*, size_t)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {char*} realpath (const char*, char*)
 function {unsigned short int*} seed48 (unsigned short int[3])
 #endif
+#if !defined ISO && !defined ISO99 && !defined ISO11
 function int setenv (const char*, const char*, int)
-#if !defined POSIX && !defined POSIX2008
+#endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function void setkey (const char*)
 function {char*} setstate (char*)
 #endif
 function void srand (unsigned int)
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function void srand48 (long int)
 function void srandom (unsigned)
 #endif
@@ -129,14 +154,16 @@ function double strtod (const char*, char**)
 function {long int} strtol (const char*, char**, int)
 function {unsigned long int} strtoul (const char*, char**, int)
 function int system (const char*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+#if defined XPG3 || defined XPG4 || defined UNIX98
 function int ttyslot (void)
 #endif
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function int unlockpt (int)
 #endif
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 function int unsetenv (const char*)
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
+#endif
+#if defined XPG3 || defined XPG4 || defined UNIX98
 function {void*} valloc (size_t)
 #endif
 function size_t wcstombs (char*, const wchar_t*, size_t)
diff --git a/conform/data/string.h-data b/conform/data/string.h-data
index 1c4ae08..0403c2e 100644
--- a/conform/data/string.h-data
+++ b/conform/data/string.h-data
@@ -5,7 +5,7 @@ type size_t
 type locale_t
 #endif
 
-#if !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 & !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {void*} memccpy (void*, const void*, int, size_t)
 #endif
 function {void*} memchr (const void*, int, size_t)
@@ -27,7 +27,9 @@ function int strcoll_l (const char*, const char*, locale_t)
 #endif
 function {char*} strcpy (char*, const char*)
 function size_t strcspn (const char*, const char*)
+#if !defined ISO && !defined ISO99 & !defined ISO11 && !defined POSIX && !defined POSIX2008
 function {char*} strdup (const char*)
+#endif
 function {char*} strerror (int)
 #if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function int strerror_r (int, char*, size_t)
@@ -51,7 +53,9 @@ function {char*} strsignal (int)
 function size_t strspn (const char*, const char*)
 function {char*} strstr (const char*, const char*)
 function {char*} strtok (char*, const char*)
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
 function {char*} strtok_r (char*, const char*, char**)
+#endif
 function size_t strxfrm (char*, const char*, size_t)
 #if defined XOPEN2K8 || defined POSIX2008
 function size_t strxfrm_l (char*, const char*, size_t, locale_t)
diff --git a/conform/data/strings.h-data b/conform/data/strings.h-data
index 01cd867..b61ac50 100644
--- a/conform/data/strings.h-data
+++ b/conform/data/strings.h-data
@@ -1,23 +1,25 @@
-#if !defined XOPEN2K8 && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
+# if !defined XOPEN2K8 && !defined POSIX2008
 function int bcmp (const void*, const void*, size_t)
 function void bcopy (const void*, void*, size_t)
 function void bzero (void*, size_t)
 function {char*} index (const char*, int)
 function {char*} rindex (const char*, int)
-#endif
-#if !defined POSIX && !defined POSIX2008
+# endif
+# if !defined POSIX2008
 function int ffs (int)
-#endif
+# endif
 function int strcasecmp (const char*, const char*)
 function int strncasecmp (const char*, const char*, size_t)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function int strcasecmp_l (const char*, const char*, locale_t)
 function int strncasecmp_l (const char*, const char*, size_t, locale_t)
-#endif
+# endif
 
 type size_t
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 type locale_t
-#endif
+# endif
 
 allow *_t
+#endif
diff --git a/conform/data/stropts.h-data b/conform/data/stropts.h-data
index c760282..882f916 100644
--- a/conform/data/stropts.h-data
+++ b/conform/data/stropts.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct bandinfo}
 
 element {struct bandinfo} {unsigned char} bi_pri
@@ -135,3 +136,4 @@ allow S_*
 allow SND*
 allow STR*
 allow *_t
+#endif
diff --git a/conform/data/sys/ipc.h-data b/conform/data/sys/ipc.h-data
index 28918c1..8f06d2b 100644
--- a/conform/data/sys/ipc.h-data
+++ b/conform/data/sys/ipc.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type {struct ipc_perm}
 
 element {struct ipc_perm} uid_t uid
diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data
index c737efb..3392ad1 100644
--- a/conform/data/sys/mman.h-data
+++ b/conform/data/sys/mman.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant PROT_READ
 constant PROT_WRITE
 constant PROT_EXEC
@@ -54,3 +55,4 @@ allow MCL_*
 allow MS_*
 allow PROT_*
 allow *_t
+#endif
diff --git a/conform/data/sys/msg.h-data b/conform/data/sys/msg.h-data
index ae83356..a8290ca 100644
--- a/conform/data/sys/msg.h-data
+++ b/conform/data/sys/msg.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type {struct msqid_ds}
 
 type msgqnum_t
diff --git a/conform/data/sys/resource.h-data b/conform/data/sys/resource.h-data
index 52f83f5..67517ad 100644
--- a/conform/data/sys/resource.h-data
+++ b/conform/data/sys/resource.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant PRIO_PROCESS
 constant PRIO_PGRP
 constant PRIO_USER
diff --git a/conform/data/sys/select.h-data b/conform/data/sys/select.h-data
index ea890d6..84e07e9 100644
--- a/conform/data/sys/select.h-data
+++ b/conform/data/sys/select.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type time_t
 type suseconds_t
 
diff --git a/conform/data/sys/sem.h-data b/conform/data/sys/sem.h-data
index 665b397..61eecf2 100644
--- a/conform/data/sys/sem.h-data
+++ b/conform/data/sys/sem.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant SEM_UNDO
 
 constant GETNCNT
diff --git a/conform/data/sys/shm.h-data b/conform/data/sys/shm.h-data
index 39df894..a006cdb 100644
--- a/conform/data/sys/shm.h-data
+++ b/conform/data/sys/shm.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant SHM_RDONLY
 symbol SHMLBA
 constant SHM_RND
diff --git a/conform/data/sys/socket.h-data b/conform/data/sys/socket.h-data
index 5fdd6cf..60d8b00 100644
--- a/conform/data/sys/socket.h-data
+++ b/conform/data/sys/socket.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type socklen_t
 
 type sa_family_t
diff --git a/conform/data/sys/stat.h-data b/conform/data/sys/stat.h-data
index b0e10a4..547f607 100644
--- a/conform/data/sys/stat.h-data
+++ b/conform/data/sys/stat.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 
 type {struct stat}
 
diff --git a/conform/data/sys/statvfs.h-data b/conform/data/sys/statvfs.h-data
index d7312cd..750f22b 100644
--- a/conform/data/sys/statvfs.h-data
+++ b/conform/data/sys/statvfs.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct statvfs}
 
 element {struct statvfs} {unsigned long} f_bsize
@@ -24,3 +25,4 @@ function int fstatvfs (int, struct statvfs*)
 allow f_*
 allow ST_*
 allow *_t
+#endif
diff --git a/conform/data/sys/time.h-data b/conform/data/sys/time.h-data
index 7e3407a..98e5909 100644
--- a/conform/data/sys/time.h-data
+++ b/conform/data/sys/time.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type {struct timeval}
 
 element {struct timeval} time_t tv_sec
diff --git a/conform/data/sys/timeb.h-data b/conform/data/sys/timeb.h-data
index d012f5d..460da6e 100644
--- a/conform/data/sys/timeb.h-data
+++ b/conform/data/sys/timeb.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct timeb}
 
 element {struct timeb} time_t time
@@ -10,3 +11,4 @@ type time_t
 function int ftime (struct timeb*)
 
 allow *_t
+#endif
diff --git a/conform/data/sys/times.h-data b/conform/data/sys/times.h-data
index 9c3237e..d10444d 100644
--- a/conform/data/sys/times.h-data
+++ b/conform/data/sys/times.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct tms}
 
 element {struct tms} clock_t tms_utime
@@ -11,3 +12,4 @@ function clock_t times (struct tms*)
 
 allow tms_*
 allow *_t
+#endif
diff --git a/conform/data/sys/types.h-data b/conform/data/sys/types.h-data
index 4070be5..2befff5 100644
--- a/conform/data/sys/types.h-data
+++ b/conform/data/sys/types.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type blkcnt_t
 type blksize_t
 type clock_t
diff --git a/conform/data/sys/uio.h-data b/conform/data/sys/uio.h-data
index 03d0a3b..3352695 100644
--- a/conform/data/sys/uio.h-data
+++ b/conform/data/sys/uio.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct iovec}
 
 element {struct iovec} {void*} iov_base
diff --git a/conform/data/sys/un.h-data b/conform/data/sys/un.h-data
index bb976f2..ee157ed 100644
--- a/conform/data/sys/un.h-data
+++ b/conform/data/sys/un.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type {struct sockaddr_un}
 
 element {struct sockaddr_un} sa_family_t sun_family
diff --git a/conform/data/sys/utsname.h-data b/conform/data/sys/utsname.h-data
index 680b666..3564627 100644
--- a/conform/data/sys/utsname.h-data
+++ b/conform/data/sys/utsname.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct utsname}
 
 element {struct utsname} char sysname []
diff --git a/conform/data/sys/wait.h-data b/conform/data/sys/wait.h-data
index 2fd4c8d..56dea06 100644
--- a/conform/data/sys/wait.h-data
+++ b/conform/data/sys/wait.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 constant WNOHANG
 constant WUNTRACED
 
diff --git a/conform/data/syslog.h-data b/conform/data/syslog.h-data
index f0aa65c..26fef76 100644
--- a/conform/data/syslog.h-data
+++ b/conform/data/syslog.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant LOG_PID
 constant LOG_CONS
 constant LOG_NDELAY
diff --git a/conform/data/tar.h-data b/conform/data/tar.h-data
index fcbfb12..aa0cebc 100644
--- a/conform/data/tar.h-data
+++ b/conform/data/tar.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 macro-str TMAGIC "ustar"
 constant TMAGLEN 6
 macro-str TVERSION "00"
diff --git a/conform/data/termios.h-data b/conform/data/termios.h-data
index d32bd6b..3f7ab4b 100644
--- a/conform/data/termios.h-data
+++ b/conform/data/termios.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type cc_t
 type speed_t
 type tcflag_t
@@ -39,7 +39,7 @@ constant INPCK
 constant ISTRIP
 # if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
 constant IUCLC
-# <endif
+# endif
 constant IXANY
 constant IXOFF
 constant IXON
@@ -118,7 +118,7 @@ constant IEXTEN
 constant ISIG
 constant NOFLSH
 constant TOSTOP
-# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
+# if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
 constant XCASE
 # endif
 
@@ -142,7 +142,9 @@ function int tcdrain (int)
 function int tcflow (int, int)
 function int tcflush (int, int)
 function int tcgetattr (int, struct termios*)
+#ifndef POSIX
 function pid_t tcgetsid (int)
+#endif
 function int tcsendbreak (int, int)
 function int tcsetattr (int, int, const struct termios*)
 
diff --git a/conform/data/time.h-data b/conform/data/time.h-data
index e2ff298..1e089d0 100644
--- a/conform/data/time.h-data
+++ b/conform/data/time.h-data
@@ -1,3 +1,21 @@
+constant NULL
+constant CLOCKS_PER_SEC
+
+#ifdef ISO11
+macro TIME_UTC
+#endif
+
+#if !defined ISO && !defined ISO99
+type {struct timespec}
+
+element {struct timespec} time_t tv_sec
+element {struct timespec} long tv_nsec
+#endif
+
+type size_t
+type clock_t
+type time_t
+
 type {struct tm}
 
 element {struct tm} int tm_sec
@@ -10,19 +28,26 @@ element {struct tm} int tm_wday
 element {struct tm} int tm_yday
 element {struct tm} int tm_isdst
 
-constant NULL
-#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
-constant CLK_TCK
+function clock_t clock (void)
+function double difftime (time_t, time_t)
+function time_t mktime (struct tm*)
+function time_t time (time_t*)
+function {char*} asctime (const struct tm*)
+function {char*} ctime (const time_t*)
+function {struct tm*} gmtime (const time_t*)
+function {struct tm*} localtime (const time_t*)
+function size_t strftime (char*, size_t, const char*, const struct tm*)
+#if defined ISO11
+function int timespec_get (struct timespec *, int)
 #endif
-constant CLOCKS_PER_SEC
+
+#if !defined ISO && !defined ISO99 && !defined ISO11
+# if !defined XOPEN21K && !defined XOPEN2K8 && !defined POSIX2008
+constant CLK_TCK
+# endif
 constant CLOCK_PROCESS_CPUTIME_ID
 constant CLOCK_THREAD_CPUTIME_ID
 
-type {struct timespec}
-
-element {struct timespec} time_t tv_sec
-element {struct timespec} long tv_nsec
-
 type {struct itimerspec}
 
 element {struct itimerspec} {struct timespec} it_interval
@@ -32,50 +57,38 @@ constant CLOCK_REALTIME
 constant TIMER_ABSTIME
 constant CLOCK_MONOTONIC
 
-type clock_t
 type clockid_t
-type size_t
-type time_t
 type timer_t
 
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 type pid_t
 type locale_t
 tag {struct sigevent}
-#endif
+# endif
 
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 variable int getdate_err
-#endif
+# endif
 
-function {char*} asctime (const struct tm*)
 function {char*} asctime_r (const struct tm*, char*)
-function clock_t clock (void)
 function int clock_getcpuclockid (pid_t, clockid_t*)
 function int clock_getres (clockid_t, struct timespec*)
 function int clock_gettime (clockid_t, struct timespec*)
 function int clock_nanosleep (clockid_t, int, const struct timespec*, struct timespec*)
 function int clock_settime (clockid_t, const struct timespec*)
-function {char*} ctime (const time_t*)
 function {char*} ctime_r (const time_t*, char*)
-function double difftime (time_t, time_t)
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 function {struct tm*} getdate (const char*)
-#endif
-function {struct tm*} gmtime (const time_t*)
+# endif
 function {struct tm*} gmtime_r (const time_t*, struct tm*)
-function {struct tm*} localtime (const time_t*)
 function {struct tm*} localtime_r (const time_t*, struct tm*)
-function time_t mktime (struct tm*)
 function int nanosleep (const struct timespec*, struct timespec*)
-function size_t strftime (char*, size_t, const char*, const struct tm*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function size_t strftime_l (char*, size_t, const char*, const struct tm*, locale_t)
-#endif
-#if !defined POSIX && !defined POSIX2008
+# endif
+# if !defined POSIX && !defined POSIX2008
 function {char*} strptime (const char*, const char*, struct tm*)
-#endif
-function time_t time (time_t*)
+# endif
 function int timer_create (clockid_t, struct sigevent*, timer_t*)
 function int timer_delete (timer_t)
 function int timer_gettime (timer_t, struct itimerspec*)
@@ -83,10 +96,10 @@ function int timer_getoverrun (timer_t)
 function int timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*)
 function void tzset (void)
 
-#if !defined POSIX && !defined POSIX2008
+# if !defined POSIX && !defined POSIX2008
 variable int daylight
 variable {long int} timezone
-#endif
+# endif
 variable {char*} tzname [2]
 
 allow tm_*
@@ -98,3 +111,4 @@ allow CLOCK_*
 allow TIMER_*
 allow *_t
 allow sigevent
+#endif
diff --git a/conform/data/uchar.h-data b/conform/data/uchar.h-data
new file mode 100644
index 0000000..487d755
--- /dev/null
+++ b/conform/data/uchar.h-data
@@ -0,0 +1,12 @@
+#if defined ISO11
+type mbstate_t
+type size_t
+type char16_t
+type char32_t
+
+function size_t mbrtoc16 (char16_t *, const char *, size_t, mbstate_t *)
+function size_t c16rtomb (char *, char16_t, mbstate_t *)16
+function size_t mbrtoc32 (char32_t *, const char *, size_t, mbstate_t *)
+function size_t c32rtomb (char *, char32_t, mbstate_t *)
+
+#endif
diff --git a/conform/data/ucontext.h-data b/conform/data/ucontext.h-data
index 3540fdd..2b5f3b4 100644
--- a/conform/data/ucontext.h-data
+++ b/conform/data/ucontext.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX
 type mcontext_t
 
 type ucontext_t
@@ -18,3 +19,4 @@ function int swapcontext (ucontext_t*, const ucontext_t*)
 allow uc_*
 allow ss_*
 allow *_t
+#endif
diff --git a/conform/data/ulimit.h-data b/conform/data/ulimit.h-data
index 9e7e6f4..1e5e5b4 100644
--- a/conform/data/ulimit.h-data
+++ b/conform/data/ulimit.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 constant UL_GETFSIZE
 constant UL_SETFSIZE
 
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
index 72fbdd6..ecefa53 100644
--- a/conform/data/unistd.h-data
+++ b/conform/data/unistd.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined ISO99 && !defined ISO11
 optional-constant _POSIX_VERSION
 optional-constant _POSIX2_C_VERSION
 optional-constant _XOPEN_VERSION
diff --git a/conform/data/utime.h-data b/conform/data/utime.h-data
index 15d4487..aab9039 100644
--- a/conform/data/utime.h-data
+++ b/conform/data/utime.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type {struct utimbuf}
 
 element {struct utimbuf} time_t actime
@@ -9,3 +10,4 @@ function int utime (const char*, const struct utimbuf*)
 
 allow utim_*
 allow *_t
+#endif
diff --git a/conform/data/utmpx.h-data b/conform/data/utmpx.h-data
index af3c229..b9dd0d5 100644
--- a/conform/data/utmpx.h-data
+++ b/conform/data/utmpx.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 type {struct utmpx}
 
 element {struct utmpx} char ut_user []
diff --git a/conform/data/varargs.h-data b/conform/data/varargs.h-data
index 11dc38c..a486b72 100644
--- a/conform/data/varargs.h-data
+++ b/conform/data/varargs.h-data
@@ -1,3 +1,4 @@
+#if defined XPG3 || defined XPG4
 macro va_alist
 macro va_dcl
 type va_list
@@ -6,3 +7,4 @@ macro va_arg
 macro va_end
 
 allow *_t
+#endif
diff --git a/conform/data/wchar.h-data b/conform/data/wchar.h-data
index bf9e1a9..fdb68d0 100644
--- a/conform/data/wchar.h-data
+++ b/conform/data/wchar.h-data
@@ -1,19 +1,24 @@
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
 type wchar_t
 type wint_t
-# if !defined ISO && !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 type wctype_t
-#endif
+# endif
 type mbstate_t
+# if !defined ISO99 && !defined ISO11
 type FILE
+# else
+#  define FILE __FILE
+# endif
 type size_t
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 type locale_t
-#endif
+# endif
 
 function wint_t btowc (int)
 function int fwprintf (FILE*, const wchar_t*, ...)
 function int fwscanf (FILE*, const wchar_t*, ...)
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 function int iswalnum (wint_t)
 function int iswalpha (wint_t)
 function int iswcntrl (wint_t)
@@ -26,7 +31,7 @@ function int iswspace (wint_t)
 function int iswupper (wint_t)
 function int iswxdigit (wint_t)
 function int iswctype (wint_t, wctype_t)
-#endif
+# endif
 function wint_t fgetwc (FILE*)
 function {wchar_t*} fgetws (wchar_t*, int, FILE*)
 function wint_t fputwc (wchar_t, FILE*)
@@ -37,21 +42,21 @@ 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_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function size_t mbsnrtowcs (wchar_t*, const char**, size_t, size_t, mbstate_t*)
-#endif
+# endif
 function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function {FILE*} open_wmemstream (wchar_t**, size_t*)
-#endif
+# endif
 function wint_t putwc (wchar_t, FILE*)
 function wint_t putwchar (wchar_t)
 function int swprintf (wchar_t*, size_t, const wchar_t*, ...)
 function int swscanf (const wchar_t*, const wchar_t*, ...)
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 function wint_t towlower (wint_t)
 function wint_t towupper (wint_t)
-#endif
+# endif
 function wint_t ungetwc (wint_t, FILE*)
 function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list)
 function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list)
@@ -59,40 +64,40 @@ function int vwprintf (const wchar_t*, __gnuc_va_list)
 function int vwscanf (const wchar_t*, __gnuc_va_list)
 function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list)
 function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*)
 function {wchar_t*} wcpncpy (wchar_t*, const wchar_t*, size_t)
-#endif
+# endif
 function size_t wcrtomb (char*, wchar_t, mbstate_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function int wcscasecmp(const wchar_t*, const wchar_t*)
 function int wcscasecmp_l(const wchar_t*, const wchar_t*, locale_t)
-#endif
+# endif
 function {wchar_t*} wcscat (wchar_t*, const wchar_t*)
 function {wchar_t*} wcschr (const wchar_t*, wchar_t)
 function int wcscmp (const wchar_t*, const wchar_t*)
 function int wcscoll (const wchar_t*, const wchar_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function int wcscoll_l (const wchar_t*, const wchar_t*, locale_t)
-#endif
+# endif
 function {wchar_t*} wcscpy (wchar_t*, const wchar_t*)
 function size_t wcscspn (const wchar_t*, const wchar_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function {wchar_t*} wcsdup (const wchar_t*)
-#endif
+# endif
 function size_t wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*)
 function size_t wcslen (const wchar_t*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function int wcsncasecmp (const wchar_t*, const wchar_t*, size_t)
 function int wcsncasecmp_l (const wchar_t*, const wchar_t*, size_t, locale_t)
-#endif
+# endif
 function {wchar_t*} wcsncat (wchar_t*, const wchar_t*, size_t)
 function int wcsncmp (const wchar_t*, const wchar_t*, size_t)
 function {wchar_t*} wcsncpy (wchar_t*, const wchar_t*, size_t)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function size_t wcsnlen (const wchar_t*, size_t)
 function size_t wcsnrtombs (char*, const wchar_t**, size_t, size_t, mbstate_t*)
-#endif
+# endif
 function {wchar_t*} wcspbrk (const wchar_t*, const wchar_t*)
 function {wchar_t*} wcsrchr (const wchar_t*, wchar_t)
 function size_t wcsrtombs (char*, const wchar_t**, size_t, mbstate_t*)
@@ -102,21 +107,21 @@ function double wcstod (const wchar_t*, wchar_t**)
 function {wchar_t*} wcstok (wchar_t*, const wchar_t*, wchar_t**)
 function {long int} wcstol (const wchar_t*, wchar_t**, int)
 function {unsigned long int} wcstoul (const wchar_t*, wchar_t**, int)
-#if defined UNIX98 || defined XOPEN2K
+# if defined UNIX98 || defined XOPEN2K
 function {wchar_t*} wcswcs (const wchar_t*, const wchar_t*)
-#endif
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+# endif
+# if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
 function int wcswidth (const wchar_t*, size_t)
-#endif
+# endif
 function size_t wcsxfrm (wchar_t*, const wchar_t*, size_t)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function size_t wcsxfrm_l (wchar_t*, const wchar_t*, size_t, locale_t)
-#endif
+# endif
 function int wctob (wint_t)
-#if !defined ISO && !defined POSIX && !defined POSIX2008
+# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
 function wctype_t wctype (const char*)
 function int wcwidth (wchar_t)
-#endif
+# endif
 function {wchar_t*} wmemchr (const wchar_t*, wchar_t, size_t)
 function int wmemcmp (const wchar_t*, const wchar_t*, size_t)
 function {wchar_t*} wmemcpy (wchar_t*, const wchar_t*, size_t)
@@ -140,3 +145,4 @@ allow-header time.h
 
 allow wcs*
 allow *_t
+#endif
diff --git a/conform/data/wctype.h-data b/conform/data/wctype.h-data
index a3f8c54..cbd1dac 100644
--- a/conform/data/wctype.h-data
+++ b/conform/data/wctype.h-data
@@ -1,9 +1,10 @@
+#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
 type wint_t
 type wctrans_t
 type wctype_t
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 type locale_t
-#endif
+# endif
 
 function int iswalnum (wint_t)
 function int iswalpha (wint_t)
@@ -22,7 +23,7 @@ function wint_t towlower (wint_t)
 function wint_t towupper (wint_t)
 function wctrans_t wctrans (const char*)
 function wctype_t wctype (const char*)
-#if defined XOPEN2K8 || defined POSIX2008
+# if defined XOPEN2K8 || defined POSIX2008
 function int iswalnum_l (wint_t, locale_t)
 function int iswalpha_l (wint_t, locale_t)
 function int iswcntrl_l (wint_t, locale_t)
@@ -40,7 +41,7 @@ function wint_t towlower_l (wint_t, locale_t)
 function wint_t towupper_l (wint_t, locale_t)
 function wctrans_t wctrans_l (const char*, locale_t)
 function wctype_t wctype_l (const char*, locale_t)
-#endif
+# endif
 
 macro WEOF
 
@@ -56,3 +57,4 @@ allow-header wchar.h
 allow is*
 allow to*
 allow *_t
+#endif
diff --git a/conform/data/wordexp.h-data b/conform/data/wordexp.h-data
index acbed74..821784a 100644
--- a/conform/data/wordexp.h-data
+++ b/conform/data/wordexp.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined ISO99 && !defined ISO11
 type wordexp_t
 
 element wordexp_t size_t we_wordc
@@ -14,9 +15,9 @@ constant WRDE_UNDEF
 constant WRDE_BADCHAR
 constant WRDE_CMDSUB
 constant WRDE_NOSPACE
-#if !defined XOPEN2K8 && !defined POSIX2008
+# if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
 constant WRDE_NOSYS
-#endif
+# endif
 constant WRDE_SYNTAX
 
 function int wordexp (const char*, wordexp_t*, int)
@@ -25,3 +26,4 @@ function void wordfree (wordexp_t*)
 allow WRDE_*
 allow we_*
 allow *_t
+#endif
diff --git a/conform/run-conformtest.sh b/conform/run-conformtest.sh
new file mode 100644
index 0000000..9600524
--- /dev/null
+++ b/conform/run-conformtest.sh
@@ -0,0 +1,30 @@
+#! /bin/sh
+
+objpfx="$1"
+perl="$2"
+cc="$3"
+includes="$4"
+
+standards=("ISO" "ISO99" "ISO11" "POSIX" "XPG3" "XPG4" "UNIX98"
+	   "XOPEN2K" "XOPEN2K8" "POSIX2008")
+standards=("POSIX" "XPG3" "XPG4" "UNIX98"
+	   "XOPEN2K" "XOPEN2K8" "POSIX2008")
+
+exitval=0
+> ${objpfx}run-conformtest.out
+for s in ${standards[*]}; do
+    echo -n $s...
+    e=0
+    if ! $perl conformtest.pl --cc="$cc" --flags="$includes" --standard=$s > ${objpfx}conform-$s.out; then
+	e=1
+    fi
+    printf "\n%s\n" $s >> ${objpfx}run-conformtest.out
+    tail -n 4 ${objpfx}conform-$s.out >> ${objpfx}run-conformtest.out
+    echo
+    if [ $e -ne 0 ]; then
+	tail -n 3 ${objpfx}conform-$s.out
+	exitval=1
+    fi
+done
+
+exit $exitval
diff --git a/include/aio.h b/include/aio.h
index c81dae9..90c74f9 100644
--- a/include/aio.h
+++ b/include/aio.h
@@ -1,6 +1,7 @@
 #ifndef _AIO_H
 #include <rt/aio.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern void __aio_init (const struct aioinit *__init);
 
@@ -8,5 +9,6 @@ extern void __aio_init (const struct aioinit *__init);
    lio_listio and we do not issue events for each individual list
    element.  */
 #define LIO_NO_INDIVIDUAL_EVENT	128
+#endif
 
 #endif
diff --git a/include/assert.h b/include/assert.h
index 573eb40..d0d9259 100644
--- a/include/assert.h
+++ b/include/assert.h
@@ -1,5 +1,6 @@
 #include <assert/assert.h>
 
+#ifndef _ISOMAC
 /* This prints an "Assertion failed" message and aborts.
    In installed assert.h this is only conditionally declared,
    so it has to be repeated here.  */
@@ -19,7 +20,8 @@ extern void __assert_fail_base (const char *fmt, const char *assertion,
 				const char *function)
      __THROW  __attribute__ ((__noreturn__));
 
-#if !defined NOT_IN_libc || defined IS_IN_rtld
+# if !defined NOT_IN_libc || defined IS_IN_rtld
 hidden_proto (__assert_fail)
 hidden_proto (__assert_perror_fail)
+# endif
 #endif
diff --git a/include/ctype.h b/include/ctype.h
index 4b5abda..6a18039 100644
--- a/include/ctype.h
+++ b/include/ctype.h
@@ -1,5 +1,6 @@
 #ifndef _CTYPE_H
 
+#ifndef _ISOMAC
 /* Initialize ctype locale data.  */
 extern void __ctype_init (void);
 libc_hidden_proto (__ctype_init)
@@ -46,9 +47,11 @@ __ctype_tolower_loc (void)
 }
 
 # endif	/* Not NOT_IN_libc.  */
+#endif
 
-# include <ctype/ctype.h>
+#include <ctype/ctype.h>
 
+#ifndef _ISOMAC
 # if !defined __NO_CTYPE && !defined NOT_IN_libc
 /* The spec says that isdigit must only match the decimal digits.  We
    can check this without a memory access.  */
@@ -59,5 +62,6 @@ __ctype_tolower_loc (void)
 #  undef __isdigit_l
 #  define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; })
 # endif
+#endif
 
 #endif /* ctype.h */
diff --git a/include/dirent.h b/include/dirent.h
index 28bf432..2e88005 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -1,6 +1,7 @@
 #ifndef _DIRENT_H
-# include <dirstream.h>
 # include <dirent/dirent.h>
+# ifndef _ISOMAC
+# include <dirstream.h>
 # include <sys/stat.h>
 # include <stdbool.h>
 
@@ -44,5 +45,6 @@ extern void __scandir_cancel_handler (void *arg);
 libc_hidden_proto (rewinddir)
 libc_hidden_proto (scandirat)
 libc_hidden_proto (scandirat64)
+# endif
 
 #endif
diff --git a/include/dlfcn.h b/include/dlfcn.h
index ae9c886..a67b2e3 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -1,5 +1,6 @@
 #ifndef _DLFCN_H
 #include <dlfcn/dlfcn.h>
+#ifndef _ISOMAC
 #include <link.h>		/* For ElfW.  */
 #include <stdbool.h>
 
@@ -146,5 +147,6 @@ extern void __libc_register_dl_open_hook (struct link_map *map)
 extern void __libc_register_dlfcn_hook (struct link_map *map)
      attribute_hidden;
 #endif
+#endif
 
 #endif
diff --git a/include/fcntl.h b/include/fcntl.h
index 7afbd1c..b645ffc 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -1,6 +1,7 @@
 #ifndef _FCNTL_H
 #include <io/fcntl.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __open64 (const char *__file, int __oflag, ...);
 libc_hidden_proto (__open64)
@@ -44,5 +45,6 @@ extern int __have_atfcts attribute_hidden;
 #ifdef O_CLOEXEC
 extern int __have_o_cloexec attribute_hidden;
 #endif
+#endif
 
 #endif
diff --git a/include/fnmatch.h b/include/fnmatch.h
index 2cdad0a..9ef8150 100644
--- a/include/fnmatch.h
+++ b/include/fnmatch.h
@@ -2,6 +2,8 @@
 
 #include <posix/fnmatch.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (fnmatch)
+#endif
 
 #endif
diff --git a/include/glob.h b/include/glob.h
index a0c0597..228fe30 100644
--- a/include/glob.h
+++ b/include/glob.h
@@ -1,6 +1,7 @@
 #ifndef	_GLOB_H
 #include <posix/glob.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (glob)
 libc_hidden_proto (glob64)
 libc_hidden_proto (globfree)
@@ -11,5 +12,6 @@ extern int __glob_pattern_p (const char *__pattern, int __quote);
 extern int __glob64 (const char *__pattern, int __flags,
 		     int (*__errfunc) (const char *, int),
 		     glob64_t *__pglob);
+#endif
 
 #endif
diff --git a/include/grp.h b/include/grp.h
index 9fa71ea..0fb5c9a 100644
--- a/include/grp.h
+++ b/include/grp.h
@@ -1,6 +1,7 @@
 #ifndef _GRP_H
 #include <grp/grp.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (setgroups)
 
 /* Now define the internal interfaces.  */
@@ -60,3 +61,4 @@ DECLARE_NSS_PROTOTYPES (nisplus)
 
 #undef DECLARE_NSS_PROTOTYPES
 #endif
+#endif
diff --git a/include/libio.h b/include/libio.h
index 633ee51..aca7000 100644
--- a/include/libio.h
+++ b/include/libio.h
@@ -1,5 +1,6 @@
 #include <libio/libio.h>
 
+#ifndef _ISOMAC
 #ifndef _LIBC_LIBIO_H
 #define _LIBC_LIBIO_H
 
@@ -22,3 +23,4 @@ libc_hidden_proto (__wuflow)
 #endif
 
 #endif
+#endif
diff --git a/include/locale.h b/include/locale.h
index a296a5f..8091e1d 100644
--- a/include/locale.h
+++ b/include/locale.h
@@ -1,6 +1,7 @@
 #ifndef	_LOCALE_H
 #include <locale/locale.h>
 
+#ifndef _ISOMAC
 extern __typeof (uselocale) __uselocale;
 
 libc_hidden_proto (setlocale)
@@ -22,3 +23,4 @@ extern struct lconv *__localeconv (void);
 extern const char *__current_locale_name (int category) attribute_hidden;
 
 #endif
+#endif
diff --git a/include/math.h b/include/math.h
index 3934880..2b040c6 100644
--- a/include/math.h
+++ b/include/math.h
@@ -2,6 +2,7 @@
 
 #include <math/math.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __matherr (struct exception *__exc);
 
@@ -36,3 +37,4 @@ extern int __isinf_nsf (float);
 extern int __isinf_nsl (long double);
 
 #endif
+#endif
diff --git a/include/net/if.h b/include/net/if.h
index 872ab6d..1d86226 100644
--- a/include/net/if.h
+++ b/include/net/if.h
@@ -2,9 +2,11 @@
 
 # include_next <net/if.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (if_nametoindex)
 libc_hidden_proto (if_indextoname)
 libc_hidden_proto (if_nameindex)
 libc_hidden_proto (if_freenameindex)
+#endif
 
 #endif
diff --git a/include/netdb.h b/include/netdb.h
index 0db3579..3f2ae06 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -1,6 +1,7 @@
 #ifndef	_NETDB_H
 #include <resolv/netdb.h>
 
+#ifndef _ISOMAC
 /* Macros for accessing h_errno from inside libc.  */
 # undef  h_errno
 # ifdef _LIBC_REENTRANT
@@ -280,5 +281,6 @@ DECLARE_NSS_PROTOTYPES (nis)
 DECLARE_NSS_PROTOTYPES (nisplus)
 
 #undef DECLARE_NSS_PROTOTYPES
+#endif
 
 #endif /* !_NETDB_H */
diff --git a/include/netinet/in.h b/include/netinet/in.h
index 876f1a4..6fb5c86 100644
--- a/include/netinet/in.h
+++ b/include/netinet/in.h
@@ -2,8 +2,10 @@
 
 #include <inet/netinet/in.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (bindresvport)
 libc_hidden_proto (in6addr_loopback)
 libc_hidden_proto (in6addr_any)
+#endif
 
 #endif
diff --git a/include/pthread.h b/include/pthread.h
index f8860bd..51854f6 100644
--- a/include/pthread.h
+++ b/include/pthread.h
@@ -1,4 +1,6 @@
 #include_next <pthread.h>
 
+#ifndef _ISOMAC
 /* This function is called to initialize the pthread library.  */
 extern void __pthread_initialize (void) __attribute__ ((weak));
+#endif
diff --git a/include/pwd.h b/include/pwd.h
index 465c17c..bd7fecc 100644
--- a/include/pwd.h
+++ b/include/pwd.h
@@ -1,6 +1,7 @@
 #ifndef _PWD_H
 #include <pwd/pwd.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __getpwent_r (struct passwd *__resultbuf, char *__buffer,
 			 size_t __buflen, struct passwd **__result)
@@ -51,5 +52,6 @@ DECLARE_NSS_PROTOTYPES (nis)
 DECLARE_NSS_PROTOTYPES (nisplus)
 
 #undef DECLARE_NSS_PROTOTYPES
+#endif
 
 #endif
diff --git a/include/regex.h b/include/regex.h
index a7606c5..fd4beef 100644
--- a/include/regex.h
+++ b/include/regex.h
@@ -1,6 +1,7 @@
 #ifndef _REGEX_H
 #include <posix/regex.h>
 
+#ifndef _ISOMAC
 /* Document internal interfaces.  */
 extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax);
 
@@ -41,3 +42,4 @@ extern size_t __regerror (int __errcode, const regex_t *__preg,
 
 extern void __regfree (regex_t *__preg);
 #endif
+#endif
diff --git a/include/sched.h b/include/sched.h
index 1eae9f7..4f59397 100644
--- a/include/sched.h
+++ b/include/sched.h
@@ -1,6 +1,7 @@
 #ifndef _SCHED_H
 #include <posix/sched.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __sched_setparam (__pid_t __pid,
 			     const struct sched_param *__param);
@@ -21,3 +22,4 @@ extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
 extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
 		     size_t __child_stack_size, int __flags, void *__arg, ...);
 #endif
+#endif
diff --git a/include/search.h b/include/search.h
index d1f3a92..cf9c343 100644
--- a/include/search.h
+++ b/include/search.h
@@ -1,6 +1,7 @@
 #ifndef _SEARCH_H
 #include <misc/search.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (hcreate_r)
 libc_hidden_proto (hdestroy_r)
 libc_hidden_proto (hsearch_r)
@@ -17,3 +18,4 @@ extern void *__tdelete (const void *__key, void **__rootp,
 extern void __twalk (const void *__root, __action_fn_t action);
 extern void __tdestroy (void *__root, __free_fn_t freefct);
 #endif
+#endif
diff --git a/include/setjmp.h b/include/setjmp.h
index 6863f51..622bb31 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -1,6 +1,7 @@
 #ifndef _SETJMP_H
 #include <setjmp/setjmp.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 
 /* Internal machine-dependent function to restore context sans signal mask.  */
@@ -16,12 +17,13 @@ extern int __sigjmp_save (jmp_buf __env, int __savemask);
 extern void _longjmp_unwind (jmp_buf env, int val);
 
 extern void __libc_siglongjmp (sigjmp_buf env, int val)
-          __attribute__ ((noreturn));
+	  __attribute__ ((noreturn));
 extern void __libc_longjmp (sigjmp_buf env, int val)
      __attribute__ ((noreturn));
 libc_hidden_proto (__libc_longjmp)
 
 libc_hidden_proto (_setjmp)
 libc_hidden_proto (__sigsetjmp)
+#endif
 
 #endif
diff --git a/include/signal.h b/include/signal.h
index 6250d30..c43f2ab 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -4,6 +4,7 @@
 #else
 # include <signal/signal.h>
 
+# ifndef _ISOMAC
 libc_hidden_proto (sigemptyset)
 libc_hidden_proto (sigfillset)
 libc_hidden_proto (sigaddset)
@@ -58,5 +59,6 @@ extern int __xpg_sigpause (int sig);
 
 /* Allocate real-time signal with highest/lowest available priority.  */
 extern int __libc_allocate_rtsig (int __high);
+# endif
 #endif
 #endif
diff --git a/include/stdio.h b/include/stdio.h
index 48aa765..bd0209a 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -1,5 +1,5 @@
 #ifndef _STDIO_H
-# if defined __need_FILE || defined __need___FILE
+# if defined __need_FILE || defined __need___FILE || defined _ISOMAC
 #  include <libio/stdio.h>
 # else
 #  include <libio/stdio.h>
@@ -29,7 +29,7 @@ extern int __vsscanf (const char *__restrict __s,
 		      _G_va_list __arg)
      __attribute__ ((__format__ (__scanf__, 2, 0)));
 
-#ifndef __cplusplus
+#  ifndef __cplusplus
 extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW;
 extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
      __THROW;
@@ -51,7 +51,7 @@ extern int __obstack_printf_chk (struct obstack *, int, const char *, ...)
      __THROW;
 extern int __obstack_vprintf_chk (struct obstack *, int, const char *,
 				  _G_va_list) __THROW;
-#endif
+#  endif
 
 extern int __isoc99_fscanf (FILE *__restrict __stream,
 			    const char *__restrict __format, ...) __wur;
@@ -119,7 +119,7 @@ extern int _sys_nerr_internal attribute_hidden;
 extern int __asprintf_internal (char **__restrict __ptr,
 				const char *__restrict __fmt, ...)
      attribute_hidden __attribute__ ((__format__ (__printf__, 2, 3)));
-#  if !defined NOT_IN_libc && !defined _ISOMAC
+#  if !defined NOT_IN_libc
 #    define __asprintf(ptr, fmt, args...) \
   INTUSE(__asprintf) (ptr, fmt, ##args)
 
diff --git a/include/stdlib.h b/include/stdlib.h
index fc9ef7f..de0b414 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -4,14 +4,14 @@
 #define __Need_M_And_C
 #endif
 
-#include <stddef.h>
+#ifndef _ISOMAC
+# include <stddef.h>
+#endif
 #include <stdlib/stdlib.h>
 
 /* Now define the internal interfaces.  */
-#ifndef __Need_M_And_C
-# ifndef _ISOMAC
-#  include <sys/stat.h>
-# endif
+#if !defined __Need_M_And_C && !defined _ISOMAC
+# include <sys/stat.h>
 
 __BEGIN_DECLS
 
diff --git a/include/string.h b/include/string.h
index 0b49b8f..f1077f6 100644
--- a/include/string.h
+++ b/include/string.h
@@ -1,5 +1,6 @@
 #ifndef _STRING_H
 
+#ifndef _ISOMAC
 #include <sys/types.h>
 
 extern void *__memccpy (void *__dest, const void *__src,
@@ -43,11 +44,13 @@ extern void *__memchr (const void *__s, int __c, size_t __n)
 extern int __ffs (int __i) __attribute__ ((const));
 
 extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
+#endif
 
 /* Now the real definitions.  We do this here since some of the functions
    above are defined as macros in the headers.  */
 #include <string/string.h>
 
+#ifndef _ISOMAC
 extern __typeof (strcoll_l) __strcoll_l;
 extern __typeof (strxfrm_l) __strxfrm_l;
 extern __typeof (strcasecmp_l) __strcasecmp_l;
@@ -142,5 +145,6 @@ extern char *__strcat_chk (char *__restrict __dest,
 extern char *__strncat_chk (char *__restrict __dest,
 			    const char *__restrict __src,
 			    size_t __len, size_t __destlen) __THROW;
+#endif
 
 #endif
diff --git a/include/stropts.h b/include/stropts.h
new file mode 100644
index 0000000..27ab60a
--- /dev/null
+++ b/include/stropts.h
@@ -0,0 +1 @@
+#include <streams/stropts.h>
diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h
index a2bdf20..fa93982 100644
--- a/include/sys/cdefs.h
+++ b/include/sys/cdefs.h
@@ -2,21 +2,23 @@
 
 #include <misc/sys/cdefs.h>
 
+#ifndef _ISOMAC
 /* The compiler will optimize based on the knowledge the parameter is
    not NULL.  This will omit tests.  A robust implementation cannot allow
    this so when compiling glibc itself we ignore this attribute.  */
-#undef __nonnull
-#define __nonnull(params)
+# undef __nonnull
+# define __nonnull(params)
 
 extern void __chk_fail (void) __attribute__ ((__noreturn__));
 libc_hidden_proto (__chk_fail)
 rtld_hidden_proto (__chk_fail)
 
 
-#if __GNUC_PREREQ (4,3)
-# define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__)))
-#else
-# define __attribute_alloc_size(...)
+# if __GNUC_PREREQ (4,3)
+#  define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__)))
+# else
+#  define __attribute_alloc_size(...)
+# endif
 #endif
 
 #endif
diff --git a/include/sys/mman.h b/include/sys/mman.h
index a4687b3..0a0e4a6 100644
--- a/include/sys/mman.h
+++ b/include/sys/mman.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_MMAN_H
 #include <misc/sys/mman.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern void *__mmap (void *__addr, size_t __len, int __prot,
 		     int __flags, int __fd, __off_t __offset);
@@ -14,5 +15,6 @@ extern void *__mremap (void *__addr, size_t __old_len,
 		       size_t __new_len, int __flags, ...);
 
 libc_hidden_proto (madvise);
+#endif
 
 #endif
diff --git a/include/sys/msg.h b/include/sys/msg.h
index 03e17f9..43ec5b9 100644
--- a/include/sys/msg.h
+++ b/include/sys/msg.h
@@ -1,9 +1,11 @@
 #ifndef _SYS_MSG_H
 #include <sysvipc/sys/msg.h>
 
+#ifndef _ISOMAC
 extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 			      long int msgtyp, int msgflg);
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
+#endif
 
 #endif
diff --git a/include/sys/resource.h b/include/sys/resource.h
index b4ea1ae..c35df43 100644
--- a/include/sys/resource.h
+++ b/include/sys/resource.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_RESOURCE_H
 #include <resource/sys/resource.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (getpriority)
 libc_hidden_proto (setpriority)
 libc_hidden_proto (getrlimit64)
@@ -14,3 +15,4 @@ extern int __getrusage (enum __rusage_who __who, struct rusage *__usage)
 extern int __setrlimit (enum __rlimit_resource __resource,
 			const struct rlimit *__rlimits);
 #endif
+#endif
diff --git a/include/sys/select.h b/include/sys/select.h
index 2e5901c..07bb49b 100644
--- a/include/sys/select.h
+++ b/include/sys/select.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_SELECT_H
 #include <misc/sys/select.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __pselect (int __nfds, fd_set *__readfds,
 		      fd_set *__writefds, fd_set *__exceptfds,
@@ -14,3 +15,4 @@ extern int __select (int __nfds, fd_set *__restrict __readfds,
 libc_hidden_proto (__select)
 
 #endif
+#endif
diff --git a/include/sys/socket.h b/include/sys/socket.h
index d45c99d..2ae3428 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_SOCKET_H
 #include <socket/sys/socket.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 
 /* Create a new socket of type TYPE in domain DOMAIN, using
@@ -162,3 +163,4 @@ extern int __have_sock_cloexec;
 #endif
 
 #endif
+#endif
diff --git a/include/sys/stat.h b/include/sys/stat.h
index a6cf60f..7a65d60 100644
--- a/include/sys/stat.h
+++ b/include/sys/stat.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_STAT_H
 #include <io/sys/stat.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces. */
 extern int __stat (const char *__file, struct stat *__buf);
 extern int __fstat (int __fd, struct stat *__buf);
@@ -55,3 +56,4 @@ libc_hidden_proto (__fxstatat64)
 #define __fstatat64(dfd, fname, buf, flag) \
   __fxstatat64 (_STAT_VER, dfd, fname, buf, flag)
 #endif
+#endif
diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h
index 74ef2db..fa30453 100644
--- a/include/sys/statvfs.h
+++ b/include/sys/statvfs.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_STATVFS_H
 #include <io/sys/statvfs.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __statvfs64 (const char *__file, struct statvfs64 *__buf);
 extern int __fstatvfs64 (int __fildes, struct statvfs64 *__buf);
@@ -8,3 +9,4 @@ extern int __fstatvfs64 (int __fildes, struct statvfs64 *__buf);
 libc_hidden_proto (statvfs)
 libc_hidden_proto (fstatvfs)
 #endif
+#endif
diff --git a/include/sys/time.h b/include/sys/time.h
index a5ec500..d5de942 100644
--- a/include/sys/time.h
+++ b/include/sys/time.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_TIME_H
 #include <time/sys/time.h>
 
+#ifndef _ISOMAC
 /* Now document the internal interfaces.  */
 extern int __gettimeofday (struct timeval *__tv,
 			   struct timezone *__tz);
@@ -27,3 +28,4 @@ extern int __futimes (int fd, const struct timeval tvp[2]) attribute_hidden;
 #endif
 
 #endif
+#endif
diff --git a/include/sys/times.h b/include/sys/times.h
index 6ad39fb..026d140 100644
--- a/include/sys/times.h
+++ b/include/sys/times.h
@@ -1,6 +1,8 @@
 #ifndef _SYS_TIMES_H
 #include <posix/sys/times.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern clock_t __times (struct tms *__buffer);
 #endif
+#endif
diff --git a/include/sys/uio.h b/include/sys/uio.h
index 1e5d64e..0ec9ab0 100644
--- a/include/sys/uio.h
+++ b/include/sys/uio.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_UIO_H
 #include <misc/sys/uio.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern ssize_t __readv (int __fd, const struct iovec *__vector,
 			int __count);
@@ -11,3 +12,4 @@ extern ssize_t __writev (int __fd, const struct iovec *__vector,
 extern ssize_t __libc_writev (int __fd, const struct iovec *__vector,
 			      int __count);
 #endif
+#endif
diff --git a/include/sys/utsname.h b/include/sys/utsname.h
index a6b4ceb..66a5289 100644
--- a/include/sys/utsname.h
+++ b/include/sys/utsname.h
@@ -1,8 +1,10 @@
 #ifndef	_SYS_UTSNAME_H
 #include <posix/sys/utsname.h>
 
+#ifndef _ISOMAC
 extern int __uname (struct utsname *__name);
 
 libc_hidden_proto (uname)
 libc_hidden_proto (__uname)
 #endif
+#endif
diff --git a/include/sys/wait.h b/include/sys/wait.h
index efabd0c..2239501 100644
--- a/include/sys/wait.h
+++ b/include/sys/wait.h
@@ -1,6 +1,7 @@
 #ifndef _SYS_WAIT_H
 #include <posix/sys/wait.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern __pid_t __waitpid (__pid_t __pid, int *__stat_loc,
 			  int __options);
@@ -16,3 +17,4 @@ extern __pid_t __wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc,
 			int __options, struct rusage *__usage)
 			attribute_hidden;
 #endif
+#endif
diff --git a/include/termios.h b/include/termios.h
index 8916f14..fad51f8 100644
--- a/include/termios.h
+++ b/include/termios.h
@@ -1,6 +1,7 @@
 #ifndef _TERMIOS_H
 #include <termios/termios.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern int __tcgetattr (int __fd, struct termios *__termios_p);
 
@@ -11,3 +12,4 @@ libc_hidden_proto (cfsetispeed)
 libc_hidden_proto (cfsetospeed)
 
 #endif
+#endif
diff --git a/include/time.h b/include/time.h
index 0bda094..f056542 100644
--- a/include/time.h
+++ b/include/time.h
@@ -1,5 +1,5 @@
 #ifndef _TIME_H
-#if defined __need_time_t  || defined __need_clock_t || defined __need_timespec
+#if defined __need_time_t  || defined __need_clock_t || defined __need_timespec || defined _ISOMAC
 # include <time/time.h>
 #else
 # include <time/time.h>
@@ -106,9 +106,7 @@ extern double __difftime (time_t time1, time_t time0);
 
 /* Use in the clock_* functions.  Size of the field representing the
    actual clock ID.  */
-#ifndef _ISOMAC
-# define CLOCK_IDFIELD_SIZE	3
-#endif
+#define CLOCK_IDFIELD_SIZE	3
 
 __END_DECLS
 
diff --git a/include/uchar.h b/include/uchar.h
new file mode 100644
index 0000000..f456684
--- /dev/null
+++ b/include/uchar.h
@@ -0,0 +1 @@
+#include <wcsmbs/uchar.h>
diff --git a/include/ulimit.h b/include/ulimit.h
index d2430fa..dd83faa 100644
--- a/include/ulimit.h
+++ b/include/ulimit.h
@@ -1,6 +1,8 @@
 #ifndef _ULIMIT_H
 #include <resource/ulimit.h>
 
+#ifndef _ISOMAC
 /* Now define the internal interfaces.  */
 extern long int __ulimit (int __cmd, ...);
 #endif
+#endif
diff --git a/include/unistd.h b/include/unistd.h
index 4664dc2..2e6101b 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -1,6 +1,7 @@
 #ifndef _UNISTD_H
 # include <posix/unistd.h>
 
+# ifndef _ISOMAC
 __BEGIN_DECLS
 
 libc_hidden_proto (_exit, __noreturn__)
@@ -182,5 +183,6 @@ extern int __getlogin_r_loginuid (char *name, size_t namesize)
      attribute_hidden;
 
 __END_DECLS
+# endif
 
 #endif
diff --git a/include/utime.h b/include/utime.h
index aecd6a1..5049251 100644
--- a/include/utime.h
+++ b/include/utime.h
@@ -2,6 +2,8 @@
 
 #include <io/utime.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (utime)
+#endif
 
 #endif /* utime.h */
diff --git a/include/wchar.h b/include/wchar.h
index d2f9e0d..f927a95 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -1,6 +1,7 @@
 #ifndef _WCHAR_H
 #include <wcsmbs/wchar.h>
 
+# ifndef _ISOMAC
 # ifdef _WCHAR_H
 
 extern __typeof (wcscasecmp_l) __wcscasecmp_l;
@@ -194,6 +195,7 @@ extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len,
 #  define __mbsinit(state) ((state)->__count == 0)
 
 # endif
+# endif
 #endif
 
 /* Undefine all __need_* constants in case we are included to get those
diff --git a/include/wctype.h b/include/wctype.h
index 9833f95..a2ee9ff 100644
--- a/include/wctype.h
+++ b/include/wctype.h
@@ -1,5 +1,6 @@
 #ifndef _WCTYPE_H
 
+#ifndef _ISOMAC
 /* We try to get wint_t from <stddef.h>, but not all GCC versions define it
    there.  So define it ourselves if it remains undefined.  */
 # define __need_wint_t
@@ -33,9 +34,11 @@ libc_hidden_proto (iswspace)
 libc_hidden_proto (iswxdigit)
 libc_hidden_proto (towlower)
 libc_hidden_proto (towupper)
+#endif
 
 #include <wctype/wctype.h>
 
+#ifndef _ISOMAC
 /* Internal interfaces.  */
 extern int __iswalpha_l_internal (wint_t __wc, __locale_t __locale)
      attribute_hidden;
@@ -96,3 +99,4 @@ libc_hidden_proto (__towupper_l)
 # endif
 
 #endif
+#endif
diff --git a/include/wordexp.h b/include/wordexp.h
index 27ae045..33c90c1 100644
--- a/include/wordexp.h
+++ b/include/wordexp.h
@@ -2,6 +2,8 @@
 
 #include <posix/wordexp.h>
 
+#ifndef _ISOMAC
 libc_hidden_proto (wordfree)
+#endif
 
 #endif
diff --git a/posix/tar.h b/posix/tar.h
index 9732d67..be2961c 100644
--- a/posix/tar.h
+++ b/posix/tar.h
@@ -1,5 +1,5 @@
 /* Extended tar format from POSIX.1.
-   Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1996, 2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by David J. MacKenzie.
 
@@ -20,6 +20,9 @@
 #ifndef	_TAR_H
 #define	_TAR_H	1
 
+#include <features.h>
+
+
 /* A tar archive consists of 512-byte blocks.
    Each file in the archive has a header block followed by 0+ data blocks.
    Two blocks of NUL bytes indicate the end of the archive.  */
@@ -70,7 +73,9 @@
 /* The bits in mode: */
 #define TSUID	04000
 #define TSGID	02000
-#define TSVTX	01000
+#ifdef __USE_XOPEN
+# define TSVTX	01000
+#endif
 #define TUREAD	00400
 #define TUWRITE	00200
 #define TUEXEC	00100

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                        |  131 ++++++++++++++++++++++
 conform/Makefile                 |   12 ++-
 conform/conformtest.pl           |  220 +++++++++++++++++++++++---------------
 conform/data/aio.h-data          |    2 +-
 conform/data/arpa/inet.h-data    |    2 +-
 conform/data/assert.h-data       |    4 +
 conform/data/complex.h-data      |    8 ++-
 conform/data/cpio.h-data         |    2 +-
 conform/data/ctype.h-data        |    2 +-
 conform/data/dirent.h-data       |    2 +-
 conform/data/dlfcn.h-data        |    2 +-
 conform/data/errno.h-data        |   11 ++-
 conform/data/fcntl.h-data        |    2 +-
 conform/data/float.h-data        |   19 ++++
 conform/data/fmtmsg.h-data       |    2 +-
 conform/data/fnmatch.h-data      |    4 +-
 conform/data/ftw.h-data          |    2 +-
 conform/data/glob.h-data         |    2 +-
 conform/data/grp.h-data          |    4 +-
 conform/data/iconv.h-data        |    2 +-
 conform/data/inttypes.h-data     |    2 +
 conform/data/langinfo.h-data     |    2 +-
 conform/data/libgen.h-data       |    2 +-
 conform/data/limits.h-data       |   49 ++++++---
 conform/data/locale.h-data       |    2 +-
 conform/data/math.h-data         |   41 +++++---
 conform/data/monetary.h-data     |    2 +-
 conform/data/mqueue.h-data       |    2 +-
 conform/data/ndbm.h-data         |    2 +-
 conform/data/net/if.h-data       |    2 +-
 conform/data/netdb.h-data        |    2 +-
 conform/data/netinet/in.h-data   |    2 +-
 conform/data/nl_types.h-data     |    2 +-
 conform/data/poll.h-data         |    2 +-
 conform/data/pthread.h-data      |   28 ++++-
 conform/data/pwd.h-data          |    4 +-
 conform/data/regex.h-data        |    4 +-
 conform/data/sched.h-data        |    2 +-
 conform/data/search.h-data       |    2 +-
 conform/data/semaphore.h-data    |    4 +-
 conform/data/setjmp.h-data       |    6 +-
 conform/data/signal.h-data       |   73 ++++++++-----
 conform/data/spawn.h-data        |    2 +-
 conform/data/stdarg.h-data       |    3 +
 conform/data/stdio.h-data        |   56 ++++++++--
 conform/data/stdlib.h-data       |   81 +++++++++-----
 conform/data/string.h-data       |    6 +-
 conform/data/strings.h-data      |   18 ++--
 conform/data/stropts.h-data      |    2 +
 conform/data/sys/ipc.h-data      |    2 +-
 conform/data/sys/mman.h-data     |    2 +
 conform/data/sys/msg.h-data      |    2 +-
 conform/data/sys/resource.h-data |    2 +-
 conform/data/sys/select.h-data   |    2 +-
 conform/data/sys/sem.h-data      |    2 +-
 conform/data/sys/shm.h-data      |    2 +-
 conform/data/sys/socket.h-data   |    2 +-
 conform/data/sys/stat.h-data     |    2 +-
 conform/data/sys/statvfs.h-data  |    2 +
 conform/data/sys/time.h-data     |    2 +-
 conform/data/sys/timeb.h-data    |    2 +
 conform/data/sys/times.h-data    |    2 +
 conform/data/sys/types.h-data    |    2 +-
 conform/data/sys/uio.h-data      |    2 +-
 conform/data/sys/un.h-data       |    2 +-
 conform/data/sys/utsname.h-data  |    2 +-
 conform/data/sys/wait.h-data     |    2 +-
 conform/data/syslog.h-data       |    2 +-
 conform/data/tar.h-data          |    2 +-
 conform/data/termios.h-data      |    8 +-
 conform/data/time.h-data         |   80 ++++++++------
 conform/data/uchar.h-data        |   12 ++
 conform/data/ucontext.h-data     |    2 +
 conform/data/ulimit.h-data       |    2 +-
 conform/data/unistd.h-data       |    2 +-
 conform/data/utime.h-data        |    2 +
 conform/data/utmpx.h-data        |    2 +-
 conform/data/varargs.h-data      |    2 +
 conform/data/wchar.h-data        |   70 +++++++------
 conform/data/wctype.h-data       |   10 +-
 conform/data/wordexp.h-data      |    6 +-
 conform/run-conformtest.sh       |   30 +++++
 include/aio.h                    |    2 +
 include/assert.h                 |    4 +-
 include/ctype.h                  |    6 +-
 include/dirent.h                 |    4 +-
 include/dlfcn.h                  |    2 +
 include/fcntl.h                  |    2 +
 include/fnmatch.h                |    2 +
 include/glob.h                   |    2 +
 include/grp.h                    |    2 +
 include/libio.h                  |    2 +
 include/locale.h                 |    2 +
 include/math.h                   |    2 +
 include/net/if.h                 |    2 +
 include/netdb.h                  |    2 +
 include/netinet/in.h             |    2 +
 include/pthread.h                |    2 +
 include/pwd.h                    |    2 +
 include/regex.h                  |    2 +
 include/sched.h                  |    2 +
 include/search.h                 |    2 +
 include/setjmp.h                 |    4 +-
 include/signal.h                 |    2 +
 include/stdio.h                  |    8 +-
 include/stdlib.h                 |   10 +-
 include/string.h                 |    4 +
 include/stropts.h                |    1 +
 include/sys/cdefs.h              |   14 ++-
 include/sys/mman.h               |    2 +
 include/sys/msg.h                |    2 +
 include/sys/resource.h           |    2 +
 include/sys/select.h             |    2 +
 include/sys/socket.h             |    2 +
 include/sys/stat.h               |    2 +
 include/sys/statvfs.h            |    2 +
 include/sys/time.h               |    2 +
 include/sys/times.h              |    2 +
 include/sys/uio.h                |    2 +
 include/sys/utsname.h            |    2 +
 include/sys/wait.h               |    2 +
 include/termios.h                |    2 +
 include/time.h                   |    6 +-
 include/uchar.h                  |    1 +
 include/ulimit.h                 |    2 +
 include/unistd.h                 |    2 +
 include/utime.h                  |    2 +
 include/wchar.h                  |    2 +
 include/wctype.h                 |    4 +
 include/wordexp.h                |    2 +
 posix/tar.h                      |    9 ++-
 131 files changed, 897 insertions(+), 358 deletions(-)
 create mode 100644 conform/data/uchar.h-data
 create mode 100644 conform/run-conformtest.sh
 create mode 100644 include/stropts.h
 create mode 100644 include/uchar.h


hooks/post-receive
-- 
GNU C Library master sources


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