mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Make linknamespace tests check only relevant libraries.
This patch addresses one known caveat in the linknamespace tests: with this patch they will now only look for definitions of symbols in relevant libraries, meaning that librt and libpthread are not checked for ISO C standards, XPG3 and XPG4. In particular, this means that if __pthread_initialize_minimal is somehow brought in for one of those standards, the definition from libc-tls.o will be considered instead of that from libpthread, so avoiding bringing in lots of other libpthread symbols. This should address some of the failures reported by Carlos in <https://sourceware.org/ml/libc-alpha/2014-11/msg00882.html>, where __pointer_chk_guard_local brought in __pthread_initialize_minimal. Tested for x86_64. The removal of one XFAIL for XPG4 actually shows up a header bug (shm_open should not be declared for XPG4 - the namespace issue was for symbols brought in by shm_open, which is no longer found at all now librt isn't searched; I've filed bug 17663 for the header bug, though it would show up eventually anyway in the course of review of conform/ data against XPG4). Committed. * 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.
This commit is contained in:
parent
0b3b576253
commit
0e7e69baa8
28
ChangeLog
28
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]
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user