about summary refs log tree commit diff
path: root/conform/Makefile
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-11-12 22:45:25 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-11-12 22:45:25 +0000
commit24f4f8253f177f8a1f5a6cd5f59be1cf766be284 (patch)
tree91e05083c1bfcc14407e29a835af4471bfd76b2d /conform/Makefile
parentcc67478e282ac5c46a1005474cca51342efe1397 (diff)
downloadglibc-24f4f8253f177f8a1f5a6cd5f59be1cf766be284.tar.gz
glibc-24f4f8253f177f8a1f5a6cd5f59be1cf766be284.tar.xz
glibc-24f4f8253f177f8a1f5a6cd5f59be1cf766be284.zip
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.
Diffstat (limited to 'conform/Makefile')
-rw-r--r--conform/Makefile210
1 files changed, 210 insertions, 0 deletions
diff --git a/conform/Makefile b/conform/Makefile
index 3c14355256..45917a66f3 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -118,6 +118,23 @@ generated += $(conformtest-header-base)
 endif
 endif
 
+linknamespace-symlists-base := $(foreach std,$(conformtest-standards),\
+					     symlist-$(std))
+linknamespace-symlists-tests := $(addprefix $(objpfx),\
+					    $(linknamespace-symlists-base))
+tests-special += $(linknamespace-symlists-tests)
+
+tests-special += $(objpfx)symlist-stdlibs
+
+linknamespace-header-base := $(foreach std,\
+				       $(conformtest-standards),\
+				       $(foreach h,\
+						 $(conformtest-headers-$(std)),\
+						 $(std)/$(h)/linknamespace.out))
+linknamespace-header-tests := $(addprefix $(objpfx),\
+					  $(linknamespace-header-base))
+tests-special += $(linknamespace-header-tests)
+
 include ../Rules
 
 $(conformtest-header-list-tests): $(objpfx)header-list-%.out: \
@@ -269,3 +286,196 @@ $(conformtest-header-tests): $(objpfx)%/conform.out: \
 		 --flags='$(conformtest-cc-flags)' --standard=$$std \
 		 --headers=$$hdr > $@); \
 	$(evaluate-test)
