glibc/conform/data/sys/socket.h-data
Joseph Myers 5675961d15 conformtest: Support xfail markers on individual assertions.
Various conformtest tests fail because of known issues, filed in
Bugzilla, that are hard to fix (requiring new features, kernel
cooperation or involving changing types in ways that may involve care
around padding when interfacing to the kernel).  Such an issue has the
effect of making the whole test for the (standard, header) pair fail,
so hiding any other issues with that header for that standard
(possibly regressions or architecture-specific issues).

This patch adds a mechanism for individual conformtest test
expectations to start with xfail-, meaning that a failure of that
particular assertion does not cause the whole test to fail at the
makefile level and so failure at the makefile level can be used to
detect other issues that are likely to be easier to fix.  This is
similar to the whitelisted symbols in the linknamespace tests, or the
marking of particular libm tests as allowing spurious or missing
exceptions, for example.  The bugs filed in Bugzilla should still be
fixed, and the xfail- markers removed at that point, but xfail-
renders the tests more useful until that happens.

Note that there is no way to add such a marker for the assertion that
a header uses only symbols in the namespace of symbols it's meant to
use.  I don't think there's any need for a way to xfail those
namespace tests other than xfailing the whole (standard, header) pair
at the makefile level, since they are generally straightforward to fix
(add appropriate conditionals on the problem definitions).

The xfails in this patch do not necessarily cover all cases of
hard-to-fix header bugs filed in Bugzilla that currently show up in
conformtest failures; there may be more yet to add for existing open
bugs.

Tested for x86_64 and x86.

	* conform/conformtest.pl ($xerrors): New variable.
	(note_error): New function.
	(compiletest): New argument $xfail.  Use not_error.
	(runtest): Likewise.
	(top level): Handle xfail- lines.  Update calls to compiletest and
	runtest.  Handle xfail- and optional- in headers listed with
	allow-header.
	* conform/data/fcntl.h-data (O_TTY_INIT): Use xfail-.
	(O_EXEC): Likewise.
	(O_SEARCH): Likewise.
	* conform/data/stropts.h-data (ioctl): Likewise.
	* conform/data/sys/ipc.h-data (ipc_perm.mode): Likewise.
	* conform/data/sys/sem.h-data (semid_ds.sem_nsems): Likewise.
	* conform/data/sys/socket.h-data (msghdr.msg_iovlen): Likewise.
	(msghdr.msg_controllen): Likewise.
	(cmsghdr.cmsg_len): Likewise.
	* conform/data/utmpx.h-data (utmpx.ut_tv): Likewise.
	* conform/Makefile (test-xfail-XPG3/sys/ipc.h/conform): Remove
	variable.
	(test-xfail-XPG3/sys/sem.h/conform): Likewise.
	(test-xfail-XPG4/stropts.h/conform): Likewise.
	(test-xfail-XPG4/sys/ipc.h/conform): Likewise.
	(test-xfail-XPG4/sys/sem.h/conform): Likewise.
	(test-xfail-XPG4/sys/socket.h/conform): Likewise.
	(test-xfail-UNIX98/stropts.h/conform): Likewise.
	(test-xfail-UNIX98/sys/ipc.h/conform): Likewise.
	(test-xfail-UNIX98/sys/sem.h/conform): Likewise.
	(test-xfail-UNIX98/sys/socket.h/conform): Likewise.
	(test-xfail-XOPEN2K/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/ipc.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/sem.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/socket.h/conform): Likewise.
	(test-xfail-XOPEN2K/utmpx.h/conform): Likewise.
	(test-xfail-POSIX2008/fcntl.h/conform): Likewise.
	(test-xfail-POSIX2008/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K8/fcntl.h/conform): Likewise.
	(test-xfail-XOPEN2K8/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/ipc.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/sem.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/socket.h/conform): Likewise.
2015-06-19 20:05:41 +00:00

140 lines
3.1 KiB
Plaintext

