about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--conform/Makefile33
-rw-r--r--conform/linknamespace.pl5
3 files changed, 54 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index b6271490bc..8a6e89e48e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2014-11-29  Joseph Myers  <joseph@codesourcery.com>
+
+	* conform/Makefile (linknamespace-symlist-stdlibs-base): New
+	variable.
+	(linknamespace-symlist-stdlibs-tests): Likewise.
+	(tests-special): Append $(linknamespace-symlist-stdlibs-tests)
+	instead of $(objpfx)symlist-stdlibs.
+	(linknamespace-libs-isoc): New variable.
+	(linknamespace-libs): Use $(linknamespace-libs-isoc).
+	(linknamespace-libs-ISO): New variable.
+	(linknamespace-libs-ISO99): Likewise.
+	(linknamespace-libs-ISO11): Likewise.
+	(linknamespace-libs-XPG3): Likewise.
+	(linknamespace-libs-XPG4): Likewise.
+	(linknamespace-libs-POSIX): Likewise.
+	(linknamespace-libs-UNIX98): Likewise.
+	(linknamespace-libs-XOPEN2K): Likewise.
+	(linknamespace-libs-POSIX2008): Likewise.
+	(linknamespace-libs-XOPEN2K8): Likewise.
+	($(objpfx)symlist-stdlibs): Replace by
+	$(linknamespace-symlist-stdlibs-tests).  Use
+	$(linknamespace-libs-$*) as set of libraries.
+	($(linknamespace-header-tests)): Update dependencies.  Use
+	$(objpfx)symlist-stdlibs-$$std for --libsyms argument.
+	(test-xfail-XPG4/sys/mman.h/linknamespace): Remove.
+	* conform/linknamespace.pl: Remove comment about considering
+	definitions of symbols from irrelevant libraries.
+
 2014-11-28  H.J. Lu  <hongjiu.lu@intel.com>
 
 	[BZ #13862]
diff --git a/conform/Makefile b/conform/Makefile
index 4a498e46f1..641f5465de 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -124,7 +124,13 @@ linknamespace-symlists-tests := $(addprefix $(objpfx),\
 					    $(linknamespace-symlists-base))
 tests-special += $(linknamespace-symlists-tests)
 
-tests-special += $(objpfx)symlist-stdlibs
+linknamespace-symlist-stdlibs-base := $(foreach std,$(conformtest-standards),\
+						    symlist-stdlibs-$(std))
+linknamespace-symlist-stdlibs-tests := \
+	$(addprefix $(objpfx),\
+		    $(linknamespace-symlist-stdlibs-base))
+
+tests-special += $(linknamespace-symlist-stdlibs-tests)
 
 linknamespace-header-base := $(foreach std,\
 				       $(conformtest-standards),\
@@ -294,21 +300,35 @@ $(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl
 		> $@ 2> $@.err; \
 	$(evaluate-test)
 
-linknamespace-libs = $(common-objpfx)libc.a $(common-objpfx)math/libm.a \
+linknamespace-libs-isoc = $(common-objpfx)libc.a $(common-objpfx)math/libm.a
+linknamespace-libs = $(linknamespace-libs-isoc) \
 		     $(common-objpfx)rt/librt.a $(static-thread-library)
+linknamespace-libs-ISO = $(linknamespace-libs-isoc)
+linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
+linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
+linknamespace-libs-XPG3 = $(linknamespace-libs-isoc)
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
+linknamespace-libs-POSIX = $(linknamespace-libs)
+linknamespace-libs-UNIX98 = $(linknamespace-libs)
+linknamespace-libs-XOPEN2K = $(linknamespace-libs)
+linknamespace-libs-POSIX2008 = $(linknamespace-libs)
+linknamespace-libs-XOPEN2K8 = $(linknamespace-libs)
 
-$(objpfx)symlist-stdlibs: $(linknamespace-libs)
-	LC_ALL=C $(READELF) -W -s $^ > $@; \
+$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
+					$(linknamespace-libs)
+	LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
 	$(evaluate-test)
 
 $(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \
-			       linknamespace.pl $(objpfx)symlist-stdlibs
+			       linknamespace.pl \
+			       $(linknamespace-symlist-stdlibs-tests)
 	(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)' \
+		 --libsyms=$(objpfx)symlist-stdlibs-$$std \
+		 --readelf='$(READELF)' \
 		 > $@ 2>&1); \
 	$(evaluate-test)
 
@@ -349,7 +369,6 @@ 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
diff --git a/conform/linknamespace.pl b/conform/linknamespace.pl
index fd8c3dc81b..7323d4d608 100644
--- a/conform/linknamespace.pl
+++ b/conform/linknamespace.pl
@@ -135,11 +135,6 @@ foreach my $sym (@sym_data) {
 # conditionally and not if the program is limited to standard
 # functionality.  (matherr is an example of such a false positive.)
 #
-# * For strong undefined symbols, all possible definitions are
-# considered, rather than being restricted to libraries that are
-# relevant to the given standard (e.g. not considering any libpthread
-# definitions of ISO C symbols).
-#
 # * If a symbol reference is only brought in by the user using a data
 # symbol rather than a function from the standard library, this will
 # not be detected.