mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
0516e24d18
The conform/ tests test -D_XOPEN_SOURCE under the name "XPG3", and -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED under the name "XPG4". That naming is misleading. _XOPEN_SOURCE_EXTENDED actually means XPG4.2, including UX-shaded interfaces. _XOPEN_SOURCE actually means XPG4, or XPG4.2 without UX-shaded interfaces. (Prior XPG versions also used _XOPEN_SOURCE, but without any versioning of the values of the macro, so XPG4.2 without UX-shaded interfaces is the only sensible set of interfaces for glibc to expose given _XOPEN_SOURCE=1 without _XOPEN_SOURCE_EXTENDED defined.) This patch fixes the naming in the conform/ tests, so that what is now called XPG4 is changed to XPG42, and what is now called XPG3 is changed to XPG4. Tested for x86_64 (and verified the complete set of expectations is unchanged by the patch beyond the intended renaming). * conform/GlibcConform.pm (XPG4): Rename standard to XPG42. (XPG3): Rename standard to XPG4. * conform/Makefile: Likewise. * conform/list-header-symbols.pl: Likewise. * conform/data/aio.h-data: Likewise. * conform/data/arpa/inet.h-data: Likewise. * conform/data/complex.h-data: Likewise. * conform/data/ctype.h-data: Likewise. * conform/data/dlfcn.h-data: Likewise. * conform/data/fcntl.h-data: Likewise. * conform/data/fenv.h-data: Likewise. * conform/data/float.h-data: Likewise. * conform/data/fmtmsg.h-data: Likewise. * conform/data/ftw.h-data: Likewise. * conform/data/grp.h-data: Likewise. * conform/data/inttypes.h-data: Likewise. * conform/data/iso646.h-data: Likewise. * conform/data/langinfo.h-data: Likewise. * conform/data/libgen.h-data: Likewise. * conform/data/limits.h-data: Likewise. * conform/data/locale.h-data: Likewise. * conform/data/math.h-data: Likewise. * conform/data/mqueue.h-data: Likewise. * conform/data/ndbm.h-data: Likewise. * conform/data/net/if.h-data: Likewise. * conform/data/netdb.h-data: Likewise. * conform/data/netinet/in.h-data: Likewise. * conform/data/poll.h-data: Likewise. * conform/data/pthread.h-data: Likewise. * conform/data/pwd.h-data: Likewise. * conform/data/sched.h-data: Likewise. * conform/data/search.h-data: Likewise. * conform/data/semaphore.h-data: Likewise. * conform/data/signal.h-data: Likewise. * conform/data/spawn.h-data: Likewise. * conform/data/stdbool.h-data: Likewise. * conform/data/stdint.h-data: Likewise. * conform/data/stdio.h-data: Likewise. * conform/data/stdlib.h-data: Likewise. * conform/data/string.h-data: Likewise. * conform/data/strings.h-data: Likewise. * conform/data/stropts.h-data: Likewise. * conform/data/sys/mman.h-data: Likewise. * conform/data/sys/resource.h-data: Likewise. * conform/data/sys/select.h-data: Likewise. * conform/data/sys/socket.h-data: Likewise. * conform/data/sys/stat.h-data: Likewise. * conform/data/sys/statvfs.h-data: Likewise. * conform/data/sys/time.h-data: Likewise. * conform/data/sys/timeb.h-data: Likewise. * conform/data/sys/types.h-data: Likewise. * conform/data/sys/uio.h-data: Likewise. * conform/data/sys/un.h-data: Likewise. * conform/data/sys/wait.h-data: Likewise. * conform/data/syslog.h-data: Likewise. * conform/data/termios.h-data: Likewise. * conform/data/tgmath.h-data: Likewise. * conform/data/time.h-data: Likewise. * conform/data/ucontext.h-data: Likewise. * conform/data/unistd.h-data: Likewise. * conform/data/utmpx.h-data: Likewise. * conform/data/varargs.h-data: Likewise. * conform/data/wchar.h-data: Likewise. * conform/data/wctype.h-data: Likewise.
75 lines
2.6 KiB
Perl
75 lines
2.6 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# Shared code for glibc conformance tests.
|
|
|
|
# Copyright (C) 2014-2017 Free Software Foundation, Inc.
|
|
# This file is part of the GNU C Library.
|
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
|
|
# The GNU C Library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with the GNU C Library; if not, see
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
package GlibcConform;
|
|
require Exporter;
|
|
@ISA = qw(Exporter);
|
|
@EXPORT = qw(%CFLAGS list_exported_functions);
|
|
|
|
# Compiler options for each standard.
|
|
$CFLAGS{"ISO"} = "-ansi";
|
|
$CFLAGS{"ISO99"} = "-std=c99";
|
|
$CFLAGS{"ISO11"} = "-std=c11";
|
|
$CFLAGS{"POSIX"} = "-D_POSIX_C_SOURCE=199506L -ansi";
|
|
$CFLAGS{"XPG4"} = "-ansi -D_XOPEN_SOURCE";
|
|
$CFLAGS{"XPG42"} = "-ansi -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED";
|
|
$CFLAGS{"UNIX98"} = "-ansi -D_XOPEN_SOURCE=500";
|
|
$CFLAGS{"XOPEN2K"} = "-std=c99 -D_XOPEN_SOURCE=600";
|
|
$CFLAGS{"XOPEN2K8"} = "-std=c99 -D_XOPEN_SOURCE=700";
|
|
$CFLAGS{"POSIX2008"} = "-std=c99 -D_POSIX_C_SOURCE=200809L";
|
|
|
|
# Return a list of functions exported by a header, empty if an include
|
|
# of the header does not compile.
|
|
sub list_exported_functions {
|
|
my ($cc, $standard, $header, $tmpdir) = @_;
|
|
my ($cc_all) = "$cc -D_ISOMAC $CFLAGS{$standard}";
|
|
my ($tmpfile) = "$tmpdir/list-$$.c";
|
|
my ($auxfile) = "$tmpdir/list-$$.c.aux";
|
|
my ($ret);
|
|
my (%res) = ();
|
|
open (TMPFILE, ">$tmpfile") || die ("open $tmpfile: $!\n");
|
|
print TMPFILE "#include <$header>\n";
|
|
close (TMPFILE) || die ("close $tmpfile: $!\n");
|
|
$ret = system "$cc_all -c $tmpfile -o /dev/null -aux-info $auxfile > /dev/null";
|
|
unlink ($tmpfile) || die ("unlink $tmpfile: $!\n");
|
|
if ($ret != 0) {
|
|
return;
|
|
}
|
|
open (AUXFILE, "<$auxfile") || die ("open $auxfile: $!\n");
|
|
while (<AUXFILE>) {
|
|
s|/\*.*?\*/||g;
|
|
if (/^\s*$/) {
|
|
next;
|
|
}
|
|
# The word before a '(' that isn't '(*' is the function name
|
|
# before the argument list (not fully general, but sufficient for
|
|
# -aux-info output on standard headers).
|
|
if (/(\w+)\s*\([^*]/) {
|
|
$res{$1} = 1;
|
|
} else {
|
|
die ("couldn't parse -aux-info output: $_\n");
|
|
}
|
|
}
|
|
close (AUXFILE) || die ("close $auxfile: $!\n");
|
|
unlink ($auxfile) || die ("unlink $auxfile: $!\n");
|
|
return sort keys %res;
|
|
}
|