#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG3
type socklen_t
type sa_family_t
# if defined XOPEN2K8 || defined POSIX2008
type size_t
type ssize_t
# endif
type {struct sockaddr}
element {struct sockaddr} sa_family_t sa_family
element {struct sockaddr} char sa_data []
type {struct sockaddr_storage}
element {struct sockaddr_storage} sa_family_t ss_family
type {struct msghdr}
element {struct msghdr} {void*} msg_name
element {struct msghdr} socklen_t msg_namelen
element {struct msghdr} {struct iovec*} msg_iov
// Bug 16919: wrong type for msg_iovlen and msg_controllen members.
xfail-element {struct msghdr} int msg_iovlen
element {struct msghdr} {void*} msg_control
xfail-element {struct msghdr} socklen_t msg_controllen
element {struct msghdr} int msg_flags
type {struct iovec}
element {struct iovec} {void*} iov_base
element {struct iovec} size_t iov_len
type {struct cmsghdr}
// Bug 16919: wrong type for cmsg_len member.
xfail-element {struct cmsghdr} socklen_t cmsg_len
element {struct cmsghdr} int cmsg_level
element {struct cmsghdr} int cmsg_type
macro SCM_RIGHTS
macro CMSG_DATA
macro CMSG_NXTHDR
macro CMSG_FIRSTHDR
type {struct linger}
element {struct linger} int l_onoff
element {struct linger} int l_linger
macro SOCK_DGRAM
macro SOCK_STREAM
macro SOCK_SEQPACKET
macro SOL_SOCKET
macro SO_ACCEPTCONN
macro SO_BROADCAST
macro SO_DEBUG
macro SO_DONTROUTE
macro SO_ERROR
macro SO_KEEPALIVE
macro SO_LINGER
macro SO_OOBINLINE
macro SO_RCVBUF
macro SO_RCVLOWAT
macro SO_RCVTIMEO
macro SO_REUSEADDR
macro SO_SNDBUF
macro SO_SNDLOWAT
macro SO_SNDTIMEO
macro SO_TYPE
macro SOMAXCONN
macro MSG_CTRUNC
macro MSG_DONTROUTE
macro MSG_EOR
macro MSG_OOB
macro MSG_PEEK
macro MSG_TRUNC
macro MSG_WAITALL
# if defined XOPEN2K8 || defined POSIX2008
constant MSG_NOSIGNAL
# endif
macro AF_UNIX
macro AF_UNSPEC
macro AF_INET
macro AF_INET6
macro SHUT_RD
macro SHUT_WR
macro SHUT_RDWR
function int accept (int, struct sockaddr*, socklen_t*)
function int bind (int, const struct sockaddr*, socklen_t)
function int connect (int, const struct sockaddr*, socklen_t)
function int getpeername (int, struct sockaddr*, socklen_t*)
function int getsockname (int, struct sockaddr*, socklen_t*)
function int getsockopt (int, int, int, void*, socklen_t*)
function int listen (int, int)
function ssize_t recv (int, void*, size_t, int)
function ssize_t recvfrom (int, void*, size_t, int, struct sockaddr*, socklen_t*)
function ssize_t recvmsg (int, struct msghdr*, int)
function ssize_t send (int, const void*, size_t, int)
function ssize_t sendmsg (int, const struct msghdr*, int)
function ssize_t sendto (int, const void*, size_t, int, const struct sockaddr*, socklen_t)
function int setsockopt (int, int, int, const void*, socklen_t)
function int shutdown (int, int)
function int socket (int, int, int)
function int socketpair (int, int, int, int[2])
#if !defined XPG4 && !defined UNIX98
function int sockatmark (int)
#endif
allow-header sys/uio.h
allow ss_*
allow sa_*
allow if_*
allow ifc_*
allow ifru_*
allow infu_*
allow ifra_*
allow msg_*
allow cmsg_*
allow l_*
allow SO*
allow AF_*
allow CMSG_*
allow MSG_*
allow PF_*
allow SCM_*
allow SHUT_*
#endif