diff options
37 files changed, 240 insertions, 110 deletions
@@ -1,3 +1,39 @@ +2012-02-26 Ulrich Drepper <drepper@gmail.com> + + * conform/Makefile: For now ignore errors from run-conformtest. + * conform/conformtest.pl: Simplify code. Add -ansi to CFLAGS for + POSIX to avoid namespace pollution. Don't prepend headers. + * conform/data/aio.h-data: Fixes for POSIX testing. + * conform/data/fcntl.h-data: Likewise. + * conform/data/glob.h-data: Likewise. + * conform/data/grp.h-data: Likewise. + * conform/data/pthread.h-data: Likewise. + * conform/data/pwd.h-data: Likewise. + * conform/data/signal.h-data: Likewise. + * conform/data/spawn.h-data: Likewise. + * conform/data/stdio.h-data: Likewise. + * conform/data/stdlib.h-data: Likewise. + * conform/data/stropts.h-data: Likewise. + * conform/data/sys/mman.h-data: Likewise. + * conform/data/sys/stat.h-data: Likewise. + * conform/data/sys/types.h-data: Likewise. + * conform/data/sys/wait.h-data: Likewise. + * conform/data/time.h-data: Likewise. + * conform/data/unistd.h-data: Likewise. + * conform/data/utime.h-data: Likewise. + + * io/sys/stat.h: fchmod was always in POSIX. + * posix/sys/wait.h: Include <sys/resource.h> only for waitid. + * posix/unistd.h: fsync and ftruncate were in early POSIX as well. + * rt/aio.h: Define __need_timespec before including <time.h>. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Don't name siginfo_t + struct. Add forward declaration of pthread_attr_t and use it in + sigevent. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/bits/time.h: Don't let __STRICT_ANSI__ + always remove CLK_TCK definition. + 2012-02-26 Andreas Schwab <schwab@linux-m68k.org> * sysdeps/ieee754/dbl-64/k_tan.c: Replace with empty file. diff --git a/conform/Makefile b/conform/Makefile index 5d88732..d7d939e 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -30,7 +30,7 @@ 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)' \ + -$(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 f90a418..fd45a8d 100644 --- a/conform/conformtest.pl +++ b/conform/conformtest.pl @@ -32,27 +32,10 @@ if (@headers == ()) { "arpa/inet.h", "aio.h"); } -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\""; -} - -# These are the ISO C99 keywords. -@keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default', - 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', - 'if', 'inline', 'int', 'long', 'register', 'restrict', 'return', - 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', - 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while'); - -# These are symbols which are known to pollute the namespace. -@knownproblems = ('unix', 'linux', 'i386'); - $CFLAGS{"ISO"} = "-ansi"; $CFLAGS{"ISO99"} = "-std=c99"; $CFLAGS{"ISO11"} = "-std=c1x -D_ISOC11_SOURCE"; -$CFLAGS{"POSIX"} = "-D_POSIX_C_SOURCE=199912"; +$CFLAGS{"POSIX"} = "-D_POSIX_C_SOURCE=199912 -ansi"; $CFLAGS{"XPG3"} = "-D_XOPEN_SOURCE"; $CFLAGS{"XPG4"} = "-D_XOPEN_SOURCE_EXTENDED"; $CFLAGS{"UNIX98"} = "-D_XOPEN_SOURCE=500"; @@ -62,27 +45,40 @@ $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#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"; -} +# Check standard name for validity. +die "unknown standard \"$standard\"" if ($CFLAGS{$standard} eq ""); + +# 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#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"; +# } + +# These are the ISO C99 keywords. +@keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default', + 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', + 'if', 'inline', 'int', 'long', 'register', 'restrict', 'return', + 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while'); # Make a hash table from this information. while ($#keywords >= 0) { $iskeyword{pop (@keywords)} = 1; } +# These are symbols which are known to pollute the namespace. +@knownproblems = ('unix', 'linux', 'i386'); + # Make a hash table from the known problems. while ($#knownproblems >= 0) { $isknown{pop (@knownproblems)} = 1; @@ -436,7 +432,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; @@ -467,7 +463,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; @@ -987,7 +983,7 @@ while ($#headers >= 0) { compiletest ($fnamebase, "Test availability of macro $macro", "NOT PRESENT", $missing, 1); - } elsif (/^macro *([a-zA-Z0-9_]*) *([>=<]+) ([A-Za-z0-9_]*)/) { + } elsif (/^macro *([a-zA-Z0-9_]*) *([>=<!]+) ([A-Za-z0-9_]*)/) { my($macro) = "$1"; my($op) = $2; my($value) = $3; diff --git a/conform/data/aio.h-data b/conform/data/aio.h-data index b810014..d6d0acb 100644 --- a/conform/data/aio.h-data +++ b/conform/data/aio.h-data @@ -28,12 +28,12 @@ function int aio_suspend (const struct aiocb* const[], int, const struct timespe function int aio_write (struct aiocb*) function int lio_listio (int, struct aiocb *const[], int, struct sigevent*) -# if !defined POSIX +// POSIX in theory doesn't allow the header to be self contained but +// this was fixed later and we do not test for this here. allow-header fcntl.h allow-header signal.h allow-header sys/types.h allow-header time.h -# endif allow aio_* allow lio_* diff --git a/conform/data/fcntl.h-data b/conform/data/fcntl.h-data index 54eed41..4689248 100644 --- a/conform/data/fcntl.h-data +++ b/conform/data/fcntl.h-data @@ -1,4 +1,4 @@ -#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX +#if !defined ISO && !defined ISO99 && !defined ISO11 constant F_DUPFD constant F_GETFD constant F_SETFD @@ -7,8 +7,10 @@ constant F_SETFL constant F_GETLK constant F_SETLK constant F_SETLKW +#if !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98 constant F_GETOWN constant F_SETOWN +#endif constant FD_CLOEXEC @@ -16,9 +18,11 @@ constant F_RDLCK constant F_UNLCK constant F_WRLCK +#if !defined POSIX constant SEEK_SET constant SEEK_CUR constant SEEK_END +#endif constant O_CREAT constant O_EXCL @@ -37,6 +41,7 @@ constant O_RDONLY constant O_RDWR constant O_WRONLY +#if !defined POSIX constant S_IFMT constant S_IFBLK constant S_IFCHR @@ -60,9 +65,10 @@ constant S_IWOTH constant S_IXOTH constant S_ISUID constant S_ISGID -#if !defined POSIX && !defined POSIX2008 +#if !defined POSIX2008 constant S_ISVTX #endif +#endif #if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 constant POSIX_FADV_NORMAL @@ -103,7 +109,6 @@ constant O_EXEC constant O_SEARCH constant O_DIRECTORY constant O_NOFOLLOW -constant FD_CLOEXEC constant F_DUPFD_CLOEXEC constant AT_FDCWD constant AT_EACCESS diff --git a/conform/data/glob.h-data b/conform/data/glob.h-data index 23a5077..fc2c7fe 100644 --- a/conform/data/glob.h-data +++ b/conform/data/glob.h-data @@ -1,4 +1,8 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define size_t __size_t +#endif + 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 384e1ad..1edba73 100644 --- a/conform/data/grp.h-data +++ b/conform/data/grp.h-data @@ -1,4 +1,8 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define gid_t __gid_t +#endif + type {struct group} element {struct group} {char*} gr_name element {struct group} gid_t gr_gid diff --git a/conform/data/pthread.h-data b/conform/data/pthread.h-data index bf25902..4af4d05 100644 --- a/conform/data/pthread.h-data +++ b/conform/data/pthread.h-data @@ -48,10 +48,6 @@ 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 @@ -95,10 +91,14 @@ function int pthread_cond_signal (pthread_cond_t*) function int pthread_cond_timedwait (pthread_cond_t*, pthread_mutex_t*, const struct timespec*) function int pthread_cond_wait (pthread_cond_t*, pthread_mutex_t*) function int pthread_condattr_destroy (pthread_condattr_t*) +#if !defined POSIX && !defined UNIX98 && !defined XOPEN2K optional-function int pthread_condattr_getclock (const pthread_condattr_t*, clockid_t*) +#endif function int pthread_condattr_getpshared (const pthread_condattr_t*, int*) function int pthread_condattr_init (pthread_condattr_t*) +#if !defined POSIX && !defined UNIX98 && !defined XOPEN2K optional-function int pthread_condattr_setclock (pthread_condattr_t*, clockid_t) +#endif function int pthread_condattr_setpshared (pthread_condattr_t*, int) function int pthread_create (pthread_t*, const pthread_attr_t*, void *(*) (void*), void*) function int pthread_detach (pthread_t) @@ -162,7 +162,7 @@ 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 POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 function int pthread_sigmask (int, const sigset_t*, sigset_t*) # endif # if !defined POSIX diff --git a/conform/data/pwd.h-data b/conform/data/pwd.h-data index f779a69..64d617f 100644 --- a/conform/data/pwd.h-data +++ b/conform/data/pwd.h-data @@ -1,4 +1,9 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define uid_t __uid_t +# define gid_t __gid_t +#endif + type {struct passwd} element {struct passwd} {char*} pw_name element {struct passwd} uid_t pw_uid diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data index 927211b..18f1b9e 100644 --- a/conform/data/signal.h-data +++ b/conform/data/signal.h-data @@ -8,7 +8,12 @@ typed-constant SIG_IGN {void(*)(int)} type sig_atomic_t #if !defined ISO && !defined ISO99 && !defined ISO11 type sigset_t +#endif +#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX type pid_t +#elif defined POSIX +# define pid_t __pid_t +# define uid_t __uid_t #endif #if defined XOPEN2K8 || defined POSIX2008 type size_t @@ -28,7 +33,7 @@ element {struct timespec} __time_t tv_sec element {struct timespec} long tv_nsec #endif -#if defined UNIX98 || defined XOPEN2K8 || defined POSIX2008 +#if defined POSIX || defined UNIX98 || defined XOPEN2K8 || defined POSIX2008 element {union sigval} int sival_int element {union sigval} {void*} sival_ptr diff --git a/conform/data/spawn.h-data b/conform/data/spawn.h-data index 889b5bc..637f2bf 100644 --- a/conform/data/spawn.h-data +++ b/conform/data/spawn.h-data @@ -1,4 +1,4 @@ -#if !defined ISO && !defined ISO99 && !defined ISO11 +#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX type posix_spawnattr_t type posix_spawn_file_actions_t # if defined XOPEN2K8 || defined POSIX2008 diff --git a/conform/data/stdio.h-data b/conform/data/stdio.h-data index ac2dfc4..abd3a8e 100644 --- a/conform/data/stdio.h-data +++ b/conform/data/stdio.h-data @@ -56,7 +56,7 @@ function {char*} cuserid (char*) function int dprintf (int, const char*, ...) #endif function int fclose (FILE*) -#if defined XOPEN2K8 || defined POSIX2008 +#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG3 && !defined XPG4 function {FILE*} fdopen (int, const char*) #endif function int feof (FILE*) @@ -68,7 +68,7 @@ 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 +#if defined POSIX || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 function void flockfile (FILE*) #endif #if defined XOPEN2K8 || defined POSIX2008 @@ -90,14 +90,14 @@ 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 +#if defined POSIX || 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 +#if defined POSIX || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 function int getc_unlocked (FILE*) function int getchar_unlocked () #endif @@ -127,7 +127,7 @@ function {FILE*} popen (const char*, const char*) function int printf (const char*, ...) function int putc (int, FILE*) function int putchar (int) -#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 +#if defined POSIX || defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008 function int putc_unlocked (int, FILE*) function int putchar_unlocked (int) #endif @@ -159,18 +159,18 @@ function int ungetc (int, FILE*) function int vdprintf (int, const char*, va_list) #endif function int vfprintf (FILE*, const char*, va_list) -#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98 +#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98 function int vfscanf (FILE*, const char*, va_list) #endif function int vprintf (const char*, va_list) -#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98 +#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98 function int vscanf (const char*, va_list) #endif -#ifndef ISO +#if !defined ISO && !defined POSIX function int vsnprintf (char*, size_t, const char*, va_list) #endif function int vsprintf (char*, const char*, va_list) -#if !defined ISO && !defined XPG3 && !defined XPG4 && !defined UNIX98 +#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98 function int vsscanf (const char*, const char*, va_list) #endif diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data index e6abfed..f42d4a7 100644 --- a/conform/data/stdlib.h-data +++ b/conform/data/stdlib.h-data @@ -138,7 +138,7 @@ function {void*} realloc (void*, size_t) function {char*} realpath (const char*, char*) function {unsigned short int*} seed48 (unsigned short int[3]) #endif -#if !defined ISO && !defined ISO99 && !defined ISO11 +#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX function int setenv (const char*, const char*, int) #endif #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008 diff --git a/conform/data/stropts.h-data b/conform/data/stropts.h-data index 882f916..d978a1c 100644 --- a/conform/data/stropts.h-data +++ b/conform/data/stropts.h-data @@ -1,4 +1,4 @@ -#if !defined ISO && !defined ISO99 && !defined ISO11 +#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX type {struct bandinfo} element {struct bandinfo} {unsigned char} bi_pri diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data index 3392ad1..21be6ff 100644 --- a/conform/data/sys/mman.h-data +++ b/conform/data/sys/mman.h-data @@ -17,11 +17,13 @@ constant MCL_FUTURE constant MAP_FAILED +#ifndef POSIX constant POSIX_MADV_NORMAL constant POSIX_MADV_SEQUENTIAL constant POSIX_MADV_RANDOM constant POSIX_MADV_WILLNEED constant POSIX_MADV_DONTNEED +#endif optional-constant POSIX_TYPED_MEM_ALLOCATE optional-constant POSIX_TYPED_MEM_ALLOCATE_CONTIG @@ -42,7 +44,9 @@ function int msync (void*, size_t, int) function int munlock (const void*, size_t) function int munlockall (void) function int munmap (void*, size_t) +#ifndef POSIX function int posix_madvise (void*, size_t, int) +#endif optional-function int posix_mem_offset (const void*, size_t, off_t*, size_t*, int*) optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info*) optional-function int posix_typed_mem_open (const char*, int, int) diff --git a/conform/data/sys/stat.h-data b/conform/data/sys/stat.h-data index 547f607..a7db93f 100644 --- a/conform/data/sys/stat.h-data +++ b/conform/data/sys/stat.h-data @@ -1,5 +1,29 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#if !defined POSIX && !defined POSIX2008 +type blkcnt_t +type blksize_t +#endif +#ifndef POSIX +type dev_t +type ino_t +type mode_t +type nlink_t +type uid_t +type gid_t +type off_t +type time_t +#else +# define dev_t __dev_t +# define ino_t __ino_t +# define mode_t __mode_t +# define nlink_t __nlink_t +# define uid_t __uid_t +# define gid_t __gid_t +# define off_t __off_t +# define time_t __time_t +#endif + type {struct stat} element {struct stat} dev_t st_dev @@ -20,18 +44,6 @@ element {struct stat} blksize_t st_blksize element {struct stat} blkcnt_t st_blocks #endif -#if !defined POSIX && !defined POSIX2008 -type blkcnt_t -type blksize_t -#endif -type dev_t -type ino_t -type mode_t -type nlink_t -type uid_t -type gid_t -type off_t -type time_t # if defined XOPEN2K8 || defined POSIX2008 type {struct timespec} element {struct timespec} time_t tv_sec @@ -97,7 +109,9 @@ function int fstat (int, struct stat*) function int fstatat (int, const char*, struct stat*, int) function int futimens (int, const struct timespec[2]) # endif +#if !defined POSIX function int lstat (const char*, struct stat*) +#endif function int mkdir (const char*, mode_t) # if defined XOPEN2K8 || defined POSIX2008 function int mkdirat (int, const char*, mode_t) diff --git a/conform/data/sys/types.h-data b/conform/data/sys/types.h-data index 2befff5..824392d 100644 --- a/conform/data/sys/types.h-data +++ b/conform/data/sys/types.h-data @@ -1,15 +1,19 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 type blkcnt_t +#if !defined POSIX type blksize_t type clock_t type clockid_t +#endif type dev_t # if !defined POSIX type fsblkcnt_t type fsfilcnt_t # endif type gid_t +#if !defined POSIX type id_t +#endif type ino_t # if !defined POSIX && !defined POSIX2008 type key_t @@ -19,17 +23,21 @@ type nlink_t type off_t type pid_t 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 type size_t type ssize_t diff --git a/conform/data/sys/wait.h-data b/conform/data/sys/wait.h-data index 56dea06..8187669 100644 --- a/conform/data/sys/wait.h-data +++ b/conform/data/sys/wait.h-data @@ -1,4 +1,9 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define pid_t __pid_t +# define uid_t __uid_t +#endif + constant WNOHANG constant WUNTRACED @@ -20,6 +25,7 @@ constant WCONTINUED constant WNOHANG constant WNOWAIT +#if !defined POSIX type idtype_t constant P_ALL @@ -27,6 +33,7 @@ constant P_PID constant P_PGID type id_t +#endif type siginfo_t @@ -40,18 +47,22 @@ element siginfo_t int si_status element siginfo_t long si_band element siginfo_t {union sigval} si_value +#if !defined POSIX type {struct rusage} element {struct rusage} {struct timeval} ru_utime element {struct rusage} {struct timeval} ru_stime +#endif type pid_t function pid_t wait (int*) -#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 +#if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 function pid_t wait3 (int*, int, struct rusage*) #endif +#if !defined POSIX function int waitid (idtype_t, id_t, siginfo_t*, int) +#endif function pid_t waitpid (pid_t, int*, int) allow-header signal.h diff --git a/conform/data/time.h-data b/conform/data/time.h-data index 1e089d0..0deb6be 100644 --- a/conform/data/time.h-data +++ b/conform/data/time.h-data @@ -43,7 +43,7 @@ function int timespec_get (struct timespec *, int) #if !defined ISO && !defined ISO99 && !defined ISO11 # if !defined XOPEN21K && !defined XOPEN2K8 && !defined POSIX2008 -constant CLK_TCK +symbol CLK_TCK # endif constant CLOCK_PROCESS_CPUTIME_ID constant CLOCK_THREAD_CPUTIME_ID @@ -71,10 +71,14 @@ variable int getdate_err # endif function {char*} asctime_r (const struct tm*, char*) +#if !defined POSIX function int clock_getcpuclockid (pid_t, clockid_t*) +#endif function int clock_getres (clockid_t, struct timespec*) function int clock_gettime (clockid_t, struct timespec*) +#if !defined POSIX function int clock_nanosleep (clockid_t, int, const struct timespec*, struct timespec*) +#endif function int clock_settime (clockid_t, const struct timespec*) function {char*} ctime_r (const time_t*, char*) # if !defined POSIX && !defined POSIX2008 diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data index ecefa53..d23a68f 100644 --- a/conform/data/unistd.h-data +++ b/conform/data/unistd.h-data @@ -1,4 +1,11 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define uid_t __uid_t +# define gid_t __gid_t +# define off_t __off_t +# define pid_t __pid_t +#endif + optional-constant _POSIX_VERSION optional-constant _POSIX2_C_VERSION optional-constant _XOPEN_VERSION @@ -336,9 +343,11 @@ type gid_t type off_t type pid_t +#if !defined POSIX type useconds_t type intptr_t +#endif function int access (const char*, int) function {unsigned int} alarm (unsigned int) @@ -355,8 +364,8 @@ function size_t confstr (int, char*, size_t) #if !defined POSIX && !defined POSIX2008 function {char*} crypt (const char*, const char*) #endif -function {char*} ctermid (char*) #if defined XPG3 || defined XPG4 || defined UNIX98 +function {char*} ctermid (char*) function {char*} cuserid (char*) #endif function int dup (int) @@ -374,7 +383,9 @@ function void _exit (int) # if defined XOPEN2K8 || defined POSIX2008 function int faccessat (int, const char*, int, int) # endif +#if !defined POSIX function int fchown (int, uid_t, gid_t) +#endif # if defined XOPEN2K8 || defined POSIX2008 function int fchownat (int, const char*, uid_t, gid_t, int) # endif @@ -400,7 +411,9 @@ function int getgroups (int, gid_t[]) #if !defined POSIX && !defined POSIX2008 function long gethostid (void) #endif +#if !defined POSIX function int gethostname (char*, size_t) +#endif function {char*} getlogin (void) function int getlogin_r (char*, size_t) function int getopt (int, char*const[], const char*) @@ -442,14 +455,16 @@ function int pipe (int[2]) #ifndef POSIX function ssize_t pread (int, void*, size_t, off_t) #endif -#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 +#if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 function int pthread_atfork (void(*)(void), void(*)(void), void(*)(void)) #endif #ifndef POSIX function ssize_t pwrite (int, const void*, size_t, off_t) #endif function ssize_t read (int, void*, size_t) +#ifndef POSIX function ssize_t readlink (const char*, char*, size_t) +#endif # if defined XOPEN2K8 || defined POSIX2008 function ssize_t readlinkat (int, const char*, char*, size_t) # endif @@ -457,8 +472,10 @@ function int rmdir (const char*) #if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008 function {void*} sbrk (intptr_t) #endif +#ifndef POSIX function int setegid (gid_t) function int seteuid (uid_t) +#endif function int setgid (gid_t) function int setpgid (pid_t, pid_t) # if !defined POSIX && !defined POSIX2008 @@ -472,7 +489,9 @@ function {unsigned int} sleep (unsigned int) # if !defined POSIX && !defined POSIX2008 function void swab (const void*, void*, ssize_t) # endif +#ifndef POSIX function int symlink (const char*, const char*) +# endif # if defined XOPEN2K8 || defined POSIX2008 function int symlinkat (const char*, int, const char*) # endif diff --git a/conform/data/utime.h-data b/conform/data/utime.h-data index aab9039..e320165 100644 --- a/conform/data/utime.h-data +++ b/conform/data/utime.h-data @@ -1,4 +1,8 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 +#ifdef POSIX +# define time_t __time_t +#endif + type {struct utimbuf} element {struct utimbuf} time_t actime diff --git a/io/sys/stat.h b/io/sys/stat.h index 77d7ccd..1b1fd71 100644 --- a/io/sys/stat.h +++ b/io/sys/stat.h @@ -294,7 +294,7 @@ extern int lchmod (const char *__file, __mode_t __mode) #endif /* Set file access permissions of the file FD is open on to MODE. */ -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 +#if defined __USE_BSD || defined __USE_POSIX extern int fchmod (int __fd, __mode_t __mode) __THROW; #endif diff --git a/nptl/ChangeLog b/nptl/ChangeLog index f7400ff..00fc4e4 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,15 @@ +2012-02-26 Ulrich Drepper <drepper@gmail.com> + + * sysdeps/pthread/pthread.h: Define __need_timespec before including + <time.h>. + * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Name pthread_attr_t + union. + * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise. + 2012-02-21 Joseph Myers <joseph@codesourcery.com> [BZ #13695] diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h index c2eb91a..df7445e 100644 --- a/nptl/sysdeps/pthread/pthread.h +++ b/nptl/sysdeps/pthread/pthread.h @@ -21,6 +21,7 @@ #include <features.h> #include <endian.h> #include <sched.h> +#define __need_timespec #include <time.h> #include <bits/pthreadtypes.h> @@ -71,7 +72,7 @@ enum #endif -#ifdef __USE_UNIX98 +#if defined __USE_POSIX199506 || defined __USE_UNIX98 /* Mutex protocols. */ enum { diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h index 74359ff..437ef1f 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. +/* Copyright (C) 2002-2007, 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 @@ -35,7 +35,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h index b7c62f4..69bd97b 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h @@ -1,7 +1,6 @@ /* Machine-specific pthread type layouts. PowerPC version. - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003-2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -50,7 +49,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h index 3eb4c4a..d87a635 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h @@ -1,6 +1,5 @@ -/* Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2003-2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -49,7 +48,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h index 150ae74..34b0792 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h @@ -1,7 +1,5 @@ -/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. +/* Copyright (C) 2002-2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -39,7 +37,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h index 6b432c4..2cfaadb 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h @@ -1,7 +1,6 @@ /* Machine-specific pthread type layouts. SPARC version. - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003-2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -50,7 +49,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index 76b0b52..7cbb200 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -1,6 +1,5 @@ -/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. +/* Copyright (C) 2002-2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -49,7 +48,7 @@ typedef unsigned long int pthread_t; -typedef union +typedef union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; diff --git a/posix/sys/wait.h b/posix/sys/wait.h index f889ada..8983a8f 100644 --- a/posix/sys/wait.h +++ b/posix/sys/wait.h @@ -28,7 +28,6 @@ __BEGIN_DECLS #include <signal.h> -#include <sys/resource.h> /* These macros could also be defined in <stdlib.h>. */ #if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8) @@ -138,6 +137,7 @@ extern __pid_t wait (__WAIT_STATUS __stat_loc); extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options); #if defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8 +# include <sys/resource.h> # define __need_siginfo_t # include <bits/siginfo.h> /* Wait for a childing matching IDTYPE and ID to change the status and diff --git a/posix/unistd.h b/posix/unistd.h index ce43450..6f509e9 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -971,13 +971,11 @@ extern char *getpass (const char *__prompt) __nonnull ((1)); #endif /* Use BSD || X/Open. */ -#if defined __USE_BSD || defined __USE_XOPEN || defined __USE_XOPEN2K /* Make all changes done to FD actually appear on disk. This function is a cancellation point and therefore not marked with __THROW. */ extern int fsync (int __fd); -#endif /* Use BSD || X/Open || Unix98. */ #ifdef __USE_GNU @@ -1032,7 +1030,8 @@ extern int truncate64 (const char *__file, __off64_t __length) #endif /* Use BSD || X/Open Unix || POSIX 2008. */ -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K +#if defined __USE_BSD || defined __USE_POSIX199309 \ + || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K /* Truncate the file FD is open on to LENGTH bytes. */ # ifndef __USE_FILE_OFFSET64 @@ -1049,7 +1048,7 @@ extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length), extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur; # endif -#endif /* Use BSD || X/Open Unix || POSIX 2003. */ +#endif /* Use BSD || POSIX.1b || X/Open Unix || XPG6. */ #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \ @@ -25,6 +25,7 @@ #include <features.h> #include <fcntl.h> #include <signal.h> +#define __need_timespec #include <time.h> #include <sys/types.h> diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h index ecef39d..0635e2f 100644 --- a/sysdeps/unix/sysv/linux/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/bits/siginfo.h @@ -1,5 +1,5 @@ /* siginfo_t, sigevent and constants. Linux version. - Copyright (C) 1997-2002, 2003, 2011 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 2011, 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 @@ -47,7 +47,7 @@ typedef union sigval # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) # endif -typedef struct siginfo +typedef struct { int si_signo; /* Signal number. */ int si_errno; /* If non-zero, an errno value associated with @@ -269,6 +269,9 @@ enum # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) # endif +/* Forward declaration. */ +typedef union __pthread_attr pthread_attr_t; + typedef struct sigevent { sigval_t sigev_value; @@ -286,7 +289,7 @@ typedef struct sigevent struct { void (*_function) (sigval_t); /* Function to start. */ - void *_attribute; /* Really pthread_attr_t. */ + pthread_attr_t *_attribute; /* Thread attributes. */ } _sigev_thread; } _sigev_un; } sigevent_t; diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h index 977155c..7805ce7 100644 --- a/sysdeps/unix/sysv/linux/bits/time.h +++ b/sysdeps/unix/sysv/linux/bits/time.h @@ -1,5 +1,5 @@ /* System-dependent timing definitions. Linux version. - Copyright (C) 1996,1997,1999-2003,2010,2011 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1999-2003,2010,2011,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 @@ -47,7 +47,8 @@ struct timeval XSI-conformant systems. */ # define CLOCKS_PER_SEC 1000000l -# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K +# if (!defined __STRICT_ANSI__ || defined __USE_POSIX) \ + && !defined __USE_XOPEN2K /* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK presents the real value for clock ticks per second for the system. */ # include <bits/types.h> diff --git a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h index 0c4bc5d..a4a07ec 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h @@ -1,5 +1,5 @@ /* siginfo_t, sigevent and constants. S/390 version. - Copyright (C) 2001, 2002, 2003, 2009, 2011 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2009, 2011, 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 @@ -47,7 +47,7 @@ typedef union sigval # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) # endif -typedef struct siginfo +typedef struct { int si_signo; /* Signal number. */ int si_errno; /* If non-zero, an errno value associated with diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h index 772e54f..3634b55 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h @@ -1,5 +1,5 @@ /* siginfo_t, sigevent and constants. Linux/SPARC version. - Copyright (C) 1997-2002, 2003, 2011 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 2011, 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 @@ -47,7 +47,7 @@ typedef union sigval # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) # endif -typedef struct siginfo +typedef struct { int si_signo; /* Signal number. */ int si_errno; /* If non-zero, an errno value associated with |