+
+$(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl
+	$(PERL) -w $< --tmpdir=$(objpfx) --cc='$(CC)' \
+		--flags='$(conformtest-cc-flags)' --standard=$* \
+		--headers="$(strip $(conformtest-headers-$*))" \
+		> $@ 2> $@.err; \
+	$(evaluate-test)
+
+linknamespace-libs = $(common-objpfx)libc.a $(common-objpfx)math/libm.a \
+		     $(common-objpfx)rt/librt.a $(static-thread-library)
+
+$(objpfx)symlist-stdlibs: $(linknamespace-libs)
+	LC_ALL=C $(READELF) -W -s $^ > $@; \
+	$(evaluate-test)
+
+$(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \
+			       linknamespace.pl $(objpfx)symlist-stdlibs
+	(set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \
+	 mkdir -p $(@D)/scratch; \
+	 $(PERL) -w $< --tmpdir=$(@D)/scratch --cc='$(CC)' \
+		 --flags='$(conformtest-cc-flags)' --standard=$$std \
+		 --stdsyms=$(objpfx)symlist-$$std --header=$$hdr \
+		 --libsyms='$(objpfx)symlist-stdlibs' --readelf='$(READELF)' \
+		 > $@ 2>&1); \
+	$(evaluate-test)
+
+# Pre-standard C feature no longer supported by GCC (obsoleted in
+# newer POSIX standards).
+test-xfail-XPG3/varargs.h/linknamespace = yes
+test-xfail-XPG4/varargs.h/linknamespace = yes
+test-xfail-UNIX98/varargs.h/linknamespace = yes
+
+# Header not provided by glibc.
+test-xfail-XPG4/ndbm.h/linknamespace = yes
+test-xfail-UNIX98/ndbm.h/linknamespace = yes
+test-xfail-XOPEN2K/ndbm.h/linknamespace = yes
+test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
+
+# Unsorted expected failures.
+test-xfail-ISO/math.h/linknamespace = yes
+test-xfail-ISO/signal.h/linknamespace = yes
+test-xfail-ISO/stdio.h/linknamespace = yes
+test-xfail-ISO/time.h/linknamespace = yes
+test-xfail-ISO99/complex.h/linknamespace = yes
+test-xfail-ISO99/ctype.h/linknamespace = yes
+test-xfail-ISO99/math.h/linknamespace = yes
+test-xfail-ISO99/signal.h/linknamespace = yes
+test-xfail-ISO99/stdio.h/linknamespace = yes
+test-xfail-ISO99/tgmath.h/linknamespace = yes
+test-xfail-ISO11/complex.h/linknamespace = yes
+test-xfail-ISO11/ctype.h/linknamespace = yes
+test-xfail-ISO11/math.h/linknamespace = yes
+test-xfail-ISO11/signal.h/linknamespace = yes
+test-xfail-ISO11/stdio.h/linknamespace = yes
+test-xfail-ISO11/tgmath.h/linknamespace = yes
+test-xfail-XPG3/ctype.h/linknamespace = yes
+test-xfail-XPG3/fnmatch.h/linknamespace = yes
+test-xfail-XPG3/glob.h/linknamespace = yes
+test-xfail-XPG3/math.h/linknamespace = yes
+test-xfail-XPG3/regex.h/linknamespace = yes
+test-xfail-XPG3/search.h/linknamespace = yes
+test-xfail-XPG3/stdio.h/linknamespace = yes
+test-xfail-XPG3/time.h/linknamespace = yes
+test-xfail-XPG3/unistd.h/linknamespace = yes
+test-xfail-XPG3/wordexp.h/linknamespace = yes
+test-xfail-XPG4/ctype.h/linknamespace = yes
+test-xfail-XPG4/fmtmsg.h/linknamespace = yes
+test-xfail-XPG4/fnmatch.h/linknamespace = yes
+test-xfail-XPG4/glob.h/linknamespace = yes
+test-xfail-XPG4/grp.h/linknamespace = yes
+test-xfail-XPG4/libgen.h/linknamespace = yes
+test-xfail-XPG4/math.h/linknamespace = yes
+test-xfail-XPG4/netdb.h/linknamespace = yes
+test-xfail-XPG4/pwd.h/linknamespace = yes
+test-xfail-XPG4/regex.h/linknamespace = yes
+test-xfail-XPG4/search.h/linknamespace = yes
+test-xfail-XPG4/stdio.h/linknamespace = yes
+test-xfail-XPG4/stdlib.h/linknamespace = yes
+test-xfail-XPG4/sys/mman.h/linknamespace = yes
+test-xfail-XPG4/sys/statvfs.h/linknamespace = yes
+test-xfail-XPG4/syslog.h/linknamespace = yes
+test-xfail-XPG4/time.h/linknamespace = yes
+test-xfail-XPG4/unistd.h/linknamespace = yes
+test-xfail-XPG4/wordexp.h/linknamespace = yes
+test-xfail-POSIX/aio.h/linknamespace = yes
+test-xfail-POSIX/fnmatch.h/linknamespace = yes
+test-xfail-POSIX/glob.h/linknamespace = yes
+test-xfail-POSIX/math.h/linknamespace = yes
+test-xfail-POSIX/mqueue.h/linknamespace = yes
+test-xfail-POSIX/pthread.h/linknamespace = yes
+test-xfail-POSIX/regex.h/linknamespace = yes
+test-xfail-POSIX/sched.h/linknamespace = yes
+test-xfail-POSIX/semaphore.h/linknamespace = yes
+test-xfail-POSIX/sys/mman.h/linknamespace = yes
+test-xfail-POSIX/time.h/linknamespace = yes
+test-xfail-POSIX/unistd.h/linknamespace = yes
+test-xfail-POSIX/wordexp.h/linknamespace = yes
+test-xfail-UNIX98/aio.h/linknamespace = yes
+test-xfail-UNIX98/ctype.h/linknamespace = yes
+test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
+test-xfail-UNIX98/fnmatch.h/linknamespace = yes
+test-xfail-UNIX98/glob.h/linknamespace = yes
+test-xfail-UNIX98/grp.h/linknamespace = yes
+test-xfail-UNIX98/libgen.h/linknamespace = yes
+test-xfail-UNIX98/math.h/linknamespace = yes
+test-xfail-UNIX98/mqueue.h/linknamespace = yes
+test-xfail-UNIX98/netdb.h/linknamespace = yes
+test-xfail-UNIX98/pthread.h/linknamespace = yes
+test-xfail-UNIX98/pwd.h/linknamespace = yes
+test-xfail-UNIX98/regex.h/linknamespace = yes
+test-xfail-UNIX98/sched.h/linknamespace = yes
+test-xfail-UNIX98/search.h/linknamespace = yes
+test-xfail-UNIX98/semaphore.h/linknamespace = yes
+test-xfail-UNIX98/stdio.h/linknamespace = yes
+test-xfail-UNIX98/stdlib.h/linknamespace = yes
+test-xfail-UNIX98/sys/mman.h/linknamespace = yes
+test-xfail-UNIX98/sys/statvfs.h/linknamespace = yes
+test-xfail-UNIX98/syslog.h/linknamespace = yes
+test-xfail-UNIX98/time.h/linknamespace = yes
+test-xfail-UNIX98/unistd.h/linknamespace = yes
+test-xfail-UNIX98/wchar.h/linknamespace = yes
+test-xfail-UNIX98/wordexp.h/linknamespace = yes
+test-xfail-XOPEN2K/aio.h/linknamespace = yes
+test-xfail-XOPEN2K/complex.h/linknamespace = yes
+test-xfail-XOPEN2K/fcntl.h/linknamespace = yes
+test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
+test-xfail-XOPEN2K/fnmatch.h/linknamespace = yes
+test-xfail-XOPEN2K/glob.h/linknamespace = yes
+test-xfail-XOPEN2K/grp.h/linknamespace = yes
+test-xfail-XOPEN2K/libgen.h/linknamespace = yes
+test-xfail-XOPEN2K/math.h/linknamespace = yes
+test-xfail-XOPEN2K/mqueue.h/linknamespace = yes
+test-xfail-XOPEN2K/net/if.h/linknamespace = yes
+test-xfail-XOPEN2K/netdb.h/linknamespace = yes
+test-xfail-XOPEN2K/pthread.h/linknamespace = yes
+test-xfail-XOPEN2K/pwd.h/linknamespace = yes
+test-xfail-XOPEN2K/regex.h/linknamespace = yes
+test-xfail-XOPEN2K/search.h/linknamespace = yes
+test-xfail-XOPEN2K/semaphore.h/linknamespace = yes
+test-xfail-XOPEN2K/signal.h/linknamespace = yes
+test-xfail-XOPEN2K/spawn.h/linknamespace = yes
+test-xfail-XOPEN2K/stdlib.h/linknamespace = yes
+test-xfail-XOPEN2K/sys/mman.h/linknamespace = yes
+test-xfail-XOPEN2K/sys/statvfs.h/linknamespace = yes
+test-xfail-XOPEN2K/sys/wait.h/linknamespace = yes
+test-xfail-XOPEN2K/syslog.h/linknamespace = yes
+test-xfail-XOPEN2K/tgmath.h/linknamespace = yes
+test-xfail-XOPEN2K/time.h/linknamespace = yes
+test-xfail-XOPEN2K/ucontext.h/linknamespace = yes
+test-xfail-XOPEN2K/unistd.h/linknamespace = yes
+test-xfail-XOPEN2K/wordexp.h/linknamespace = yes
+test-xfail-POSIX2008/aio.h/linknamespace = yes
+test-xfail-POSIX2008/complex.h/linknamespace = yes
+test-xfail-POSIX2008/ctype.h/linknamespace = yes
+test-xfail-POSIX2008/dirent.h/linknamespace = yes
+test-xfail-POSIX2008/fcntl.h/linknamespace = yes
+test-xfail-POSIX2008/grp.h/linknamespace = yes
+test-xfail-POSIX2008/math.h/linknamespace = yes
+test-xfail-POSIX2008/mqueue.h/linknamespace = yes
+test-xfail-POSIX2008/net/if.h/linknamespace = yes
+test-xfail-POSIX2008/netdb.h/linknamespace = yes
+test-xfail-POSIX2008/pthread.h/linknamespace = yes
+test-xfail-POSIX2008/regex.h/linknamespace = yes
+test-xfail-POSIX2008/semaphore.h/linknamespace = yes
+test-xfail-POSIX2008/spawn.h/linknamespace = yes
+test-xfail-POSIX2008/sys/mman.h/linknamespace = yes
+test-xfail-POSIX2008/sys/statvfs.h/linknamespace = yes
+test-xfail-POSIX2008/tgmath.h/linknamespace = yes
+test-xfail-POSIX2008/time.h/linknamespace = yes
+test-xfail-POSIX2008/unistd.h/linknamespace = yes
+test-xfail-XOPEN2K8/aio.h/linknamespace = yes
+test-xfail-XOPEN2K8/complex.h/linknamespace = yes
+test-xfail-XOPEN2K8/dirent.h/linknamespace = yes
+test-xfail-XOPEN2K8/fcntl.h/linknamespace = yes
+test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
+test-xfail-XOPEN2K8/grp.h/linknamespace = yes
+test-xfail-XOPEN2K8/libgen.h/linknamespace = yes
+test-xfail-XOPEN2K8/math.h/linknamespace = yes
+test-xfail-XOPEN2K8/mqueue.h/linknamespace = yes
+test-xfail-XOPEN2K8/net/if.h/linknamespace = yes
+test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
+test-xfail-XOPEN2K8/pthread.h/linknamespace = yes
+test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
+test-xfail-XOPEN2K8/regex.h/linknamespace = yes
+test-xfail-XOPEN2K8/search.h/linknamespace = yes
+test-xfail-XOPEN2K8/semaphore.h/linknamespace = yes
+test-xfail-XOPEN2K8/spawn.h/linknamespace = yes
+test-xfail-XOPEN2K8/sys/mman.h/linknamespace = yes
+test-xfail-XOPEN2K8/sys/statvfs.h/linknamespace = yes
+test-xfail-XOPEN2K8/syslog.h/linknamespace = yes
+test-xfail-XOPEN2K8/tgmath.h/linknamespace = yes
+test-xfail-XOPEN2K8/time.h/linknamespace = yes
+test-xfail-XOPEN2K8/unistd.h/linknamespace = yes