1999-08-24 17:55:34 +00:00
|
|
|
#! /usr/bin/perl
|
|
|
|
|
Add tests for namespace for static linking.
One thing we currently try to ensure manually is that glibc is
namespace-clean for static linking; that is, if you only use features
from a particular standard (including the set of features exposed by
headers given feature test macros such as _DEFAULT_SOURCE that don't
correspond to any written standard), the library objects brought in by
the static linker will not define or use (strong) names that are
reserved to the user in that standard.
This patch implements automatic tests for this, using the same set of
standards as for the header conformance tests (it would, however, be
easy to add more standards for this testing, without them needing to
have the definitions of expected header contents for the header
tests). The tests are based on the functions declared in each header,
as extracted using GCC's -aux-info option. The following comment from
linknamespace.pl explains the caveats around this approach:
Here's an example of the output for ISO (C90) assert.h, from before my
recent fixes and whitelisting of cases that seem more complicated to
fix:
[initial] __assert_fail -> [libc.a(assert.o)] free -> [libc.a(malloc.o)] __get_nprocs -> [libc.a(getsysstats.o)] fgets_unlocked
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] fileno
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] fread_unlocked
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] ftello
[initial] __assert_fail -> [libc.a(assert.o)] free -> [libc.a(malloc.o)] malloc_info
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_default_locale_path -> [libc.a(findlocale.o)] memmem
[initial] __assert_perror_fail -> [libc.a(assert-perr.o)] __strerror_r -> [libc.a(_strerror.o)] mempcpy
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] _nl_find_domain -> [libc.a(finddomain.o)] _nl_expand_alias -> [libc.a(localealias.o)] qsort -> [libc.a(msort.o)] qsort_r
[initial] __assert_fail -> [libc.a(assert.o)] _dl_pagesize -> [libc.a(dl-support.o)] __rawmemchr -> [libc.a(rawmemchr.o)] rawmemchr
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __getcwd -> [libc.a(getcwd.o)] rewinddir
[initial] __assert_fail -> [libc.a(assert.o)] stderr
[initial] __assert_fail -> [libc.a(assert.o)] stderr -> [libc.a(stdio.o)] stdin
[initial] __assert_fail -> [libc.a(assert.o)] stderr -> [libc.a(stdio.o)] stdout
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] stpcpy
[initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] _IO_vfprintf -> [libc.a(vfprintf.o)] __printf_fp -> [libc.a(printf_fp.o)] wmemset
Of the 161 XFAILs, seven are the inevitable varargs.h and ndbm.h
failures; I think the remaining 154 mostly represent genuine bugs in
glibc that should mostly be straightforward to fix (probably rather
fewer than 154 bugs - issues generally affect multiple headers, for
multiple standards). (When fixing, of course you need to file a bug
in Bugzilla, and check for the possibility that the header
conditionals are what's incorrect - that the first listed symbol
shouldn't have been declared, or that the symbol finally brought in
should have been declared.)
* conform/GlibcConform.pm: New file.
* conform/conformtest.pl: Use GlibcConform module.
* conform/linknamespace.pl: New file.
* conform/list-header-symbols.pl: Likewise.
* conform/Makefile (linknamespace-symlists-base): New variable.
(linknamespace-symlists-tests): Likewise.
(linknamespace-header-base): Likewise.
(linknamespace-header-tests): Likewise.
(tests-special): Add new tests.
($(linknamespace-symlists-tests)): New rule.
(linknamespace-libs): New variable.
($(objpfx)symlist-stdlibs): New rule.
($(linknamespace-header-tests)): Likewise.
(test-xfail-XPG3/varargs.h/linknamespace): New variable.
(test-xfail-XPG4/varargs.h/linknamespace): Likewise.
(test-xfail-UNIX98/varargs.h/linknamespace): Likewise.
(test-xfail-XPG4/ndbm.h/linknamespace): Likewise.
(test-xfail-UNIX98/ndbm.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/ndbm.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/ndbm.h/linknamespace): Likewise.
(test-xfail-ISO/math.h/linknamespace): Likewise.
(test-xfail-ISO/signal.h/linknamespace): Likewise.
(test-xfail-ISO/stdio.h/linknamespace): Likewise.
(test-xfail-ISO/time.h/linknamespace): Likewise.
(test-xfail-ISO99/complex.h/linknamespace): Likewise.
(test-xfail-ISO99/ctype.h/linknamespace): Likewise.
(test-xfail-ISO99/math.h/linknamespace): Likewise.
(test-xfail-ISO99/signal.h/linknamespace): Likewise.
(test-xfail-ISO99/stdio.h/linknamespace): Likewise.
(test-xfail-ISO99/tgmath.h/linknamespace): Likewise.
(test-xfail-ISO11/complex.h/linknamespace): Likewise.
(test-xfail-ISO11/ctype.h/linknamespace): Likewise.
(test-xfail-ISO11/math.h/linknamespace): Likewise.
(test-xfail-ISO11/signal.h/linknamespace): Likewise.
(test-xfail-ISO11/stdio.h/linknamespace): Likewise.
(test-xfail-ISO11/tgmath.h/linknamespace): Likewise.
(test-xfail-XPG3/ctype.h/linknamespace): Likewise.
(test-xfail-XPG3/fnmatch.h/linknamespace): Likewise.
(test-xfail-XPG3/glob.h/linknamespace): Likewise.
(test-xfail-XPG3/math.h/linknamespace): Likewise.
(test-xfail-XPG3/regex.h/linknamespace): Likewise.
(test-xfail-XPG3/search.h/linknamespace): Likewise.
(test-xfail-XPG3/stdio.h/linknamespace): Likewise.
(test-xfail-XPG3/time.h/linknamespace): Likewise.
(test-xfail-XPG3/unistd.h/linknamespace): Likewise.
(test-xfail-XPG3/wordexp.h/linknamespace): Likewise.
(test-xfail-XPG4/ctype.h/linknamespace): Likewise.
(test-xfail-XPG4/fmtmsg.h/linknamespace): Likewise.
(test-xfail-XPG4/fnmatch.h/linknamespace): Likewise.
(test-xfail-XPG4/glob.h/linknamespace): Likewise.
(test-xfail-XPG4/grp.h/linknamespace): Likewise.
(test-xfail-XPG4/libgen.h/linknamespace): Likewise.
(test-xfail-XPG4/math.h/linknamespace): Likewise.
(test-xfail-XPG4/netdb.h/linknamespace): Likewise.
(test-xfail-XPG4/pwd.h/linknamespace): Likewise.
(test-xfail-XPG4/regex.h/linknamespace): Likewise.
(test-xfail-XPG4/search.h/linknamespace): Likewise.
(test-xfail-XPG4/stdio.h/linknamespace): Likewise.
(test-xfail-XPG4/stdlib.h/linknamespace): Likewise.
(test-xfail-XPG4/sys/mman.h/linknamespace): Likewise.
(test-xfail-XPG4/sys/statvfs.h/linknamespace): Likewise.
(test-xfail-XPG4/syslog.h/linknamespace): Likewise.
(test-xfail-XPG4/time.h/linknamespace): Likewise.
(test-xfail-XPG4/unistd.h/linknamespace): Likewise.
(test-xfail-XPG4/wordexp.h/linknamespace): Likewise.
(test-xfail-POSIX/aio.h/linknamespace): Likewise.
(test-xfail-POSIX/fnmatch.h/linknamespace): Likewise.
(test-xfail-POSIX/glob.h/linknamespace): Likewise.
(test-xfail-POSIX/math.h/linknamespace): Likewise.
(test-xfail-POSIX/mqueue.h/linknamespace): Likewise.
(test-xfail-POSIX/pthread.h/linknamespace): Likewise.
(test-xfail-POSIX/regex.h/linknamespace): Likewise.
(test-xfail-POSIX/sched.h/linknamespace): Likewise.
(test-xfail-POSIX/semaphore.h/linknamespace): Likewise.
(test-xfail-POSIX/sys/mman.h/linknamespace): Likewise.
(test-xfail-POSIX/time.h/linknamespace): Likewise.
(test-xfail-POSIX/unistd.h/linknamespace): Likewise.
(test-xfail-POSIX/wordexp.h/linknamespace): Likewise.
(test-xfail-UNIX98/aio.h/linknamespace): Likewise.
(test-xfail-UNIX98/ctype.h/linknamespace): Likewise.
(test-xfail-UNIX98/fmtmsg.h/linknamespace): Likewise.
(test-xfail-UNIX98/fnmatch.h/linknamespace): Likewise.
(test-xfail-UNIX98/glob.h/linknamespace): Likewise.
(test-xfail-UNIX98/grp.h/linknamespace): Likewise.
(test-xfail-UNIX98/libgen.h/linknamespace): Likewise.
(test-xfail-UNIX98/math.h/linknamespace): Likewise.
(test-xfail-UNIX98/mqueue.h/linknamespace): Likewise.
(test-xfail-UNIX98/netdb.h/linknamespace): Likewise.
(test-xfail-UNIX98/pthread.h/linknamespace): Likewise.
(test-xfail-UNIX98/pwd.h/linknamespace): Likewise.
(test-xfail-UNIX98/regex.h/linknamespace): Likewise.
(test-xfail-UNIX98/sched.h/linknamespace): Likewise.
(test-xfail-UNIX98/search.h/linknamespace): Likewise.
(test-xfail-UNIX98/semaphore.h/linknamespace): Likewise.
(test-xfail-UNIX98/stdio.h/linknamespace): Likewise.
(test-xfail-UNIX98/stdlib.h/linknamespace): Likewise.
(test-xfail-UNIX98/sys/mman.h/linknamespace): Likewise.
(test-xfail-UNIX98/sys/statvfs.h/linknamespace): Likewise.
(test-xfail-UNIX98/syslog.h/linknamespace): Likewise.
(test-xfail-UNIX98/time.h/linknamespace): Likewise.
(test-xfail-UNIX98/unistd.h/linknamespace): Likewise.
(test-xfail-UNIX98/wchar.h/linknamespace): Likewise.
(test-xfail-UNIX98/wordexp.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/aio.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/complex.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/fcntl.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/fmtmsg.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/fnmatch.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/glob.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/grp.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/libgen.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/math.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/mqueue.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/net/if.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/netdb.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/pthread.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/pwd.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/regex.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/search.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/semaphore.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/signal.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/spawn.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/stdlib.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/sys/mman.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/sys/statvfs.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/sys/wait.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/syslog.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/tgmath.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/time.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/ucontext.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/unistd.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/wordexp.h/linknamespace): Likewise.
(test-xfail-POSIX2008/aio.h/linknamespace): Likewise.
(test-xfail-POSIX2008/complex.h/linknamespace): Likewise.
(test-xfail-POSIX2008/ctype.h/linknamespace): Likewise.
(test-xfail-POSIX2008/dirent.h/linknamespace): Likewise.
(test-xfail-POSIX2008/fcntl.h/linknamespace): Likewise.
(test-xfail-POSIX2008/grp.h/linknamespace): Likewise.
(test-xfail-POSIX2008/math.h/linknamespace): Likewise.
(test-xfail-POSIX2008/mqueue.h/linknamespace): Likewise.
(test-xfail-POSIX2008/net/if.h/linknamespace): Likewise.
(test-xfail-POSIX2008/netdb.h/linknamespace): Likewise.
(test-xfail-POSIX2008/pthread.h/linknamespace): Likewise.
(test-xfail-POSIX2008/regex.h/linknamespace): Likewise.
(test-xfail-POSIX2008/semaphore.h/linknamespace): Likewise.
(test-xfail-POSIX2008/spawn.h/linknamespace): Likewise.
(test-xfail-POSIX2008/sys/mman.h/linknamespace): Likewise.
(test-xfail-POSIX2008/sys/statvfs.h/linknamespace): Likewise.
(test-xfail-POSIX2008/tgmath.h/linknamespace): Likewise.
(test-xfail-POSIX2008/time.h/linknamespace): Likewise.
(test-xfail-POSIX2008/unistd.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/aio.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/complex.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/dirent.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/fcntl.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/fmtmsg.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/grp.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/libgen.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/math.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/mqueue.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/net/if.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/netdb.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/pthread.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/pwd.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/regex.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/search.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/semaphore.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/spawn.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/sys/mman.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/sys/statvfs.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/syslog.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/tgmath.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/time.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/unistd.h/linknamespace): Likewise.
2014-11-12 22:45:25 +00:00
|
|
|
use GlibcConform;
|
2001-01-26 04:33:38 +00:00
|
|
|
use Getopt::Long;
|
2010-01-09 18:56:41 +00:00
|
|
|
use POSIX;
|
2001-01-26 04:33:38 +00:00
|
|
|
|
2012-03-21 17:10:03 +00:00
|
|
|
$standard = "XOPEN2K8";
|
1999-08-24 17:55:34 +00:00
|
|
|
$CC = "gcc";
|
2012-03-21 17:10:03 +00:00
|
|
|
$tmpdir = "/tmp";
|
2012-02-26 04:18:39 +00:00
|
|
|
GetOptions ('headers=s' => \@headers, 'standard=s' => \$standard,
|
2012-03-21 17:10:03 +00:00
|
|
|
'flags=s' => \$flags, 'cc=s' => \$CC, 'tmpdir=s' => \$tmpdir);
|
2001-01-26 04:33:38 +00:00
|
|
|
@headers = split(/,/,join(',',@headers));
|
1999-08-24 17:55:34 +00:00
|
|
|
|
|
|
|
# List of the headers we are testing.
|
2001-01-26 04:33:38 +00:00
|
|
|
if (@headers == ()) {
|
|
|
|
@headers = ("wordexp.h", "wctype.h", "wchar.h", "varargs.h", "utmpx.h",
|
2012-02-26 04:18:39 +00:00
|
|
|
"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",
|
2012-11-07 19:36:48 +00:00
|
|
|
"stdnoreturn.h", "stdlib.h", "stdio.h", "stdint.h", "stddef.h",
|
|
|
|
"stdbool.h", "stdarg.h", "stdalign.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", "fenv.h",
|
|
|
|
"fcntl.h", "errno.h", "dlfcn.h", "dirent.h", "ctype.h", "cpio.h",
|
|
|
|
"complex.h", "assert.h", "arpa/inet.h", "aio.h");
|
2001-01-26 04:33:38 +00:00
|
|
|
}
|
|
|
|
|
2012-05-01 20:05:14 +00:00
|
|
|
$CFLAGS_namespace = "$flags -fno-builtin $CFLAGS{$standard} -D_ISOMAC";
|
|
|
|
$CFLAGS = "$CFLAGS_namespace '-D__attribute__(x)='";
|
2012-02-26 04:18:39 +00:00
|
|
|
|
2012-02-26 18:17:27 +00:00
|
|
|
# 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";
|
|
|
|
# }
|
|
|
|
|
2012-05-01 20:04:44 +00:00
|
|
|
# These are the ISO C90 keywords.
|
2012-02-26 18:17:27 +00:00
|
|
|
@keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default',
|
|
|
|
'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto',
|
2012-05-01 20:04:44 +00:00
|
|
|
'if', 'int', 'long', 'register', 'return',
|
2012-02-26 18:17:27 +00:00
|
|
|
'short', 'signed', 'sizeof', 'static', 'struct', 'switch',
|
|
|
|
'typedef', 'union', 'unsigned', 'void', 'volatile', 'while');
|
2012-05-01 20:04:44 +00:00
|
|
|
if ($CFLAGS{$standard} =~ /-std=(c99|c1x)/) {
|
|
|
|
push (@keywords, 'inline', 'restrict');
|
|
|
|
}
|
1999-08-26 06:29:56 +00:00
|
|
|
|
2001-01-25 09:33:04 +00:00
|
|
|
# Make a hash table from this information.
|
|
|
|
while ($#keywords >= 0) {
|
1999-08-24 17:55:34 +00:00
|
|
|
$iskeyword{pop (@keywords)} = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$verbose = 1;
|
|
|
|
|
|
|
|
$total = 0;
|
|
|
|
$skipped = 0;
|
|
|
|
$errors = 0;
|
|
|
|
|
|
|
|
|
|
|
|
sub poorfnmatch {
|
|
|
|
my($pattern, $string) = @_;
|
|
|
|
my($strlen) = length ($string);
|
|
|
|
my($res);
|
|
|
|
|
|
|
|
if (substr ($pattern, 0, 1) eq '*') {
|
|
|
|
my($patlen) = length ($pattern) - 1;
|
|
|
|
$res = ($strlen >= $patlen
|
|
|
|
&& substr ($pattern, -$patlen, $patlen) eq substr ($string, -$patlen, $patlen));
|
|
|
|
} elsif (substr ($pattern, -1, 1) eq '*') {
|
2012-02-26 04:18:39 +00:00
|
|
|
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));
|
|
|
|
}
|
1999-08-24 17:55:34 +00:00
|
|
|
} else {
|
|
|
|
$res = $pattern eq $string;
|
|
|
|
}
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
sub compiletest
|
|
|
|
{
|
2001-01-25 19:14:31 +00:00
|
|
|
my($fnamebase, $msg, $errmsg, $skip, $optional) = @_;
|
1999-08-24 17:55:34 +00:00
|
|
|
my($result) = $skip;
|
|
|
|
my($printlog) = 0;
|
|
|
|
|
|
|
|
++$total;
|
|
|
|
printf (" $msg...");
|
|
|
|
|
|
|
|
if ($skip != 0) {
|
|
|
|
++$skipped;
|
|
|
|
printf (" SKIP\n");
|
|
|
|
} else {
|
2012-02-26 04:18:39 +00:00
|
|
|
$ret = system "$CC $CFLAGS -c $fnamebase.c -o $fnamebase.o > $fnamebase.out 2>&1";
|
1999-08-24 17:55:34 +00:00
|
|
|
if ($ret != 0) {
|
2001-01-25 19:14:31 +00:00
|
|
|
if ($optional != 0) {
|
|
|
|
printf (" $errmsg\n");
|
|
|
|
$result = 1;
|
|
|
|
} else {
|
|
|
|
printf (" FAIL\n");
|
|
|
|
if ($verbose != 0) {
|
|
|
|
printf (" $errmsg Compiler message:\n");
|
|
|
|
$printlog = 1;
|
|
|
|
}
|
|
|
|
++$errors;
|
|
|
|
$result = 1;
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
printf (" OK\n");
|
|
|
|
if ($verbose > 1 && -s "$fnamebase.out") {
|
|
|
|
# We print all warnings issued.
|
|
|
|
$printlog = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($printlog != 0) {
|
|
|
|
printf (" " . "-" x 71 . "\n");
|
|
|
|
open (MESSAGE, "< $fnamebase.out");
|
|
|
|
while (<MESSAGE>) {
|
|
|
|
printf (" %s", $_);
|
|
|
|
}
|
|
|
|
close (MESSAGE);
|
|
|
|
printf (" " . "-" x 71 . "\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
unlink "$fnamebase.c";
|
|
|
|
unlink "$fnamebase.o";
|
|
|
|
unlink "$fnamebase.out";
|
|
|
|
|
|
|
|
$result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
sub runtest
|
|
|
|
{
|
|
|
|
my($fnamebase, $msg, $errmsg, $skip) = @_;
|
|
|
|
my($result) = $skip;
|
|
|
|
my($printlog) = 0;
|
|
|
|
|
|
|
|
++$total;
|
|
|
|
printf (" $msg...");
|
|
|
|
|
|
|
|
if ($skip != 0) {
|
|
|
|
++$skipped;
|
|
|
|
printf (" SKIP\n");
|
|
|
|
} else {
|
2012-02-26 04:18:39 +00:00
|
|
|
$ret = system "$CC $CFLAGS -o $fnamebase $fnamebase.c > $fnamebase.out 2>&1";
|
1999-08-24 17:55:34 +00:00
|
|
|
if ($ret != 0) {
|
|
|
|
printf (" FAIL\n");
|
|
|
|
if ($verbose != 0) {
|
|
|
|
printf (" $errmsg Compiler message:\n");
|
|
|
|
$printlog = 1;
|
|
|
|
}
|
|
|
|
++$errors;
|
|
|
|
$result = 1;
|
|
|
|
} else {
|
|
|
|
# Now run the program. If the exit code is not zero something is wrong.
|
|
|
|
$result = system "$fnamebase > $fnamebase.out2 2>&1";
|
|
|
|
if ($result == 0) {
|
|
|
|
printf (" OK\n");
|
|
|
|
if ($verbose > 1 && -s "$fnamebase.out") {
|
|
|
|
# We print all warnings issued.
|
|
|
|
$printlog = 1;
|
|
|
|
system "cat $fnamebase.out2 >> $fnamebase.out";
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
printf (" FAIL\n");
|
2001-01-26 08:06:53 +00:00
|
|
|
++$errors;
|
1999-08-24 17:55:34 +00:00
|
|
|
$printlog = 1;
|
|
|
|
unlink "$fnamebase.out";
|
|
|
|
rename "$fnamebase.out2", "$fnamebase.out";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($printlog != 0) {
|
|
|
|
printf (" " . "-" x 71 . "\n");
|
|
|
|
open (MESSAGE, "< $fnamebase.out");
|
|
|
|
while (<MESSAGE>) {
|
|
|
|
printf (" %s", $_);
|
|
|
|
}
|
|
|
|
close (MESSAGE);
|
|
|
|
printf (" " . "-" x 71 . "\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
unlink "$fnamebase";
|
|
|
|
unlink "$fnamebase.c";
|
|
|
|
unlink "$fnamebase.o";
|
|
|
|
unlink "$fnamebase.out";
|
|
|
|
unlink "$fnamebase.out2";
|
|
|
|
|
|
|
|
$result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
sub newtoken {
|
2001-01-25 09:33:04 +00:00
|
|
|
my($token, @allow) = @_;
|
1999-08-24 17:55:34 +00:00
|
|
|
my($idx);
|
|
|
|
|
2001-01-25 09:33:04 +00:00
|
|
|
return if ($token =~ /^[0-9_]/ || $iskeyword{$token});
|
2000-02-23 06:02:09 +00:00
|
|
|
|
1999-08-24 17:55:34 +00:00
|
|
|
for ($idx = 0; $idx <= $#allow; ++$idx) {
|
2001-01-25 09:33:04 +00:00
|
|
|
return if (poorfnmatch ($allow[$idx], $token));
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
2013-09-04 20:47:21 +00:00
|
|
|
|
|
|
|
$errors{$token} = 1;
|
2001-08-18 11:55:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
sub removetoken {
|
|
|
|
my($token) = @_;
|
|
|
|
my($idx);
|
|
|
|
|
|
|
|
return if ($token =~ /^[0-9_]/ || $iskeyword{$token});
|
|
|
|
|
|
|
|
if (exists $errors{$token}) {
|
|
|
|
undef $errors{$token};
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
sub checknamespace {
|
|
|
|
my($h, $fnamebase, @allow) = @_;
|
|
|
|
|
|
|
|
++$total;
|
|
|
|
|
|
|
|
# Generate a program to get the contents of this header.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
2001-08-18 11:55:52 +00:00
|
|
|
undef %errors;
|
2012-05-01 20:05:14 +00:00
|
|
|
open (CONTENT, "$CC $CFLAGS_namespace -E $fnamebase.c -P -Wp,-dN | sed -e '/^# [1-9]/d' -e '/^[[:space:]]*\$/d' |");
|
2001-01-25 02:44:19 +00:00
|
|
|
loop: while (<CONTENT>) {
|
1999-08-24 17:55:34 +00:00
|
|
|
chop;
|
|
|
|
if (/^#define (.*)/) {
|
2001-01-25 09:33:04 +00:00
|
|
|
newtoken ($1, @allow);
|
2001-08-18 11:55:52 +00:00
|
|
|
} elsif (/^#undef (.*)/) {
|
|
|
|
removetoken ($1);
|
1999-08-24 17:55:34 +00:00
|
|
|
} else {
|
|
|
|
# We have to tokenize the line.
|
|
|
|
my($str) = $_;
|
|
|
|
my($index) = 0;
|
|
|
|
my($len) = length ($str);
|
|
|
|
|
|
|
|
foreach $token (split(/[^a-zA-Z0-9_]/, $str)) {
|
|
|
|
if ($token ne "") {
|
2001-01-25 09:33:04 +00:00
|
|
|
newtoken ($token, @allow);
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
close (CONTENT);
|
|
|
|
unlink "$fnamebase.c";
|
2001-08-18 11:55:52 +00:00
|
|
|
$realerror = 0;
|
|
|
|
if ($#errors != 0) {
|
2001-08-23 04:34:36 +00:00
|
|
|
# Sort the output list so it's easier to compare results with diff.
|
|
|
|
foreach $f (sort keys(%errors)) {
|
2001-08-18 11:55:52 +00:00
|
|
|
if ($errors{$f} == 1) {
|
|
|
|
if ($realerror == 0) {
|
|
|
|
printf ("FAIL\n " . "-" x 72 . "\n");
|
|
|
|
$realerror = 1;
|
|
|
|
++$errors;
|
|
|
|
}
|
|
|
|
printf (" Namespace violation: \"%s\"\n", $f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf (" " . "-" x 72 . "\n") if ($realerror != 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($realerror == 0) {
|
2012-02-26 04:18:39 +00:00
|
|
|
printf ("OK\n");
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
while ($#headers >= 0) {
|
|
|
|
my($h) = pop (@headers);
|
2000-02-25 09:00:58 +00:00
|
|
|
my($hf) = $h;
|
|
|
|
$hf =~ s|/|-|;
|
|
|
|
my($fnamebase) = "$tmpdir/$hf-test";
|
2012-02-26 04:18:39 +00:00
|
|
|
my($missing) = 1;
|
1999-08-24 17:55:34 +00:00
|
|
|
my(@allow) = ();
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
my(@allowheader) = ();
|
2001-01-26 02:42:11 +00:00
|
|
|
my(%seenheader) = ();
|
1999-08-26 06:29:56 +00:00
|
|
|
my($prepend) = $mustprepend{$h};
|
2012-02-26 04:18:39 +00:00
|
|
|
my($test_exist) = 1;
|
1999-08-24 17:55:34 +00:00
|
|
|
|
|
|
|
printf ("Testing <$h>\n");
|
|
|
|
printf ("----------" . "-" x length ($h) . "\n");
|
|
|
|
|
2014-03-18 13:54:04 +00:00
|
|
|
open (CONTROL, "$CC -E -D$standard -std=c99 -x c data/$h-data |");
|
1999-08-24 17:55:34 +00:00
|
|
|
control: while (<CONTROL>) {
|
|
|
|
chop;
|
|
|
|
next control if (/^#/);
|
2000-05-02 18:18:59 +00:00
|
|
|
next control if (/^[ ]*$/);
|
1999-08-24 17:55:34 +00:00
|
|
|
|
2012-02-26 04:18:39 +00:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2012-05-01 20:00:56 +00:00
|
|
|
my($optional) = 0;
|
|
|
|
if (/^optional-/) {
|
|
|
|
s/^optional-//;
|
|
|
|
$optional = 1;
|
|
|
|
}
|
2001-01-25 09:33:04 +00:00
|
|
|
if (/^element *({([^}]*)}|([^{ ]*)) *({([^}]*)}|([^{ ]*)) *([A-Za-z0-9_]*) *(.*)/) {
|
1999-08-24 17:55:34 +00:00
|
|
|
my($struct) = "$2$3";
|
|
|
|
my($type) = "$5$6";
|
|
|
|
my($member) = "$7";
|
|
|
|
my($rest) = "$8";
|
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $member;
|
|
|
|
|
|
|
|
# Generate a program to test for the availability of this member.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
1999-08-26 06:29:56 +00:00
|
|
|
print TESTFILE "$prepend";
|
1999-08-24 17:55:34 +00:00
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "$struct a;\n";
|
|
|
|
print TESTFILE "$struct b;\n";
|
|
|
|
print TESTFILE "extern void xyzzy (__typeof__ (&b.$member), __typeof__ (&a.$member), unsigned);\n";
|
|
|
|
print TESTFILE "void foobarbaz (void) {\n";
|
|
|
|
print TESTFILE " xyzzy (&a.$member, &b.$member, sizeof (a.$member));\n";
|
|
|
|
print TESTFILE "}\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = compiletest ($fnamebase, "Testing for member $member",
|
2012-05-01 20:00:56 +00:00
|
|
|
($optional
|
|
|
|
? "NOT AVAILABLE."
|
|
|
|
: "Member \"$member\" not available."), $res,
|
|
|
|
$optional);
|
2001-01-27 05:30:29 +00:00
|
|
|
|
2012-05-01 20:00:56 +00:00
|
|
|
if ($res == 0 || $missing != 0 || !$optional) {
|
2001-01-27 05:30:29 +00:00
|
|
|
# Test the types of the members.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "$struct a;\n";
|
|
|
|
print TESTFILE "extern $type b$rest;\n";
|
|
|
|
print TESTFILE "extern __typeof__ (a.$member) b;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
compiletest ($fnamebase, "Testing for type of member $member",
|
|
|
|
"Member \"$member\" does not have the correct type.",
|
|
|
|
$res, 0);
|
|
|
|
}
|
2014-03-07 03:21:04 +00:00
|
|
|
} elsif (/^(macro|constant|macro-constant|macro-int-constant) +([a-zA-Z0-9_]*) *(?:{([^}]*)} *)?(?:([>=<!]+) ([A-Za-z0-9_\\'-]*))?/) {
|
2012-05-01 20:02:48 +00:00
|
|
|
my($symbol_type) = $1;
|
|
|
|
my($symbol) = $2;
|
|
|
|
my($type) = $3;
|
|
|
|
my($op) = $4;
|
|
|
|
my($value) = $5;
|
2000-05-02 18:18:59 +00:00
|
|
|
my($res) = $missing;
|
2012-05-01 20:02:48 +00:00
|
|
|
my($mres) = $missing;
|
|
|
|
my($cres) = $missing;
|
2000-05-02 18:18:59 +00:00
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
2012-05-01 20:02:48 +00:00
|
|
|
push @allow, $symbol;
|
2000-05-02 18:18:59 +00:00
|
|
|
|
2012-05-01 20:02:48 +00:00
|
|
|
if ($symbol_type =~ /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 $symbol\n";
|
|
|
|
print TESTFILE "# error \"Macro $symbol not defined\"\n";
|
|
|
|
print TESTFILE "#endif\n";
|
|
|
|
close (TESTFILE);
|
2000-05-02 18:18:59 +00:00
|
|
|
|
2012-05-01 20:02:48 +00:00
|
|
|
$mres = compiletest ($fnamebase, "Test availability of macro $symbol",
|
|
|
|
($optional
|
|
|
|
? "NOT PRESENT"
|
|
|
|
: "Macro \"$symbol\" is not available."), $res,
|
|
|
|
$optional);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($symbol_type =~ /constant/) {
|
|
|
|
# Generate a program to test for the availability of this constant.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "__typeof__ ($symbol) a = $symbol;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$cres = compiletest ($fnamebase, "Testing for constant $symbol",
|
|
|
|
($optional
|
|
|
|
? "NOT PRESENT"
|
|
|
|
: "Constant \"$symbol\" not available."), $res,
|
|
|
|
$optional);
|
|
|
|
}
|
|
|
|
|
|
|
|
$res = $res || $mres || $cres;
|
2000-05-02 18:18:59 +00:00
|
|
|
|
2012-05-01 20:03:42 +00:00
|
|
|
if ($symbol_type eq "macro-int-constant" && ($res == 0 || !$optional)) {
|
|
|
|
# Test that the symbol is usable in #if.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "#if $symbol < 0\n";
|
|
|
|
print TESTFILE "# define conformtest_negative 1\n";
|
|
|
|
my($s) = "0";
|
|
|
|
for (my $i = 0; $i < 63; $i++) {
|
|
|
|
print TESTFILE "# if $symbol & (1LL << $i)\n";
|
|
|
|
print TESTFILE "# define conformtest_bit_$i 0LL\n";
|
|
|
|
print TESTFILE "# else\n";
|
|
|
|
print TESTFILE "# define conformtest_bit_$i (1LL << $i)\n";
|
|
|
|
print TESTFILE "# endif\n";
|
|
|
|
$s .= "|conformtest_bit_$i";
|
|
|
|
}
|
|
|
|
print TESTFILE "# define conformtest_value ~($s)\n";
|
|
|
|
print TESTFILE "#else\n";
|
|
|
|
print TESTFILE "# define conformtest_negative 0\n";
|
|
|
|
$s = "0";
|
|
|
|
for (my $i = 0; $i < 64; $i++) {
|
|
|
|
print TESTFILE "# if $symbol & (1ULL << $i)\n";
|
|
|
|
print TESTFILE "# define conformtest_bit_$i (1ULL << $i)\n";
|
|
|
|
print TESTFILE "# else\n";
|
|
|
|
print TESTFILE "# define conformtest_bit_$i 0ULL\n";
|
|
|
|
print TESTFILE "# endif\n";
|
|
|
|
$s .= "|conformtest_bit_$i";
|
|
|
|
}
|
|
|
|
print TESTFILE "# define conformtest_value ($s)\n";
|
|
|
|
print TESTFILE "#endif\n";
|
|
|
|
print TESTFILE "int main (void) { return !((($symbol < 0) == conformtest_negative) && ($symbol == conformtest_value)); }\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
runtest ($fnamebase, "Testing for #if usability of symbol $symbol",
|
|
|
|
"Symbol \"$symbol\" not usable in #if.", $res);
|
|
|
|
}
|
|
|
|
|
2012-05-01 20:01:48 +00:00
|
|
|
if (defined ($type) && ($res == 0 || !$optional)) {
|
2012-05-01 20:02:48 +00:00
|
|
|
# Test the type of the symbol.
|
2000-05-02 18:18:59 +00:00
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
2012-05-01 20:03:15 +00:00
|
|
|
if ($type =~ /^promoted:/) {
|
|
|
|
$type =~ s/^promoted://;
|
|
|
|
print TESTFILE "__typeof__ (($type) 0 + ($type) 0) a;\n";
|
|
|
|
} else {
|
|
|
|
print TESTFILE "__typeof__ (($type) 0) a;\n";
|
|
|
|
}
|
2012-05-01 20:02:48 +00:00
|
|
|
print TESTFILE "extern __typeof__ ($symbol) a;\n";
|
2000-05-02 18:18:59 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
2012-05-01 20:02:48 +00:00
|
|
|
compiletest ($fnamebase, "Testing for type of symbol $symbol",
|
|
|
|
"Symbol \"$symbol\" does not have the correct type.",
|
2012-05-01 20:01:48 +00:00
|
|
|
$res, 0);
|
2000-05-02 18:18:59 +00:00
|
|
|
}
|
|
|
|
|
2012-05-01 20:01:48 +00:00
|
|
|
if (defined ($op) && ($res == 0 || !$optional)) {
|
2012-05-01 20:02:48 +00:00
|
|
|
# Generate a program to test for the value of this symbol.
|
2000-02-23 06:02:09 +00:00
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
2012-05-01 20:01:48 +00:00
|
|
|
# Negate the value since 0 means ok
|
2012-05-01 20:02:48 +00:00
|
|
|
print TESTFILE "int main (void) { return !($symbol $op $value); }\n";
|
2000-02-23 06:02:09 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
2012-05-01 20:02:48 +00:00
|
|
|
$res = runtest ($fnamebase, "Testing for value of symbol $symbol",
|
|
|
|
"Symbol \"$symbol\" has not the right value.", $res);
|
2000-02-23 06:02:09 +00:00
|
|
|
}
|
2012-02-26 04:18:39 +00:00
|
|
|
} elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
|
2001-01-27 19:45:21 +00:00
|
|
|
my($symbol) = $1;
|
|
|
|
my($value) = $2;
|
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $symbol;
|
|
|
|
|
|
|
|
# Generate a program to test for the availability of this constant.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "void foobarbaz (void) {\n";
|
|
|
|
print TESTFILE "__typeof__ ($symbol) a = $symbol;\n";
|
|
|
|
print TESTFILE "}\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = compiletest ($fnamebase, "Testing for symbol $symbol",
|
|
|
|
"Symbol \"$symbol\" 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";
|
|
|
|
print TESTFILE "int main (void) { return $symbol != $value; }\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = runtest ($fnamebase, "Testing for value of symbol $symbol",
|
|
|
|
"Symbol \"$symbol\" has not the right value.", $res);
|
|
|
|
}
|
1999-08-24 17:55:34 +00:00
|
|
|
} elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) {
|
|
|
|
my($type) = "$2$3";
|
2001-01-27 19:28:32 +00:00
|
|
|
my($maybe_opaque) = 0;
|
1999-08-24 17:55:34 +00:00
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
if ($type =~ /^struct *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} elsif ($type =~ /^union *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} else {
|
|
|
|
push @allow, $type;
|
2001-01-27 19:28:32 +00:00
|
|
|
$maybe_opaque = 1;
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
|
2001-01-28 09:37:21 +00:00
|
|
|
# Generate a program to test for the availability of this type.
|
1999-08-24 17:55:34 +00:00
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
2001-02-02 06:19:24 +00:00
|
|
|
print TESTFILE "$prepend";
|
1999-08-24 17:55:34 +00:00
|
|
|
print TESTFILE "#include <$h>\n";
|
2001-01-27 19:28:32 +00:00
|
|
|
if ($maybe_opaque == 1) {
|
|
|
|
print TESTFILE "$type *a;\n";
|
|
|
|
} else {
|
|
|
|
print TESTFILE "$type a;\n";
|
|
|
|
}
|
1999-08-24 17:55:34 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
2010-01-09 18:56:41 +00:00
|
|
|
compiletest ($fnamebase, "Testing for type $type",
|
2012-05-01 20:00:56 +00:00
|
|
|
($optional
|
|
|
|
? "NOT AVAILABLE"
|
|
|
|
: "Type \"$type\" not available."), $missing, $optional);
|
2010-01-09 18:56:41 +00:00
|
|
|
} elsif (/^tag *({([^}]*)|([a-zA-Z0-9_]*))/) {
|
|
|
|
my($type) = "$2$3";
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
if ($type =~ /^struct *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} elsif ($type =~ /^union *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} else {
|
|
|
|
push @allow, $type;
|
|
|
|
}
|
|
|
|
|
|
|
|
# Generate a program to test for the availability of this type.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "$type;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
1999-08-24 17:55:34 +00:00
|
|
|
compiletest ($fnamebase, "Testing for type $type",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Type \"$type\" not available.", $missing, 0);
|
2012-05-01 20:00:56 +00:00
|
|
|
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
|
2001-01-27 19:28:32 +00:00
|
|
|
my($rettype) = "$2$3";
|
|
|
|
my($fname) = "$4";
|
|
|
|
my($args) = "$5";
|
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $fname;
|
|
|
|
|
|
|
|
# Generate a program to test for availability of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
|
|
|
print TESTFILE "$rettype (*(*foobarbaz) $args = $fname;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = compiletest ($fnamebase, "Test availability of function $fname",
|
2012-05-01 20:00:56 +00:00
|
|
|
($optional
|
|
|
|
? "NOT AVAILABLE"
|
|
|
|
: "Function \"$fname\" is not available."), $res,
|
|
|
|
$optional);
|
2001-01-27 19:28:32 +00:00
|
|
|
|
2012-05-01 20:00:56 +00:00
|
|
|
if ($res == 0 || $missing == 1 || !$optional) {
|
2001-01-27 19:28:32 +00:00
|
|
|
# Generate a program to test for the type of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
|
|
|
print TESTFILE "extern $rettype (*(*foobarbaz) $args;\n";
|
|
|
|
print TESTFILE "extern __typeof__ (&$fname) foobarbaz;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
compiletest ($fnamebase, "Test for type of function $fname",
|
|
|
|
"Function \"$fname\" has incorrect type.", $res, 0);
|
|
|
|
}
|
2012-05-01 20:00:56 +00:00
|
|
|
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
|
2001-01-27 19:28:32 +00:00
|
|
|
my($rettype) = "$2$3";
|
|
|
|
my($fname) = "$4";
|
|
|
|
my($args) = "$5";
|
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $fname;
|
|
|
|
|
|
|
|
# Generate a program to test for availability of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
|
|
|
print TESTFILE "$rettype (*foobarbaz) $args = $fname;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = compiletest ($fnamebase, "Test availability of function $fname",
|
2012-05-01 20:00:56 +00:00
|
|
|
($optional
|
|
|
|
? "NOT AVAILABLE"
|
|
|
|
: "Function \"$fname\" is not available."), $res,
|
|
|
|
$optional);
|
2001-01-27 19:28:32 +00:00
|
|
|
|
2012-05-01 20:00:56 +00:00
|
|
|
if ($res == 0 || $missing != 0 || !$optional) {
|
2001-01-27 19:28:32 +00:00
|
|
|
# Generate a program to test for the type of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
|
|
|
print TESTFILE "extern $rettype (*foobarbaz) $args;\n";
|
|
|
|
print TESTFILE "extern __typeof__ (&$fname) foobarbaz;\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
compiletest ($fnamebase, "Test for type of function $fname",
|
|
|
|
"Function \"$fname\" has incorrect type.", $res, 0);
|
|
|
|
}
|
2001-01-28 05:38:29 +00:00
|
|
|
} elsif (/^variable *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) *(.*)/) {
|
2000-02-23 06:02:09 +00:00
|
|
|
my($type) = "$2$3";
|
|
|
|
my($vname) = "$4";
|
2001-01-28 05:38:29 +00:00
|
|
|
my($rest) = "$5";
|
2000-02-23 06:02:09 +00:00
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $vname;
|
|
|
|
|
|
|
|
# Generate a program to test for availability of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
2001-01-28 05:38:29 +00:00
|
|
|
print TESTFILE "typedef $type xyzzy$rest;\n";
|
|
|
|
print TESTFILE "$xyzzy *foobarbaz = &$vname;\n";
|
2000-02-23 06:02:09 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = compiletest ($fnamebase, "Test availability of variable $vname",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Variable \"$vname\" is not available.", $res, 0);
|
2000-02-23 06:02:09 +00:00
|
|
|
|
|
|
|
# Generate a program to test for the type of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# print TESTFILE "#undef $fname\n";
|
2001-01-28 05:38:29 +00:00
|
|
|
print TESTFILE "extern $type $vname$rest;\n";
|
2000-02-23 06:02:09 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
compiletest ($fnamebase, "Test for type of variable $fname",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Variable \"$vname\" has incorrect type.", $res, 0);
|
2000-02-23 06:02:09 +00:00
|
|
|
} elsif (/^macro-function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
|
|
|
|
my($rettype) = "$2$3";
|
|
|
|
my($fname) = "$4";
|
|
|
|
my($args) = "$5";
|
|
|
|
my($res) = $missing;
|
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
push @allow, $fname;
|
|
|
|
|
|
|
|
# Generate a program to test for availability of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "#ifndef $fname\n";
|
|
|
|
print TESTFILE "$rettype (*foobarbaz) $args = $fname;\n";
|
|
|
|
print TESTFILE "#endif\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
2012-02-26 04:18:39 +00:00
|
|
|
$res = compiletest ($fnamebase, "Test availability of macro $fname",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Function \"$fname\" is not available.", $res, 0);
|
2000-02-23 06:02:09 +00:00
|
|
|
|
|
|
|
# Generate a program to test for the type of this function.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
print TESTFILE "#ifndef $fname\n";
|
|
|
|
print TESTFILE "extern $rettype (*foobarbaz) $args;\n";
|
|
|
|
print TESTFILE "extern __typeof__ (&$fname) foobarbaz;\n";
|
|
|
|
print TESTFILE "#endif\n";
|
|
|
|
close (TESTFILE);
|
|
|
|
|
2012-02-26 04:18:39 +00:00
|
|
|
compiletest ($fnamebase, "Test for type of macro $fname",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Function \"$fname\" has incorrect type.", $res, 0);
|
2001-01-26 08:46:20 +00:00
|
|
|
} elsif (/^macro-str *([^ ]*) *(\".*\")/) {
|
2000-05-02 18:18:59 +00:00
|
|
|
# The above regex doesn't handle a \" in a string.
|
|
|
|
my($macro) = "$1";
|
|
|
|
my($string) = "$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);
|
|
|
|
|
|
|
|
compiletest ($fnamebase, "Test availability of macro $macro",
|
2001-01-25 19:14:31 +00:00
|
|
|
"Macro \"$macro\" is not available.", $missing, 0);
|
2000-05-02 18:18:59 +00:00
|
|
|
|
|
|
|
# Generate a program to test for the value of this macro.
|
|
|
|
open (TESTFILE, ">$fnamebase.c");
|
|
|
|
print TESTFILE "$prepend";
|
|
|
|
print TESTFILE "#include <$h>\n";
|
|
|
|
# We can't include <string.h> here.
|
|
|
|
print TESTFILE "extern int (strcmp)(const char *, const char *);\n";
|
2001-01-26 08:46:20 +00:00
|
|
|
print TESTFILE "int main (void) { return (strcmp) ($macro, $string) != 0;}\n";
|
2000-05-02 18:18:59 +00:00
|
|
|
close (TESTFILE);
|
|
|
|
|
|
|
|
$res = runtest ($fnamebase, "Testing for value of macro $macro",
|
|
|
|
"Macro \"$macro\" has not the right value.", $res);
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
} elsif (/^allow-header *(.*)/) {
|
|
|
|
my($pattern) = $1;
|
2001-01-26 02:42:11 +00:00
|
|
|
if ($seenheader{$pattern} != 1) {
|
|
|
|
push @allowheader, $pattern;
|
|
|
|
$seenheader{$pattern} = 1;
|
|
|
|
}
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
next control;
|
2001-01-25 02:57:58 +00:00
|
|
|
} elsif (/^allow *(.*)/) {
|
|
|
|
my($pattern) = $1;
|
|
|
|
push @allow, $pattern;
|
|
|
|
next control;
|
1999-08-24 17:55:34 +00:00
|
|
|
} else {
|
|
|
|
# printf ("line is `%s'\n", $_);
|
|
|
|
next control;
|
|
|
|
}
|
|
|
|
|
|
|
|
printf ("\n");
|
|
|
|
}
|
|
|
|
close (CONTROL);
|
|
|
|
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
# Read the data files for the header files which are allowed to be included.
|
|
|
|
while ($#allowheader >= 0) {
|
|
|
|
my($ah) = pop @allowheader;
|
|
|
|
|
2012-11-07 19:36:48 +00:00
|
|
|
open (ALLOW, "$CC -E -D$standard -x c data/$ah-data |");
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
acontrol: while (<ALLOW>) {
|
2010-01-13 00:43:00 +00:00
|
|
|
chop;
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
next acontrol if (/^#/);
|
2000-05-02 18:18:59 +00:00
|
|
|
next acontrol if (/^[ ]*$/);
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
|
|
|
|
if (/^element *({([^}]*)}|([^ ]*)) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*) *(.*)/) {
|
|
|
|
push @allow, $7;
|
2012-05-01 20:03:42 +00:00
|
|
|
} elsif (/^(macro|constant|macro-constant|macro-int-constant) +([a-zA-Z0-9_]*) *(?:{([^}]*)} *)?(?:([>=<!]+) ([A-Za-z0-9_-]*))?/) {
|
2013-09-04 20:47:21 +00:00
|
|
|
push @allow, $2;
|
2010-01-12 20:18:08 +00:00
|
|
|
} elsif (/^(type|tag) *({([^}]*)|([a-zA-Z0-9_]*))/) {
|
|
|
|
my($type) = "$3$4";
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
|
|
|
|
# Remember that this name is allowed.
|
|
|
|
if ($type =~ /^struct *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} elsif ($type =~ /^union *(.*)/) {
|
|
|
|
push @allow, $1;
|
|
|
|
} else {
|
|
|
|
push @allow, $type;
|
|
|
|
}
|
|
|
|
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
|
|
|
|
push @allow, $4;
|
|
|
|
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
|
|
|
|
push @allow, $4;
|
|
|
|
} elsif (/^variable *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*)/) {
|
|
|
|
push @allow, $4;
|
|
|
|
} elsif (/^macro-function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
|
|
|
|
push @allow, $4;
|
2012-05-01 19:58:06 +00:00
|
|
|
} elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
|
|
|
|
push @allow, $1;
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
} elsif (/^allow-header *(.*)/) {
|
2001-01-26 02:42:11 +00:00
|
|
|
if ($seenheader{$1} != 1) {
|
|
|
|
push @allowheader, $1;
|
|
|
|
$seenheader{$1} = 1;
|
|
|
|
}
|
2001-01-25 20:05:55 +00:00
|
|
|
} elsif (/^allow *(.*)/) {
|
|
|
|
push @allow, $1;
|
Update.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* conform/conformtest.pl (@headers): Add wordexp.h, wctype.h, wchar.h,
varargs.h, utmpx.h, utime.h, unistd.h, ulimit.h, ucontext.h, time.h,
termios.h, tar.h, sys/wait.h, sys/uio.h, sys/types.h, sys/times.h,
sys/timeb.h, sys/time.h, sys/statvfs.h, sys/stat.h, sys/shm.h,
sys/sem.h, and sys/resource.h.
Implement handling of allow-header.
* conform/data/fcntl.h-data: Correct various bugs.
* conform/data/fnmatch.h-data: Likewise.
* conform/data/math.h-data: Likewise.
* conform/data/ndbm.h-data: Likewise.
* conform/data/nl_types.h-data: Likewise.
* conform/data/poll.h-data: Likewise.
* conform/data/pthread.h-data: Likewise.
* conform/data/semaphore.h-data: Likewise.
* conform/data/setjmp.h-data: Likewise.
* conform/data/signal.h-data: Likewise.
* conform/data/stdarg.h-data: Likewise.
* conform/data/stddef.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/syslog.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/tar.h-data: New file.
* conform/data/termios.h-data: New file.
* conform/data/time.h-data: New file.
* conform/data/ucontext.h-data: New file.
* conform/data/ulimit.h-data: New file.
* conform/data/unistd.h-data: New file.
* conform/data/utime.h-data: New file.
* conform/data/utmpx.h-data: New file.
* conform/data/varargs.h-data: New file.
* conform/data/wchar.h-data: New file.
* conform/data/wctype.h-data: New file.
* conform/data/wordexp.h-data: New file.
* conform/data/sys/resource.h-data: New file.
* conform/data/sys/sem.h-data: New file.
* conform/data/sys/shm.h-data: New file.
* conform/data/sys/stat.h-data: New file.
* conform/data/sys/statvfs.h-data: New file.
* conform/data/sys/time.h-data: New file.
* conform/data/sys/timeb.h-data: New file.
* conform/data/sys/times.h-data: New file.
* conform/data/sys/types.h-data: New file.
* conform/data/sys/uio.h-data: New file.
* conform/data/sys/wait.h-data: New file.
* grp/grp.h (getgrent_r): Declare only if __USE_GNU.
* include/sys/time.h (__itimes): Fix type of second parameter.
* io/sys/stat.h (S_IFLNK): Define also if __USE_XOPEN.
(S_ISVTX): Likewise.
* io/sys/statvfs.h: Define fsblkcnt_t and fsfilcnt_t.
* locale/langindo.h: Make ERA_YEAR, INT_CURR_SYMBOL, CURRENCY_SYMBOL,
MON_DECIMAL_POINT, MON_THOUSANDS_SEP, MON_GROUPING, POSITIVE_SIGN,
NEGATIVE_SIGN, INT_FRAC_DIGITS, FRAC_DIGITS, P_CS_PRECEDES,
P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE, P_SIGN_POSN,
N_SIGN_POSN, DECIMAL_POINT, THOUSANDS_SEP, GROUPING, YESEXPR,
NOEXPR, YESSTR, and NOSTR only available if __USE_GNU.
* math/bits/mathcalls.h: Don't declare tgamma and scalbn if only
__USE_XOPEN.
* posix/unistd.h: Don't define ptrdiff_t.
(sbrk): Correct type of parameter.
* sysdeps/generic/sbrk.c: Likewise.
* sysdeps/mach/hurd/sbrk.c: Likewise.
* posix/sys/types.h: Allow id_t, suseconds_t, fsblkcnt_t, and
fsfilcnt_t being defined elsewhere.
* resource/sys/resource.h: Define id_t.
If __USE_XOPEN use int for type of first parameter if getrlimit,
getrlimit64, setrlimit, setrlimit64, getrusage, getpriority, and
setpriority.
* sysdeps/generic/getpriority.c: Fix type of second parameter.
* sysdeps/generic/setpriority.c: Likewise.
* sysdeps/mach/hurd/getpriority.c: Likewise.
* sysdeps/mach/hurd/setpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
* sysdeps/unix/sysv/linux/getpriority.c: Likewise.
* sysdeps/generic/utimes.c: Fix parameter of third parameter.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/generic/bits/shm.h: Define shmatt_t type and use it in
struct shmid_ds definition.
* sysdeps/gnu/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
* sysvipc/sys/shm.h: Define time_t.
* sysvipc/sys/sem.h (struct sembuf): Make sem_num field unsigned.
* sysdeps/gnu/bits/sem.h: Rename anonymous type struct sem_queue and
struct sem_undo to struct __sem_queue and struct __sem_undo resp.
* time/time.h: Define suseconds_t if not already done.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Rename f_spare to __f_spare.
* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* intl/bindtextdom.c: Use rwlock to avoid surprising results in
multithreaded applications.
* intl/dcigettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/*.c: Update copyright.
* sysdeps/generic/bits/libc-lock.h: Define __libc_rwlock_* stubs.
2000-02-27 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Treat also "/usr/" as
prefix especially.
2000-02-27 Ulrich Drepper <drepper@redhat.com>
* po/de.po: Update from translation team.
* po/ko.po: Likewise.
2000-02-28 05:08:01 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
close (ALLOW);
|
|
|
|
}
|
|
|
|
|
2012-02-26 04:18:39 +00:00
|
|
|
if ($test_exist) {
|
|
|
|
printf (" Not defined\n");
|
1999-08-24 17:55:34 +00:00
|
|
|
} else {
|
2012-02-26 04:18:39 +00:00
|
|
|
# Now check the namespace.
|
|
|
|
printf (" Checking the namespace of \"%s\"... ", $h);
|
|
|
|
if ($missing) {
|
|
|
|
++$skipped;
|
|
|
|
printf ("SKIP\n");
|
|
|
|
} else {
|
|
|
|
checknamespace ($h, $fnamebase, @allow);
|
|
|
|
}
|
1999-08-24 17:55:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
printf ("\n\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
printf "-" x 76 . "\n";
|
2001-01-25 09:33:04 +00:00
|
|
|
printf (" Total number of tests : %4d\n", $total);
|
|
|
|
|
|
|
|
printf (" Number of failed tests : %4d (", $errors);
|
|
|
|
$percent = ($errors * 100) / $total;
|
2001-01-25 18:40:46 +00:00
|
|
|
if ($errors > 0 && $percent < 1.0) {
|
2001-01-25 09:33:04 +00:00
|
|
|
printf (" <1%%)\n");
|
|
|
|
} else {
|
|
|
|
printf ("%3d%%)\n", $percent);
|
|
|
|
}
|
|
|
|
|
|
|
|
printf (" Number of skipped tests : %4d (", $skipped);
|
|
|
|
$percent = ($skipped * 100) / $total;
|
2001-01-25 18:40:46 +00:00
|
|
|
if ($skipped > 0 && $percent < 1.0) {
|
2001-01-25 09:33:04 +00:00
|
|
|
printf (" <1%%)\n");
|
|
|
|
} else {
|
|
|
|
printf ("%3d%%)\n", $percent);
|
|
|
|
}
|
1999-08-24 17:55:34 +00:00
|
|
|
|
|
|
|
exit $errors != 0;
|
2012-02-26 04:18:39 +00:00
|
|
|
# Local Variables:
|
|
|
|
# perl-indent-level: 2
|
|
|
|
# End:
|