about summary refs log tree commit diff
path: root/conform/Makefile
diff options
context:
space:
mode:
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