mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Suppress internal declarations for most of the testsuite.
This patch adds a new build module called 'testsuite'. IS_IN (testsuite) implies _ISOMAC, as do IS_IN_build and __cplusplus (which means several ad-hoc tests for __cplusplus can go away). libc-symbols.h now suppresses almost all of *itself* when _ISOMAC is defined; in particular, _ISOMAC mode does not get config.h automatically anymore. There are still quite a few tests that need to see internal gunk of one variety or another. For them, we now have 'tests-internal' and 'test-internal-extras'; files in this category will still be compiled with MODULE_NAME=nonlib, and everything proceeds as it always has. The bulk of this patch is moving tests from 'tests' to 'tests-internal'. There is also 'tests-static-internal', which has the same effect on files in 'tests-static', and 'modules-names-tests', which has the *inverse* effect on files in 'modules-names' (it's inverted because most of the things in modules-names are *not* tests). For both of these, the file must appear in *both* the new variable and the old one. There is also now a special case for when libc-symbols.h is included without MODULE_NAME being defined at all. (This happens during the creation of libc-modules.h, and also when preprocessing Versions files.) When this happens, IS_IN is set to be always false and _ISOMAC is *not* defined, which was the status quo, but now it's explicit. The remaining changes to C source files in this patch seemed likely to cause problems in the absence of the main change. They should be relatively self-explanatory. In a few cases I duplicated a definition from an internal header rather than move the test to tests-internal; this was a judgement call each time and I'm happy to change those however reviewers feel is more appropriate. * Makerules: New subdir configuration variables 'tests-internal' and 'test-internal-extras'. Test files in these categories will still be compiled with MODULE_NAME=nonlib. Test files in the existing categories (tests, xtests, test-srcs, test-extras) are now compiled with MODULE_NAME=testsuite. New subdir configuration variable 'modules-names-tests'. Files which are in both 'modules-names' and 'modules-names-tests' will be compiled with MODULE_NAME=testsuite instead of MODULE_NAME=extramodules. (gen-as-const-headers): Move to tests-internal. (do-tests-clean, common-mostlyclean): Support tests-internal. * Makeconfig (built-modules): Add testsuite. * Makefile: Change libof-check-installed-headers-c and libof-check-installed-headers-cxx to 'testsuite'. * Rules: Likewise. Support tests-internal. * benchtests/strcoll-inputs/filelist#en_US.UTF-8: Remove extra-modules.mk. * config.h.in: Don't check for __OPTIMIZE__ or __FAST_MATH__ here. * include/libc-symbols.h: Move definitions of _GNU_SOURCE, PASTE_NAME, PASTE_NAME1, IN_MODULE, IS_IN, and IS_IN_LIB to the very top of the file and rationalize their order. If MODULE_NAME is not defined at all, define IS_IN to always be false, and don't define _ISOMAC. If any of IS_IN (testsuite), IS_IN_build, or __cplusplus are true, define _ISOMAC and suppress everything else in this file, starting with the inclusion of config.h. Do check for inappropriate definitions of __OPTIMIZE__ and __FAST_MATH__ here, but only if _ISOMAC is not defined. Correct some out-of-date commentary. * include/math.h: If _ISOMAC is defined, undefine NO_LONG_DOUBLE and _Mlong_double_ before including math.h. * include/string.h: If _ISOMAC is defined, don't expose _STRING_ARCH_unaligned. Move a comment to a more appropriate location. * include/errno.h, include/stdio.h, include/stdlib.h, include/string.h * include/time.h, include/unistd.h, include/wchar.h: No need to check __cplusplus nor use __BEGIN_DECLS/__END_DECLS. * misc/sys/cdefs.h (__NTHNL): New macro. * sysdeps/m68k/m680x0/fpu/bits/mathinline.h (__m81_defun): Use __NTHNL to avoid errors with GCC 6. * elf/tst-env-setuid-tunables.c: Include config.h with _LIBC defined, for HAVE_TUNABLES. * inet/tst-checks-posix.c: No need to define _ISOMAC. * intl/tst-gettext2.c: Provide own definition of N_. * math/test-signgam-finite-c99.c: No need to define _ISOMAC. * math/test-signgam-main.c: No need to define _ISOMAC. * stdlib/tst-strtod.c: Convert to test-driver. Split locale_test to... * stdlib/tst-strtod1i.c: ...this new file. * stdlib/tst-strtod5.c: Convert to test-driver and add copyright notice. Split tests of __strtod_internal to... * stdlib/tst-strtod5i.c: ...this new file. * string/test-string.h: Include stdint.h. Duplicate definition of inhibit_loop_to_libcall here (from libc-symbols.h). * string/test-strstr.c: Provide dummy definition of libc_hidden_builtin_def when including strstr.c. * sysdeps/ia64/fpu/libm-symbols.h: Suppress entire file in _ISOMAC mode; no need to test __STRICT_ANSI__ nor __cplusplus as well. * sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h. Don't include init-arch.h. * sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h. Don't include init-arch.h. * elf/Makefile: Move tst-ptrguard1-static, tst-stackguard1-static, tst-tls1-static, tst-tls2-static, tst-tls3-static, loadtest, unload, unload2, circleload1, neededtest, neededtest2, neededtest3, neededtest4, tst-tls1, tst-tls2, tst-tls3, tst-tls6, tst-tls7, tst-tls8, tst-dlmopen2, tst-ptrguard1, tst-stackguard1, tst-_dl_addr_inside_object, and all of the ifunc tests to tests-internal. Don't add $(modules-names) to test-extras. * inet/Makefile: Move tst-inet6_scopeid_pton to tests-internal. Add tst-deadline to tests-static-internal. * malloc/Makefile: Move tst-mallocstate and tst-scratch_buffer to tests-internal. * misc/Makefile: Move tst-atomic and tst-atomic-long to tests-internal. * nptl/Makefile: Move tst-typesizes, tst-rwlock19, tst-sem11, tst-sem12, tst-sem13, tst-barrier5, tst-signal7, tst-tls3, tst-tls3-malloc, tst-tls5, tst-stackguard1, tst-sem11-static, tst-sem12-static, and tst-stackguard1-static to tests-internal. Link tests-internal with libpthread also. Don't add $(modules-names) to test-extras. * nss/Makefile: Move tst-field to tests-internal. * posix/Makefile: Move bug-regex5, bug-regex20, bug-regex33, tst-rfc3484, tst-rfc3484-2, and tst-rfc3484-3 to tests-internal. * stdlib/Makefile: Move tst-strtod1i, tst-strtod3, tst-strtod4, tst-strtod5i, tst-tls-atexit, and tst-tls-atexit-nodelete to tests-internal. * sunrpc/Makefile: Move tst-svc_register to tests-internal. * sysdeps/powerpc/Makefile: Move test-get_hwcap and test-get_hwcap-static to tests-internal. * sysdeps/unix/sysv/linux/Makefile: Move tst-setgetname to tests-internal. * sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to modules-names-tests.
This commit is contained in:
parent
1711991592
commit
7c3018f9e4
102
ChangeLog
102
ChangeLog
@ -1,3 +1,105 @@
|
||||
2017-05-11 Zack Weinberg <zackw@panix.com>
|
||||
|
||||
* Makerules: New subdir configuration variables 'tests-internal'
|
||||
and 'test-internal-extras'. Test files in these categories will
|
||||
still be compiled with MODULE_NAME=nonlib. Test files in the
|
||||
existing categories (tests, xtests, test-srcs, test-extras) are
|
||||
now compiled with MODULE_NAME=testsuite.
|
||||
New subdir configuration variable 'modules-names-tests'. Files
|
||||
which are in both 'modules-names' and 'modules-names-tests' will
|
||||
be compiled with MODULE_NAME=testsuite instead of
|
||||
MODULE_NAME=extramodules.
|
||||
(gen-as-const-headers): Move to tests-internal.
|
||||
(do-tests-clean, common-mostlyclean): Support tests-internal.
|
||||
* Makeconfig (built-modules): Add testsuite.
|
||||
* Makefile: Change libof-check-installed-headers-c and
|
||||
libof-check-installed-headers-cxx to 'testsuite'.
|
||||
* Rules: Likewise. Support tests-internal.
|
||||
* benchtests/strcoll-inputs/filelist#en_US.UTF-8:
|
||||
Remove extra-modules.mk.
|
||||
|
||||
* config.h.in: Don't check for __OPTIMIZE__ or __FAST_MATH__ here.
|
||||
* include/libc-symbols.h: Move definitions of _GNU_SOURCE,
|
||||
PASTE_NAME, PASTE_NAME1, IN_MODULE, IS_IN, and IS_IN_LIB to the
|
||||
very top of the file and rationalize their order.
|
||||
If MODULE_NAME is not defined at all, define IS_IN to always be
|
||||
false, and don't define _ISOMAC.
|
||||
If any of IS_IN (testsuite), IS_IN_build, or __cplusplus are
|
||||
true, define _ISOMAC and suppress everything else in this file,
|
||||
starting with the inclusion of config.h.
|
||||
Do check for inappropriate definitions of __OPTIMIZE__ and
|
||||
__FAST_MATH__ here, but only if _ISOMAC is not defined.
|
||||
Correct some out-of-date commentary.
|
||||
|
||||
* include/math.h: If _ISOMAC is defined, undefine NO_LONG_DOUBLE
|
||||
and _Mlong_double_ before including math.h.
|
||||
* include/string.h: If _ISOMAC is defined, don't expose
|
||||
_STRING_ARCH_unaligned. Move a comment to a more appropriate
|
||||
location.
|
||||
|
||||
* include/errno.h, include/stdio.h, include/stdlib.h, include/string.h
|
||||
* include/time.h, include/unistd.h, include/wchar.h: No need to
|
||||
check __cplusplus nor use __BEGIN_DECLS/__END_DECLS.
|
||||
|
||||
* misc/sys/cdefs.h (__NTHNL): New macro.
|
||||
* sysdeps/m68k/m680x0/fpu/bits/mathinline.h
|
||||
(__m81_defun): Use __NTHNL to avoid errors with GCC 6.
|
||||
|
||||
* elf/tst-env-setuid-tunables.c: Include config.h with _LIBC
|
||||
defined, for HAVE_TUNABLES.
|
||||
* inet/tst-checks-posix.c: No need to define _ISOMAC.
|
||||
* intl/tst-gettext2.c: Provide own definition of N_.
|
||||
* math/test-signgam-finite-c99.c: No need to define _ISOMAC.
|
||||
* math/test-signgam-main.c: No need to define _ISOMAC.
|
||||
* stdlib/tst-strtod.c: Convert to test-driver. Split locale_test to...
|
||||
* stdlib/tst-strtod1i.c: ...this new file.
|
||||
* stdlib/tst-strtod5.c: Convert to test-driver and add copyright notice.
|
||||
Split tests of __strtod_internal to...
|
||||
* stdlib/tst-strtod5i.c: ...this new file.
|
||||
* string/test-string.h: Include stdint.h. Duplicate definition of
|
||||
inhibit_loop_to_libcall here (from libc-symbols.h).
|
||||
* string/test-strstr.c: Provide dummy definition of
|
||||
libc_hidden_builtin_def when including strstr.c.
|
||||
* sysdeps/ia64/fpu/libm-symbols.h: Suppress entire file in _ISOMAC
|
||||
mode; no need to test __STRICT_ANSI__ nor __cplusplus as well.
|
||||
* sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h.
|
||||
Don't include init-arch.h.
|
||||
* sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h.
|
||||
Don't include init-arch.h.
|
||||
|
||||
* elf/Makefile: Move tst-ptrguard1-static, tst-stackguard1-static,
|
||||
tst-tls1-static, tst-tls2-static, tst-tls3-static, loadtest,
|
||||
unload, unload2, circleload1, neededtest, neededtest2,
|
||||
neededtest3, neededtest4, tst-tls1, tst-tls2, tst-tls3,
|
||||
tst-tls6, tst-tls7, tst-tls8, tst-dlmopen2, tst-ptrguard1,
|
||||
tst-stackguard1, tst-_dl_addr_inside_object, and all of the
|
||||
ifunc tests to tests-internal.
|
||||
Don't add $(modules-names) to test-extras.
|
||||
* inet/Makefile: Move tst-inet6_scopeid_pton to tests-internal.
|
||||
Add tst-deadline to tests-static-internal.
|
||||
* malloc/Makefile: Move tst-mallocstate and tst-scratch_buffer to
|
||||
tests-internal.
|
||||
* misc/Makefile: Move tst-atomic and tst-atomic-long to tests-internal.
|
||||
* nptl/Makefile: Move tst-typesizes, tst-rwlock19, tst-sem11,
|
||||
tst-sem12, tst-sem13, tst-barrier5, tst-signal7, tst-tls3,
|
||||
tst-tls3-malloc, tst-tls5, tst-stackguard1, tst-sem11-static,
|
||||
tst-sem12-static, and tst-stackguard1-static to tests-internal.
|
||||
Link tests-internal with libpthread also.
|
||||
Don't add $(modules-names) to test-extras.
|
||||
* nss/Makefile: Move tst-field to tests-internal.
|
||||
* posix/Makefile: Move bug-regex5, bug-regex20, bug-regex33,
|
||||
tst-rfc3484, tst-rfc3484-2, and tst-rfc3484-3 to tests-internal.
|
||||
* stdlib/Makefile: Move tst-strtod1i, tst-strtod3, tst-strtod4,
|
||||
tst-strtod5i, tst-tls-atexit, and tst-tls-atexit-nodelete to
|
||||
tests-internal.
|
||||
* sunrpc/Makefile: Move tst-svc_register to tests-internal.
|
||||
* sysdeps/powerpc/Makefile: Move test-get_hwcap and
|
||||
test-get_hwcap-static to tests-internal.
|
||||
* sysdeps/unix/sysv/linux/Makefile: Move tst-setgetname to
|
||||
tests-internal.
|
||||
* sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to
|
||||
modules-names-tests.
|
||||
|
||||
2017-05-11 Zack Weinberg <zackw@panix.com>
|
||||
|
||||
* libio/libio.h: Condition dummy definition of _IO_lock_t on
|
||||
|
@ -908,7 +908,8 @@ libio-include = -I$(..)libio
|
||||
# List of non-library modules that we build.
|
||||
built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
|
||||
libSegFault libpcprofile librpcsvc locale-programs \
|
||||
memusagestat nonlib nscd extramodules libnldbl libsupport
|
||||
memusagestat nonlib nscd extramodules libnldbl libsupport \
|
||||
testsuite
|
||||
|
||||
in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) \
|
||||
|
4
Makefile
4
Makefile
@ -270,7 +270,7 @@ $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
|
||||
ifneq "$(headers)" ""
|
||||
# Special test of all the installed headers in this directory.
|
||||
tests-special += $(objpfx)check-installed-headers-c.out
|
||||
libof-check-installed-headers-c := nonlib
|
||||
libof-check-installed-headers-c := testsuite
|
||||
$(objpfx)check-installed-headers-c.out: \
|
||||
scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c \
|
||||
@ -280,7 +280,7 @@ $(objpfx)check-installed-headers-c.out: \
|
||||
|
||||
ifneq "$(CXX)" ""
|
||||
tests-special += $(objpfx)check-installed-headers-cxx.out
|
||||
libof-check-installed-headers-cxx := nonlib
|
||||
libof-check-installed-headers-cxx := testsuite
|
||||
$(objpfx)check-installed-headers-cxx.out: \
|
||||
scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
|
||||
|
53
Makerules
53
Makerules
@ -277,7 +277,7 @@ $(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
|
||||
vpath %.sym $(sysdirs)
|
||||
before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
|
||||
|
||||
tests += $(gen-as-const-headers:%.sym=test-as-const-%)
|
||||
tests-internal += $(gen-as-const-headers:%.sym=test-as-const-%)
|
||||
generated += $(gen-as-const-headers:%.sym=test-as-const-%.c)
|
||||
$(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
|
||||
%.sym $(common-objpfx)%.h
|
||||
@ -793,10 +793,21 @@ endif
|
||||
|
||||
# The makefile may define $(modules-names) to build additional modules.
|
||||
# These are built with $(build-module), except any in $(modules-names-nobuild).
|
||||
# MODULE_NAME=extramodules, except any in $(modules-names-tests).
|
||||
ifdef modules-names
|
||||
cpp-srcs-left := $(modules-names)
|
||||
lib = extramodules
|
||||
include $(patsubst %,$(..)libof-iterator.mk,$(modules-names))
|
||||
cpp-srcs-left := $(filter-out $(modules-names-tests),$(modules-names))
|
||||
ifneq (,$(cpp-srcs-left))
|
||||
lib := extramodules
|
||||
include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
|
||||
endif
|
||||
|
||||
ifdef modules-names-tests
|
||||
cpp-srcs-left := $(filter $(modules-names-tests),$(modules-names))
|
||||
ifneq (,$(cpp-srcs-left))
|
||||
lib := testsuite
|
||||
include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
|
||||
endif
|
||||
endif
|
||||
|
||||
extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
|
||||
$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
|
||||
@ -808,7 +819,7 @@ endif
|
||||
$(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=.o))) \
|
||||
$(patsubst %.oS,%.d,$(filter %.oS,$(extra-objs))) \
|
||||
$(patsubst %.o,%.d,$(filter %.o,$(extra-test-objs:.os=.o))) \
|
||||
$(addsuffix .d,$(tests) $(xtests) $(test-srcs))
|
||||
$(addsuffix .d,$(tests) $(tests-internal) $(xtests) $(test-srcs))
|
||||
ifeq ($(build-programs),yes)
|
||||
+depfiles += $(addsuffix .d,$(others) $(sysdep-others))
|
||||
endif
|
||||
@ -1321,7 +1332,17 @@ check: tests
|
||||
.PHONY: xcheck
|
||||
xcheck: xtests
|
||||
|
||||
all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
|
||||
# The only difference between MODULE_NAME=testsuite and MODULE_NAME=nonlib is
|
||||
# that almost all internal declarations from config.h, libc-symbols.h, and
|
||||
# include/*.h are not available to 'testsuite' code, but are to 'nonlib' code.
|
||||
all-testsuite := $(strip $(tests) $(xtests) $(test-srcs) $(test-extras))
|
||||
ifneq (,$(all-testsuite))
|
||||
cpp-srcs-left = $(all-testsuite)
|
||||
lib := testsuite
|
||||
include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
|
||||
endif
|
||||
|
||||
all-nonlib := $(strip $(tests-internal) $(test-internal-extras) $(others))
|
||||
ifneq (,$(all-nonlib))
|
||||
cpp-srcs-left = $(all-nonlib)
|
||||
lib := nonlib
|
||||
@ -1535,22 +1556,32 @@ clean: common-clean
|
||||
mostlyclean: common-mostlyclean
|
||||
|
||||
do-tests-clean:
|
||||
-rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) $(xtests) \
|
||||
-rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) \
|
||||
$(tests-internal) \
|
||||
$(xtests) \
|
||||
$(test-srcs)) \
|
||||
$(addsuffix .test-result,$(tests) \
|
||||
$(tests-internal) \
|
||||
$(xtests) \
|
||||
$(test-srcs)))
|
||||
|
||||
# Remove the object files.
|
||||
common-mostlyclean:
|
||||
-rm -f $(addprefix $(objpfx),$(tests) $(xtests) $(test-srcs) \
|
||||
-rm -f $(addprefix $(objpfx),$(tests) $(tests-internal) $(xtests) \
|
||||
$(test-srcs) \
|
||||
$(others) $(sysdep-others) stubs \
|
||||
$(addsuffix .o,$(tests) $(xtests) \
|
||||
$(test-srcs) $(others) \
|
||||
$(addsuffix .o,$(tests) \
|
||||
$(tests-internal) \
|
||||
$(xtests) \
|
||||
$(test-srcs) \
|
||||
$(others) \
|
||||
$(sysdep-others)) \
|
||||
$(addsuffix .out,$(tests) $(xtests) \
|
||||
$(addsuffix .out,$(tests) \
|
||||
$(tests-internal) \
|
||||
$(xtests) \
|
||||
$(test-srcs)) \
|
||||
$(addsuffix .test-result,$(tests) \
|
||||
$(tests-internal) \
|
||||
$(xtests) \
|
||||
$(test-srcs)))
|
||||
-rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
|
||||
|
18
Rules
18
Rules
@ -84,7 +84,7 @@ common-generated += dummy.o dummy.c
|
||||
ifneq "$(headers)" ""
|
||||
# Special test of all the installed headers in this directory.
|
||||
tests-special += $(objpfx)check-installed-headers-c.out
|
||||
libof-check-installed-headers-c := nonlib
|
||||
libof-check-installed-headers-c := testsuite
|
||||
$(objpfx)check-installed-headers-c.out: \
|
||||
$(..)scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c \
|
||||
@ -94,7 +94,7 @@ $(objpfx)check-installed-headers-c.out: \
|
||||
|
||||
ifneq "$(CXX)" ""
|
||||
tests-special += $(objpfx)check-installed-headers-cxx.out
|
||||
libof-check-installed-headers-cxx := nonlib
|
||||
libof-check-installed-headers-cxx := testsuite
|
||||
$(objpfx)check-installed-headers-cxx.out: \
|
||||
$(..)scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
|
||||
@ -129,12 +129,14 @@ endif
|
||||
others: $(py-const)
|
||||
|
||||
ifeq ($(run-built-tests),no)
|
||||
tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported),$(tests)) \
|
||||
tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
|
||||
$(tests) $(tests-internal)) \
|
||||
$(test-srcs)) $(tests-special) \
|
||||
$(tests-printers-programs)
|
||||
xtests: tests $(xtests-special)
|
||||
else
|
||||
tests: $(tests:%=$(objpfx)%.out) $(tests-special) $(tests-printers-out)
|
||||
tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
|
||||
$(tests-special) $(tests-printers-out)
|
||||
xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
|
||||
endif
|
||||
|
||||
@ -143,7 +145,7 @@ xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
|
||||
ifeq ($(run-built-tests),no)
|
||||
tests-expected =
|
||||
else
|
||||
tests-expected = $(tests) $(tests-printers)
|
||||
tests-expected = $(tests) $(tests-internal) $(tests-printers)
|
||||
endif
|
||||
tests:
|
||||
$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
|
||||
@ -156,7 +158,7 @@ xtests:
|
||||
|
||||
ifeq ($(build-programs),yes)
|
||||
binaries-all-notests = $(others) $(sysdep-others)
|
||||
binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||
binaries-all-tests = $(tests) $(tests-internal) $(xtests) $(test-srcs)
|
||||
binaries-all = $(binaries-all-notests) $(binaries-all-tests)
|
||||
binaries-static-notests = $(others-static)
|
||||
binaries-static-tests = $(tests-static) $(xtests-static)
|
||||
@ -170,7 +172,7 @@ binaries-pie-notests =
|
||||
endif
|
||||
else
|
||||
binaries-all-notests =
|
||||
binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||
binaries-all-tests = $(tests) $(tests-internal) $(xtests) $(test-srcs)
|
||||
binaries-all = $(binaries-all-tests)
|
||||
binaries-static-notests =
|
||||
binaries-static-tests =
|
||||
@ -230,7 +232,7 @@ $(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
|
||||
$(+link-static-tests)
|
||||
endif
|
||||
|
||||
ifneq "$(strip $(tests) $(xtests) $(test-srcs))" ""
|
||||
ifneq "$(strip $(tests) $(tests-internal) $(xtests) $(test-srcs))" ""
|
||||
# These are the implicit rules for making test outputs
|
||||
# from the test programs and whatever input files are present.
|
||||
|
||||
|
11
config.h.in
11
config.h.in
@ -1,14 +1,3 @@
|
||||
#if !defined IS_IN_build && !defined __ASSEMBLER__ && !defined _ISOMAC \
|
||||
&& !defined __OPTIMIZE__
|
||||
# error "glibc cannot be compiled without optimization"
|
||||
#endif
|
||||
|
||||
/* Another evil option when it comes to compiling the C library is
|
||||
--ffast-math since it alters the ABI. */
|
||||
#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
|
||||
# error "glibc must not be compiled with -ffast-math"
|
||||
#endif
|
||||
|
||||
/* Define if building with SELinux support. Set by --with-selinux. */
|
||||
#undef HAVE_SELINUX
|
||||
|
||||
|
58
elf/Makefile
58
elf/Makefile
@ -142,43 +142,49 @@ $(inst_auditdir)/sotruss-lib.so: $(objpfx)sotruss-lib.so $(+force)
|
||||
$(do-install-program)
|
||||
endif
|
||||
|
||||
tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1 \
|
||||
tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \
|
||||
tst-auxv
|
||||
tests-static = tst-tls1-static tst-tls2-static tst-stackguard1-static \
|
||||
tst-leaks1-static tst-array1-static tst-array5-static \
|
||||
tst-ptrguard1-static tst-dl-iter-static \
|
||||
tests-static-normal := tst-leaks1-static tst-array1-static tst-array5-static \
|
||||
tst-dl-iter-static \
|
||||
tst-tlsalign-static tst-tlsalign-extern-static \
|
||||
tst-linkall-static tst-env-setuid tst-env-setuid-tunables
|
||||
tests-static-internal := tst-tls1-static tst-tls2-static \
|
||||
tst-ptrguard1-static tst-stackguard1-static
|
||||
|
||||
tests := tst-tls9 tst-leaks1 \
|
||||
tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \
|
||||
tst-auxv
|
||||
tests-internal := tst-tls1 tst-tls2 $(tests-static-internal)
|
||||
tests-static := $(tests-static-normal) $(tests-static-internal)
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
tests-static += tst-tls9-static
|
||||
tst-tls9-static-ENV = \
|
||||
LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn
|
||||
endif
|
||||
tests += $(tests-static)
|
||||
ifeq (yes,$(build-shared))
|
||||
tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
|
||||
constload1 order noload filter unload \
|
||||
|
||||
tests += restest1 preloadtest loadfail multiload origtest resolvfail \
|
||||
constload1 order noload filter \
|
||||
reldep reldep2 reldep3 reldep4 nodelete nodelete2 \
|
||||
nodlopen nodlopen2 neededtest neededtest2 \
|
||||
neededtest3 neededtest4 unload2 lateglobal initfirst global \
|
||||
nodlopen nodlopen2 lateglobal initfirst global \
|
||||
restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
|
||||
circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
|
||||
tst-tls4 tst-tls5 \
|
||||
tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \
|
||||
tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \
|
||||
tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
|
||||
tst-dlmodcount tst-dlopenrpath tst-deep1 \
|
||||
tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
|
||||
tst-dlmopen1 tst-dlmopen3 \
|
||||
unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
|
||||
tst-audit1 tst-audit2 tst-audit8 tst-audit9 \
|
||||
tst-stackguard1 tst-addr1 tst-thrlock \
|
||||
tst-addr1 tst-thrlock \
|
||||
tst-unique1 tst-unique2 $(if $(CXX),tst-unique3 tst-unique4 \
|
||||
tst-nodelete) \
|
||||
tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \
|
||||
tst-ptrguard1 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
|
||||
tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
|
||||
tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error tst-noload \
|
||||
tst-latepthread tst-tls-manydynamic tst-nodelete-dlclose
|
||||
# reldep9
|
||||
tests-internal += loadtest unload unload2 circleload1 \
|
||||
neededtest neededtest2 neededtest3 neededtest4 \
|
||||
tst-tls3 tst-tls6 tst-tls7 tst-tls8 tst-dlmopen2 \
|
||||
tst-ptrguard1 tst-stackguard1
|
||||
ifeq ($(build-hardcoded-path-in-tests),yes)
|
||||
tests += tst-dlopen-aout
|
||||
LDFLAGS-tst-dlopen-aout = $(no-pie-ldflag)
|
||||
@ -289,21 +295,23 @@ CFLAGS-vismain.c = $(PIE-ccflag)
|
||||
endif
|
||||
modules-execstack-yes = tst-execstack-mod
|
||||
extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
|
||||
# We need this variable to be sure the test modules get the right CPPFLAGS.
|
||||
test-extras += $(modules-names)
|
||||
|
||||
# filtmod1.so has a special rule
|
||||
modules-names-nobuild := filtmod1
|
||||
|
||||
tests += $(tests-static)
|
||||
|
||||
ifneq (no,$(multi-arch))
|
||||
tests-static += ifuncmain1static ifuncmain1picstatic \
|
||||
tests-ifuncstatic := ifuncmain1static ifuncmain1picstatic \
|
||||
ifuncmain2static ifuncmain2picstatic \
|
||||
ifuncmain4static ifuncmain4picstatic \
|
||||
ifuncmain5static ifuncmain5picstatic \
|
||||
ifuncmain7static ifuncmain7picstatic
|
||||
|
||||
tests-static += $(tests-ifuncstatic)
|
||||
tests-internal += $(tests-ifuncstatic)
|
||||
ifeq (yes,$(build-shared))
|
||||
tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
|
||||
tests-internal += \
|
||||
ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
|
||||
ifuncmain1staticpic \
|
||||
ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
|
||||
ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
|
||||
@ -311,11 +319,11 @@ tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
|
||||
ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
|
||||
ifuncdep5 ifuncdep5pic
|
||||
extra-test-objs += $(ifunc-test-modules:=.o)
|
||||
test-extras += $(ifunc-test-modules)
|
||||
test-internal-extras += $(ifunc-test-modules)
|
||||
ifeq (yes,$(have-fpie))
|
||||
ifunc-pie-tests = ifuncmain1pie ifuncmain1vispie ifuncmain1staticpie \
|
||||
ifuncmain5pie ifuncmain6pie ifuncmain7pie
|
||||
tests += $(ifunc-pie-tests)
|
||||
tests-internal += $(ifunc-pie-tests)
|
||||
tests-pie += $(ifunc-pie-tests)
|
||||
endif
|
||||
modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
|
||||
@ -357,7 +365,7 @@ endif
|
||||
# unit test driver must be able to link with the shared object
|
||||
# that is going to eventually go into an installed DSO.
|
||||
ifeq (yesyes,$(have-fpie)$(build-shared))
|
||||
tests += tst-_dl_addr_inside_object
|
||||
tests-internal += tst-_dl_addr_inside_object
|
||||
tests-pie += tst-_dl_addr_inside_object
|
||||
$(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
|
||||
CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
|
||||
|
@ -19,6 +19,12 @@
|
||||
glibc.malloc.check and glibc.malloc.mmap_threshold but also retain
|
||||
glibc.malloc.mmap_threshold in an unprivileged child. */
|
||||
|
||||
/* This is compiled as part of the testsuite but needs to see
|
||||
HAVE_TUNABLES. */
|
||||
#define _LIBC 1
|
||||
#include "config.h"
|
||||
#undef _LIBC
|
||||
|
||||
#define test_parent test_parent_tunables
|
||||
#define test_child test_child_tunables
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#include <stdlib/errno.h>
|
||||
|
||||
#if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
|
||||
#if defined _ERRNO_H && !defined _ISOMAC
|
||||
|
||||
# if IS_IN (rtld)
|
||||
# include <dl-sysdep.h>
|
||||
|
@ -20,26 +20,46 @@
|
||||
#ifndef _LIBC_SYMBOLS_H
|
||||
#define _LIBC_SYMBOLS_H 1
|
||||
|
||||
#define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME)
|
||||
#define IS_IN(lib) (IN_MODULE == MODULE_##lib)
|
||||
/* This file is included implicitly in the compilation of every source file,
|
||||
using -include. It includes config.h. */
|
||||
|
||||
/* Returns true if the current module is a versioned library. Versioned
|
||||
library names culled from shlib-versions files are assigned a MODULE_*
|
||||
value lower than MODULE_LIBS_BEGIN. */
|
||||
#define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN)
|
||||
/* Enable declarations of GNU extensions, since we are compiling them. */
|
||||
#define _GNU_SOURCE 1
|
||||
|
||||
#define PASTE_NAME(a,b) PASTE_NAME1 (a,b)
|
||||
#define PASTE_NAME1(a,b) a##b
|
||||
#ifdef MODULE_NAME
|
||||
|
||||
/* This file's macros are included implicitly in the compilation of every
|
||||
file in the C library by -imacros.
|
||||
/* Use `#if IS_IN (module)` to detect what component is being compiled. */
|
||||
#define PASTE_NAME1(a,b) a##b
|
||||
#define PASTE_NAME(a,b) PASTE_NAME1 (a,b)
|
||||
#define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME)
|
||||
#define IS_IN(lib) (IN_MODULE == MODULE_##lib)
|
||||
|
||||
We include config.h which is generated by configure.
|
||||
It should define for us the following symbol:
|
||||
/* True if the current module is a versioned library. Versioned
|
||||
library names culled from shlib-versions files are assigned a
|
||||
MODULE_* value greater than MODULE_LIBS_BEGIN. */
|
||||
#define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN)
|
||||
|
||||
* HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
|
||||
/* The testsuite, and some other ancillary code, should be compiled against
|
||||
as close an approximation to the installed headers as possible.
|
||||
Defining this symbol disables most internal-use-only declarations
|
||||
provided by this header, and all those provided by other internal
|
||||
wrapper headers. */
|
||||
#if IS_IN (testsuite) || defined IS_IN_build || defined __cplusplus
|
||||
# define _ISOMAC 1
|
||||
#endif
|
||||
|
||||
*/
|
||||
#else
|
||||
/* The generation process for a few files created very early in the
|
||||
build (notably libc-modules.h itself) involves preprocessing this
|
||||
header without defining MODULE_NAME. Under these conditions,
|
||||
internal declarations (especially from config.h) must be visible,
|
||||
but IS_IN should always evaluate as false. */
|
||||
# define IS_IN(lib) 0
|
||||
# define IS_IN_LIB 0
|
||||
# define IN_MODULE (-1)
|
||||
#endif
|
||||
|
||||
#ifndef _ISOMAC
|
||||
|
||||
/* This is defined for the compilation of all C library code. features.h
|
||||
tests this to avoid inclusion of stubs.h while compiling the library,
|
||||
@ -50,8 +70,17 @@
|
||||
itself is being compiled, or just some generator program. */
|
||||
#define _LIBC 1
|
||||
|
||||
/* Enable declarations of GNU extensions, since we are compiling them. */
|
||||
#define _GNU_SOURCE 1
|
||||
/* Some files must be compiled with optimization on. */
|
||||
#if !defined __ASSEMBLER__ && !defined __OPTIMIZE__
|
||||
# error "glibc cannot be compiled without optimization"
|
||||
#endif
|
||||
|
||||
/* -ffast-math cannot be applied to the C library, as it alters the ABI.
|
||||
Some test components that use -ffast-math are currently not part of
|
||||
IS_IN (testsuite) for technical reasons, so we have a secondary override. */
|
||||
#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
|
||||
# error "glibc must not be compiled with -ffast-math"
|
||||
#endif
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@ -936,4 +965,5 @@ for linking")
|
||||
# define _GL_ATTRIBUTE_CONST /* empty */
|
||||
#endif
|
||||
|
||||
#endif /* !_ISOMAC */
|
||||
#endif /* libc-symbols.h */
|
||||
|
@ -1,5 +1,10 @@
|
||||
#ifndef _MATH_H
|
||||
|
||||
#ifdef _ISOMAC
|
||||
# undef NO_LONG_DOUBLE
|
||||
# undef _Mlong_double_
|
||||
#endif
|
||||
|
||||
#include <math/math.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
|
@ -1,11 +1,10 @@
|
||||
#ifndef _STDIO_H
|
||||
# if defined __need_FILE || defined __need___FILE || defined _ISOMAC
|
||||
# if defined _ISOMAC || defined __need_FILE || defined __need___FILE
|
||||
# include <libio/stdio.h>
|
||||
# else
|
||||
# include <libio/stdio.h>
|
||||
|
||||
/* Now define the internal interfaces. */
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __fcloseall (void);
|
||||
extern int __snprintf (char *__restrict __s, size_t __maxlen,
|
||||
@ -30,7 +29,6 @@ extern int __vsscanf (const char *__restrict __s,
|
||||
_G_va_list __arg)
|
||||
__attribute__ ((__format__ (__scanf__, 2, 0)));
|
||||
|
||||
# ifndef __cplusplus
|
||||
extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW;
|
||||
extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
|
||||
__THROW;
|
||||
@ -52,7 +50,6 @@ extern int __obstack_printf_chk (struct obstack *, int, const char *, ...)
|
||||
__THROW;
|
||||
extern int __obstack_vprintf_chk (struct obstack *, int, const char *,
|
||||
_G_va_list) __THROW;
|
||||
# endif
|
||||
|
||||
extern int __isoc99_fscanf (FILE *__restrict __stream,
|
||||
const char *__restrict __format, ...) __wur;
|
||||
@ -186,7 +183,5 @@ libc_hidden_proto (__obstack_vprintf_chk)
|
||||
extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
|
||||
libc_hidden_proto (__fmemopen)
|
||||
|
||||
__END_DECLS
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -9,8 +9,6 @@
|
||||
#if !defined _ISOMAC
|
||||
# include <sys/stat.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern __typeof (strtol_l) __strtol_l;
|
||||
extern __typeof (strtoul_l) __strtoul_l;
|
||||
extern __typeof (strtoll_l) __strtoll_l;
|
||||
@ -261,8 +259,6 @@ extern __typeof (unsetenv) unsetenv attribute_hidden;
|
||||
extern __typeof (__strtoul_internal) __strtoul_internal attribute_hidden;
|
||||
# endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* include/stdlib.h */
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef _STRING_H
|
||||
|
||||
#if !defined _ISOMAC && !defined __cplusplus
|
||||
#ifndef _ISOMAC
|
||||
/* Some of these are defined as macros in the real string.h, so we must
|
||||
prototype them before including it. */
|
||||
#include <sys/types.h>
|
||||
|
||||
extern void *__memccpy (void *__dest, const void *__src,
|
||||
@ -46,16 +48,14 @@ extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1));
|
||||
extern int __ffs (int __i) __attribute__ ((const));
|
||||
|
||||
extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
|
||||
#endif
|
||||
|
||||
/* Get _STRING_ARCH_unaligned. */
|
||||
#include <string_private.h>
|
||||
#endif
|
||||
|
||||
/* Now the real definitions. We do this here since some of the functions
|
||||
above are defined as macros in the headers. */
|
||||
#include <string/string.h>
|
||||
|
||||
#if !defined _ISOMAC && !defined __cplusplus
|
||||
#ifndef _ISOMAC
|
||||
extern __typeof (strcoll_l) __strcoll_l;
|
||||
extern __typeof (strxfrm_l) __strxfrm_l;
|
||||
extern __typeof (strcasecmp_l) __strcasecmp_l;
|
||||
|
@ -4,8 +4,6 @@
|
||||
#ifndef _ISOMAC
|
||||
# include <xlocale.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern __typeof (strftime_l) __strftime_l;
|
||||
libc_hidden_proto (__strftime_l)
|
||||
extern __typeof (strptime_l) __strptime_l;
|
||||
@ -104,7 +102,5 @@ extern double __difftime (time_t time1, time_t time0);
|
||||
actual clock ID. */
|
||||
#define CLOCK_IDFIELD_SIZE 3
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -2,7 +2,6 @@
|
||||
# include <posix/unistd.h>
|
||||
|
||||
# ifndef _ISOMAC
|
||||
__BEGIN_DECLS
|
||||
|
||||
libc_hidden_proto (_exit, __noreturn__)
|
||||
rtld_hidden_proto (_exit, __noreturn__)
|
||||
@ -190,7 +189,5 @@ extern int __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
extern __typeof (__access) __access_noerrno attribute_hidden;
|
||||
# endif
|
||||
|
||||
__END_DECLS
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
@ -172,7 +172,6 @@ extern int __vfwprintf (__FILE *__restrict __s,
|
||||
const wchar_t *__restrict __format,
|
||||
__gnuc_va_list __arg)
|
||||
/* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
|
||||
#ifndef __cplusplus
|
||||
extern int __vfwprintf_chk (FILE *__restrict __s, int __flag,
|
||||
const wchar_t *__restrict __format,
|
||||
__gnuc_va_list __arg)
|
||||
@ -184,7 +183,6 @@ extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
|
||||
/* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
|
||||
libc_hidden_proto (__vfwprintf_chk)
|
||||
libc_hidden_proto (__vswprintf_chk)
|
||||
#endif
|
||||
|
||||
extern int __isoc99_fwscanf (__FILE *__restrict __stream,
|
||||
const wchar_t *__restrict __format, ...);
|
||||
|
@ -52,11 +52,16 @@ aux := check_pf check_native ifreq
|
||||
tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
|
||||
tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line \
|
||||
tst-getni1 tst-getni2 tst-inet6_rth tst-checks tst-checks-posix \
|
||||
tst-sockaddr tst-inet6_scopeid_pton test-hnto-types tst-deadline
|
||||
tst-sockaddr test-hnto-types
|
||||
|
||||
# tst-deadline must be linked statically so that we can access
|
||||
# internal functions.
|
||||
tests-static += tst-deadline
|
||||
tests-static-internal := tst-deadline
|
||||
|
||||
# tst-inet6_scopeid_pton also needs internal functions but does not
|
||||
# need to be linked statically.
|
||||
tests-internal := tst-inet6_scopeid_pton
|
||||
|
||||
include ../Rules
|
||||
|
||||
|
@ -19,6 +19,5 @@
|
||||
/* Process tst-checks.c in POSIX mode. */
|
||||
#undef _GNU_SOURCE
|
||||
#define _POSIX_C_SOURCE 200112L
|
||||
#define _ISOMAC
|
||||
|
||||
#include "tst-checks.c"
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define N_(msgid) msgid
|
||||
|
||||
struct data_t
|
||||
{
|
||||
const char *selection;
|
||||
|
@ -25,9 +25,9 @@ include ../Makeconfig
|
||||
dist-headers := malloc.h
|
||||
headers := $(dist-headers) obstack.h mcheck.h
|
||||
tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
|
||||
tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \
|
||||
tst-mcheck tst-mallocfork tst-trim1 \
|
||||
tst-malloc-usable tst-realloc tst-posix_memalign \
|
||||
tst-pvalloc tst-memalign tst-mallopt tst-scratch_buffer \
|
||||
tst-pvalloc tst-memalign tst-mallopt \
|
||||
tst-malloc-backtrace tst-malloc-thread-exit \
|
||||
tst-malloc-thread-fail tst-malloc-fork-deadlock \
|
||||
tst-mallocfork2 \
|
||||
@ -39,6 +39,8 @@ tests-static := \
|
||||
tst-interpose-static-thread \
|
||||
tst-malloc-usable-static \
|
||||
|
||||
tests-internal := tst-mallocstate tst-scratch_buffer
|
||||
|
||||
ifneq (no,$(have-tunables))
|
||||
tests += tst-malloc-usable-tunables
|
||||
tests-static += tst-malloc-usable-static-tunables
|
||||
|
@ -20,7 +20,6 @@
|
||||
#undef __LIBC_INTERNAL_MATH_INLINES
|
||||
#undef _GNU_SOURCE
|
||||
#undef _Mlong_double_
|
||||
#define _ISOMAC
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
@ -19,7 +19,6 @@
|
||||
#undef _LIBC
|
||||
#undef __LIBC_INTERNAL_MATH_INLINES
|
||||
#undef _GNU_SOURCE
|
||||
#define _ISOMAC
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
@ -79,8 +79,9 @@ gpl2lgpl := error.c error.h
|
||||
tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
|
||||
tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1 \
|
||||
tst-mntent-blank-corrupt tst-mntent-blank-passno bug18240 \
|
||||
tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty \
|
||||
tst-atomic tst-atomic-long
|
||||
tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty
|
||||
|
||||
tests-internal := tst-atomic tst-atomic-long
|
||||
tests-static := tst-empty
|
||||
|
||||
ifeq ($(run-built-tests),yes)
|
||||
|
@ -55,15 +55,18 @@
|
||||
# define __THROW __attribute__ ((__nothrow__ __LEAF))
|
||||
# define __THROWNL __attribute__ ((__nothrow__))
|
||||
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
|
||||
# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
|
||||
# else
|
||||
# if defined __cplusplus && __GNUC_PREREQ (2,8)
|
||||
# define __THROW throw ()
|
||||
# define __THROWNL throw ()
|
||||
# define __NTH(fct) __LEAF_ATTR fct throw ()
|
||||
# define __NTHNL(fct) fct throw ()
|
||||
# else
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
# define __NTHNL(fct) fct
|
||||
# endif
|
||||
# endif
|
||||
|
||||
|
@ -223,8 +223,7 @@ LDLIBS-tst-once5 = -lstdc++
|
||||
CFLAGS-tst-thread_local1.o = -std=gnu++11
|
||||
LDLIBS-tst-thread_local1 = -lstdc++
|
||||
|
||||
tests = tst-typesizes \
|
||||
tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
|
||||
tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
|
||||
tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \
|
||||
tst-mutex7 tst-mutex8 tst-mutex9 tst-mutex5a tst-mutex7a \
|
||||
tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 tst-mutexpi5 \
|
||||
@ -244,13 +243,12 @@ tests = tst-typesizes \
|
||||
tst-rwlock4 tst-rwlock5 tst-rwlock6 tst-rwlock7 tst-rwlock8 \
|
||||
tst-rwlock9 tst-rwlock10 tst-rwlock11 tst-rwlock12 tst-rwlock13 \
|
||||
tst-rwlock14 tst-rwlock15 tst-rwlock16 tst-rwlock17 tst-rwlock18 \
|
||||
tst-rwlock19 \
|
||||
tst-once1 tst-once2 tst-once3 tst-once4 tst-once5 \
|
||||
tst-key1 tst-key2 tst-key3 tst-key4 \
|
||||
tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 \
|
||||
tst-sem8 tst-sem9 tst-sem10 tst-sem11 tst-sem12 tst-sem13 tst-sem14 \
|
||||
tst-sem8 tst-sem9 tst-sem10 tst-sem14 \
|
||||
tst-sem15 tst-sem16 \
|
||||
tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 tst-barrier5 \
|
||||
tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
|
||||
tst-align tst-align3 \
|
||||
tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
|
||||
tst-basic7 \
|
||||
@ -275,7 +273,7 @@ tests = tst-typesizes \
|
||||
tst-cleanup0 tst-cleanup1 tst-cleanup2 tst-cleanup3 tst-cleanup4 \
|
||||
tst-flock1 tst-flock2 \
|
||||
tst-signal1 tst-signal2 tst-signal3 tst-signal4 tst-signal5 \
|
||||
tst-signal6 tst-signal7 \
|
||||
tst-signal6 \
|
||||
tst-exec1 tst-exec2 tst-exec3 tst-exec4 tst-exec5 \
|
||||
tst-exit1 tst-exit2 tst-exit3 \
|
||||
tst-stdio1 tst-stdio2 \
|
||||
@ -300,6 +298,10 @@ tests = tst-typesizes \
|
||||
tst-bad-schedattr \
|
||||
tst-thread_local1 tst-mutex-errorcheck tst-robust10 \
|
||||
tst-robust-fork tst-create-detached
|
||||
|
||||
tests-internal := tst-typesizes tst-rwlock19 tst-sem11 tst-sem12 tst-sem13 \
|
||||
tst-barrier5 tst-signal7
|
||||
|
||||
xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \
|
||||
tst-mutexpp1 tst-mutexpp6 tst-mutexpp10
|
||||
test-srcs = tst-oddstacklimit
|
||||
@ -357,8 +359,8 @@ tests += tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx5 \
|
||||
tst-cleanupx0 tst-cleanupx1 tst-cleanupx2 tst-cleanupx3 tst-cleanupx4 \
|
||||
tst-oncex3 tst-oncex4
|
||||
ifeq ($(build-shared),yes)
|
||||
tests += tst-atfork2 tst-tls3 tst-tls3-malloc tst-tls4 tst-tls5 tst-_res1 \
|
||||
tst-fini1 tst-stackguard1
|
||||
tests += tst-atfork2 tst-tls4 tst-_res1 tst-fini1
|
||||
tests-internal += tst-tls3 tst-tls3-malloc tst-tls5 tst-stackguard1
|
||||
tests-nolibpthread += tst-fini1
|
||||
ifeq ($(have-z-execstack),yes)
|
||||
tests += tst-execstack
|
||||
@ -372,7 +374,7 @@ modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \
|
||||
tst-join7mod
|
||||
extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) \
|
||||
tst-cleanup4aux.o tst-cleanupx4aux.o
|
||||
test-extras += $(modules-names) tst-cleanup4aux tst-cleanupx4aux
|
||||
test-extras += tst-cleanup4aux tst-cleanupx4aux
|
||||
test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
|
||||
|
||||
tst-atfork2mod.so-no-z-defs = yes
|
||||
@ -425,9 +427,9 @@ tests-static += tst-locale1 tst-locale2 tst-stackguard1-static \
|
||||
tst-cancel21-static tst-cancel24-static tst-cond8-static \
|
||||
tst-mutex8-static tst-mutexpi8-static tst-sem11-static \
|
||||
tst-sem12-static
|
||||
tests += tst-stackguard1-static tst-cancel21-static tst-cancel24-static \
|
||||
tst-cond8-static tst-mutex8-static tst-mutexpi8-static \
|
||||
tst-sem11-static tst-sem12-static
|
||||
tests += tst-cancel21-static tst-cancel24-static \
|
||||
tst-cond8-static tst-mutex8-static tst-mutexpi8-static
|
||||
tests-internal += tst-sem11-static tst-sem12-static tst-stackguard1-static
|
||||
xtests-static += tst-setuid1-static
|
||||
|
||||
# These tests are linked with libc before libpthread
|
||||
@ -622,8 +624,9 @@ ifeq ($(build-shared),yes)
|
||||
$(addprefix $(objpfx), \
|
||||
$(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \
|
||||
$(tests-nolibpthread), \
|
||||
$(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \
|
||||
$(objpfx)libpthread_nonshared.a
|
||||
$(tests) $(tests-internal) $(xtests) $(test-srcs))): \
|
||||
$(objpfx)libpthread.so \
|
||||
$(objpfx)libpthread_nonshared.a
|
||||
$(objpfx)tst-unload: $(libdl)
|
||||
# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
|
||||
# since otherwise libpthread.so comes before libc.so when linking.
|
||||
|
@ -49,9 +49,9 @@ makedb-modules = xmalloc hash-string
|
||||
extra-objs += $(makedb-modules:=.o)
|
||||
|
||||
tests-static = tst-field
|
||||
tests-internal = tst-field
|
||||
tests = test-netdb tst-nss-test1 test-digits-dots \
|
||||
tst-nss-getpwent bug17079 \
|
||||
$(tests-static)
|
||||
tst-nss-getpwent bug17079
|
||||
xtests = bug-erange
|
||||
|
||||
# If we have a thread library then we can test cancellation against
|
||||
|
@ -69,24 +69,23 @@ tests := test-errno tstgetopt testfnm runtests runptests \
|
||||
tst-mmap tst-mmap-offset tst-getaddrinfo tst-truncate \
|
||||
tst-truncate64 tst-fork tst-fnmatch tst-regexloc tst-dir \
|
||||
tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
|
||||
tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
|
||||
tst-gnuglob tst-regex bug-regex6 bug-regex7 \
|
||||
bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
|
||||
bug-regex13 bug-regex14 bug-regex15 bug-regex16 \
|
||||
bug-regex17 bug-regex18 bug-regex19 bug-regex20 \
|
||||
bug-regex17 bug-regex18 bug-regex19 \
|
||||
bug-regex21 bug-regex22 bug-regex23 bug-regex24 \
|
||||
bug-regex25 bug-regex26 bug-regex27 bug-regex28 \
|
||||
bug-regex29 bug-regex30 bug-regex31 bug-regex32 \
|
||||
bug-regex33 tst-nice tst-nanosleep tst-regex2 \
|
||||
tst-nice tst-nanosleep tst-regex2 \
|
||||
transbug tst-rxspencer tst-pcre tst-boost \
|
||||
bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
|
||||
tst-getaddrinfo2 bug-glob1 bug-glob2 bug-glob3 tst-sysconf \
|
||||
tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
|
||||
tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
|
||||
tst-execve1 tst-execve2 tst-execle1 tst-execle2 \
|
||||
tst-execvp3 tst-execvp4 tst-rfc3484 tst-rfc3484-2 \
|
||||
tst-execvp3 tst-execvp4 \
|
||||
tst-execvpe1 tst-execvpe2 tst-execvpe3 tst-execvpe4 \
|
||||
tst-execvpe5 tst-execvpe6 \
|
||||
tst-rfc3484-3 \
|
||||
tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \
|
||||
bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
|
||||
bug-getopt5 tst-getopt_long1 bug-regex34 bug-regex35 \
|
||||
@ -94,6 +93,8 @@ tests := test-errno tstgetopt testfnm runtests runptests \
|
||||
tst-fnmatch3 bug-regex36 tst-getaddrinfo5 \
|
||||
tst-posix_spawn-fd tst-posix_spawn-setsid \
|
||||
tst-posix_fadvise tst-posix_fadvise64
|
||||
tests-internal := bug-regex5 bug-regex20 bug-regex33 \
|
||||
tst-rfc3484 tst-rfc3484-2 tst-rfc3484-3
|
||||
xtests := bug-ga2
|
||||
ifeq (yes,$(build-shared))
|
||||
test-srcs := globtest
|
||||
|
@ -69,23 +69,26 @@ test-srcs := tst-fmtmsg
|
||||
tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
|
||||
test-canon test-canon2 tst-strtoll tst-environ \
|
||||
tst-xpg-basename tst-random tst-random2 tst-bsearch \
|
||||
tst-limits tst-rand48 bug-strtod tst-setcontext \
|
||||
tst-limits tst-rand48 bug-strtod tst-setcontext \
|
||||
tst-setcontext2 test-a64l tst-qsort tst-system testmb2 \
|
||||
bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 \
|
||||
tst-rand48-2 tst-makecontext tst-strtod4 tst-strtod5 \
|
||||
bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 \
|
||||
tst-rand48-2 tst-makecontext tst-strtod5 \
|
||||
tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1 \
|
||||
tst-makecontext3 bug-getcontext bug-fmtmsg1 \
|
||||
tst-secure-getenv tst-strtod-overflow tst-strtod-round \
|
||||
tst-tininess tst-strtod-underflow tst-tls-atexit \
|
||||
tst-setcontext3 tst-tls-atexit-nodelete \
|
||||
tst-tininess tst-strtod-underflow tst-setcontext3 \
|
||||
tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l \
|
||||
tst-quick_exit tst-thread-quick_exit tst-width \
|
||||
tst-width-stdint tst-strfrom tst-strfrom-locale \
|
||||
tst-width-stdint tst-strfrom tst-strfrom-locale \
|
||||
tst-getrandom
|
||||
tests-internal := tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
|
||||
tst-tls-atexit tst-tls-atexit-nodelete
|
||||
tests-static := tst-secure-getenv
|
||||
|
||||
ifeq ($(build-hardcoded-path-in-tests),yes)
|
||||
tests += tst-empty-env
|
||||
endif
|
||||
tests-static := tst-secure-getenv
|
||||
|
||||
ifeq ($(have-cxx-thread_local),yes)
|
||||
CFLAGS-tst-quick_exit.o = -std=c++11
|
||||
LDLIBS-tst-quick_exit = -lstdc++
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
/* Basic tests for strtod.
|
||||
Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -79,7 +80,6 @@ static const struct ltest tests[] =
|
||||
|
||||
static void expand (char *dst, int c);
|
||||
static int long_dbl (void);
|
||||
static int locale_test (void);
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
@ -176,8 +176,6 @@ do_test (void)
|
||||
|
||||
status |= long_dbl ();
|
||||
|
||||
status |= locale_test ();
|
||||
|
||||
return status ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
@ -217,63 +215,4 @@ long_dbl (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Perform a few tests in a locale with thousands separators. */
|
||||
static int
|
||||
locale_test (void)
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
const char *loc;
|
||||
const char *str;
|
||||
double exp;
|
||||
ptrdiff_t nread;
|
||||
} tests[] =
|
||||
{
|
||||
{ "de_DE.UTF-8", "1,5", 1.5, 3 },
|
||||
{ "de_DE.UTF-8", "1.5", 1.0, 1 },
|
||||
{ "de_DE.UTF-8", "1.500", 1500.0, 5 },
|
||||
{ "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
|
||||
};
|
||||
#define ntests (sizeof (tests) / sizeof (tests[0]))
|
||||
size_t n;
|
||||
int result = 0;
|
||||
|
||||
puts ("\nLocale tests");
|
||||
|
||||
for (n = 0; n < ntests; ++n)
|
||||
{
|
||||
double d;
|
||||
char *endp;
|
||||
|
||||
if (setlocale (LC_ALL, tests[n].loc) == NULL)
|
||||
{
|
||||
printf ("cannot set locale %s\n", tests[n].loc);
|
||||
result = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* We call __strtod_interal here instead of strtod to tests the
|
||||
handling of grouping. */
|
||||
d = __strtod_internal (tests[n].str, &endp, 1);
|
||||
if (d != tests[n].exp)
|
||||
{
|
||||
printf ("strtod(\"%s\") returns %g and not %g\n",
|
||||
tests[n].str, d, tests[n].exp);
|
||||
result = 1;
|
||||
}
|
||||
else if (endp - tests[n].str != tests[n].nread)
|
||||
{
|
||||
printf ("strtod(\"%s\") read %td bytes and not %td\n",
|
||||
tests[n].str, endp - tests[n].str, tests[n].nread);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (result == 0)
|
||||
puts ("all OK");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
||||
#include <support/test-driver.c>
|
||||
|
84
stdlib/tst-strtod1i.c
Normal file
84
stdlib/tst-strtod1i.c
Normal file
@ -0,0 +1,84 @@
|
||||
/* Basic tests for __strtod_internal.
|
||||
Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
/* Perform a few tests in a locale with thousands separators. */
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
const char *loc;
|
||||
const char *str;
|
||||
double exp;
|
||||
ptrdiff_t nread;
|
||||
} tests[] =
|
||||
{
|
||||
{ "de_DE.UTF-8", "1,5", 1.5, 3 },
|
||||
{ "de_DE.UTF-8", "1.5", 1.0, 1 },
|
||||
{ "de_DE.UTF-8", "1.500", 1500.0, 5 },
|
||||
{ "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
|
||||
};
|
||||
#define ntests (sizeof (tests) / sizeof (tests[0]))
|
||||
size_t n;
|
||||
int result = 0;
|
||||
|
||||
puts ("\nLocale tests");
|
||||
|
||||
for (n = 0; n < ntests; ++n)
|
||||
{
|
||||
double d;
|
||||
char *endp;
|
||||
|
||||
if (setlocale (LC_ALL, tests[n].loc) == NULL)
|
||||
{
|
||||
printf ("cannot set locale %s\n", tests[n].loc);
|
||||
result = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
d = __strtod_internal (tests[n].str, &endp, 1);
|
||||
if (d != tests[n].exp)
|
||||
{
|
||||
printf ("strtod(\"%s\") returns %g and not %g\n",
|
||||
tests[n].str, d, tests[n].exp);
|
||||
result = 1;
|
||||
}
|
||||
else if (endp - tests[n].str != tests[n].nread)
|
||||
{
|
||||
printf ("strtod(\"%s\") read %td bytes and not %td\n",
|
||||
tests[n].str, endp - tests[n].str, tests[n].nread);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (result == 0)
|
||||
puts ("all OK");
|
||||
|
||||
return result ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
@ -1,3 +1,21 @@
|
||||
/* Tests of strtod in a locale using decimal comma.
|
||||
Copyright (C) 2007-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -9,38 +27,27 @@
|
||||
static const struct
|
||||
{
|
||||
const char *in;
|
||||
int group;
|
||||
double expected;
|
||||
} tests[] =
|
||||
{
|
||||
{ "0", 0, 0.0 },
|
||||
{ "000", 0, 0.0 },
|
||||
{ "-0", 0, -0.0 },
|
||||
{ "-000", 0, -0.0 },
|
||||
{ "0,", 0, 0.0 },
|
||||
{ "-0,", 0, -0.0 },
|
||||
{ "0,0", 0, 0.0 },
|
||||
{ "-0,0", 0, -0.0 },
|
||||
{ "0e-10", 0, 0.0 },
|
||||
{ "-0e-10", 0, -0.0 },
|
||||
{ "0,e-10", 0, 0.0 },
|
||||
{ "-0,e-10", 0, -0.0 },
|
||||
{ "0,0e-10", 0, 0.0 },
|
||||
{ "-0,0e-10", 0, -0.0 },
|
||||
{ "0e-1000000", 0, 0.0 },
|
||||
{ "-0e-1000000", 0, -0.0 },
|
||||
{ "0,0e-1000000", 0, 0.0 },
|
||||
{ "-0,0e-1000000", 0, -0.0 },
|
||||
{ "0", 1, 0.0 },
|
||||
{ "000", 1, 0.0 },
|
||||
{ "-0", 1, -0.0 },
|
||||
{ "-000", 1, -0.0 },
|
||||
{ "0e-10", 1, 0.0 },
|
||||
{ "-0e-10", 1, -0.0 },
|
||||
{ "0e-1000000", 1, 0.0 },
|
||||
{ "-0e-1000000", 1, -0.0 },
|
||||
{ "000"NBSP"000"NBSP"000", 1, 0.0 },
|
||||
{ "-000"NBSP"000"NBSP"000", 1, -0.0 }
|
||||
{ "0", 0.0 },
|
||||
{ "000", 0.0 },
|
||||
{ "-0", -0.0 },
|
||||
{ "-000", -0.0 },
|
||||
{ "0,", 0.0 },
|
||||
{ "-0,", -0.0 },
|
||||
{ "0,0", 0.0 },
|
||||
{ "-0,0", -0.0 },
|
||||
{ "0e-10", 0.0 },
|
||||
{ "-0e-10", -0.0 },
|
||||
{ "0,e-10", 0.0 },
|
||||
{ "-0,e-10", -0.0 },
|
||||
{ "0,0e-10", 0.0 },
|
||||
{ "-0,0e-10", -0.0 },
|
||||
{ "0e-1000000", 0.0 },
|
||||
{ "-0e-1000000", -0.0 },
|
||||
{ "0,0e-1000000", 0.0 },
|
||||
{ "-0,0e-1000000", -0.0 },
|
||||
};
|
||||
#define NTESTS (sizeof (tests) / sizeof (tests[0]))
|
||||
|
||||
@ -59,12 +66,7 @@ do_test (void)
|
||||
for (int i = 0; i < NTESTS; ++i)
|
||||
{
|
||||
char *ep;
|
||||
double r;
|
||||
|
||||
if (tests[i].group)
|
||||
r = __strtod_internal (tests[i].in, &ep, 1);
|
||||
else
|
||||
r = strtod (tests[i].in, &ep);
|
||||
double r = strtod (tests[i].in, &ep);
|
||||
|
||||
if (*ep != '\0')
|
||||
{
|
||||
@ -84,5 +86,4 @@ do_test (void)
|
||||
return status;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
||||
#include <support/test-driver.c>
|
||||
|
100
stdlib/tst-strtod5i.c
Normal file
100
stdlib/tst-strtod5i.c
Normal file
@ -0,0 +1,100 @@
|
||||
/* Tests of __strtod_internal in a locale using decimal comma.
|
||||
Copyright (C) 2007-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#define NBSP "\xc2\xa0"
|
||||
|
||||
static const struct
|
||||
{
|
||||
const char *in;
|
||||
int group;
|
||||
double expected;
|
||||
} tests[] =
|
||||
{
|
||||
{ "0", 0, 0.0 },
|
||||
{ "000", 0, 0.0 },
|
||||
{ "-0", 0, -0.0 },
|
||||
{ "-000", 0, -0.0 },
|
||||
{ "0,", 0, 0.0 },
|
||||
{ "-0,", 0, -0.0 },
|
||||
{ "0,0", 0, 0.0 },
|
||||
{ "-0,0", 0, -0.0 },
|
||||
{ "0e-10", 0, 0.0 },
|
||||
{ "-0e-10", 0, -0.0 },
|
||||
{ "0,e-10", 0, 0.0 },
|
||||
{ "-0,e-10", 0, -0.0 },
|
||||
{ "0,0e-10", 0, 0.0 },
|
||||
{ "-0,0e-10", 0, -0.0 },
|
||||
{ "0e-1000000", 0, 0.0 },
|
||||
{ "-0e-1000000", 0, -0.0 },
|
||||
{ "0,0e-1000000", 0, 0.0 },
|
||||
{ "-0,0e-1000000", 0, -0.0 },
|
||||
{ "0", 1, 0.0 },
|
||||
{ "000", 1, 0.0 },
|
||||
{ "-0", 1, -0.0 },
|
||||
{ "-000", 1, -0.0 },
|
||||
{ "0e-10", 1, 0.0 },
|
||||
{ "-0e-10", 1, -0.0 },
|
||||
{ "0e-1000000", 1, 0.0 },
|
||||
{ "-0e-1000000", 1, -0.0 },
|
||||
{ "000"NBSP"000"NBSP"000", 1, 0.0 },
|
||||
{ "-000"NBSP"000"NBSP"000", 1, -0.0 }
|
||||
};
|
||||
#define NTESTS (sizeof (tests) / sizeof (tests[0]))
|
||||
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
if (setlocale (LC_ALL, "cs_CZ.UTF-8") == NULL)
|
||||
{
|
||||
puts ("could not set locale");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int status = 0;
|
||||
|
||||
for (int i = 0; i < NTESTS; ++i)
|
||||
{
|
||||
char *ep;
|
||||
double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
|
||||
|
||||
if (*ep != '\0')
|
||||
{
|
||||
printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
|
||||
status = 1;
|
||||
}
|
||||
|
||||
if (r != tests[i].expected
|
||||
|| copysign (10.0, r) != copysign (10.0, tests[i].expected))
|
||||
{
|
||||
printf ("%d: got wrong results %g, expected %g\n",
|
||||
i, r, tests[i].expected);
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
@ -40,7 +40,18 @@ extern impl_t __start_impls[], __stop_impls[];
|
||||
|
||||
#undef __USE_STRING_INLINES
|
||||
|
||||
/* We are compiled under _ISOMAC, so libc-symbols.h does not do this
|
||||
for us. */
|
||||
#include "config.h"
|
||||
#ifdef HAVE_CC_INHIBIT_LOOP_TO_LIBCALL
|
||||
# define inhibit_loop_to_libcall \
|
||||
__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
|
||||
#else
|
||||
# define inhibit_loop_to_libcall
|
||||
#endif
|
||||
|
||||
#include <getopt.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
|
||||
#define STRSTR simple_strstr
|
||||
#define libc_hidden_builtin_def(arg) /* nothing */
|
||||
#include "strstr.c"
|
||||
|
||||
|
||||
|
@ -100,7 +100,8 @@ xtests := tst-getmyaddr
|
||||
|
||||
ifeq ($(have-thread-library),yes)
|
||||
xtests += thrsvc
|
||||
tests += tst-svc_register tst-udp-garbage
|
||||
tests += tst-udp-garbage
|
||||
tests-internal += tst-svc_register
|
||||
endif
|
||||
|
||||
ifeq ($(run-built-tests),yes)
|
||||
|
@ -1,4 +1,4 @@
|
||||
#if !defined __STRICT_ANSI__ && !defined __cplusplus
|
||||
#ifndef _ISOMAC
|
||||
# include <sysdep.h>
|
||||
# undef ret /* get rid of the stupid "ret" macro; it breaks br.ret */
|
||||
|
||||
|
@ -112,19 +112,22 @@ __NTH (__signbitl (long double __x))
|
||||
#ifdef __LIBC_INTERNAL_MATH_INLINES
|
||||
/* This is used when defining the functions themselves. Define them with
|
||||
__ names, and with `static inline' instead of `extern inline' so the
|
||||
bodies will always be used, never an external function call. */
|
||||
bodies will always be used, never an external function call.
|
||||
Note: GCC 6 objects to __attribute__ ((__leaf__)) on static functions. */
|
||||
# define __m81_u(x) __CONCAT(__,x)
|
||||
# define __m81_inline static __inline
|
||||
# define __m81_nth(fn) __NTHNL (fn)
|
||||
#else
|
||||
# define __m81_u(x) x
|
||||
# define __m81_inline __MATH_INLINE
|
||||
# define __m81_inline __MATH_INLINE
|
||||
# define __m81_nth(fn) __NTH (fn)
|
||||
# define __M81_MATH_INLINES 1
|
||||
#endif
|
||||
|
||||
/* Define a const math function. */
|
||||
#define __m81_defun(rettype, func, args) \
|
||||
__m81_inline rettype __attribute__((__const__)) \
|
||||
__NTH (__m81_u(func) args)
|
||||
__m81_nth (__m81_u(func) args)
|
||||
|
||||
/* Define the three variants of a math function that has a direct
|
||||
implementation in the m68k fpu. FUNC is the name for C (which will be
|
||||
@ -335,8 +338,8 @@ __inline_functions (long double,l)
|
||||
|
||||
# define __inline_functions(float_type, s) \
|
||||
__m81_inline void \
|
||||
__NTH (__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \
|
||||
float_type *__cosx)) \
|
||||
__m81_nth (__m81_u(__CONCAT(__sincos,s)) \
|
||||
(float_type __x, float_type *__sinx, float_type *__cosx)) \
|
||||
{ \
|
||||
__asm __volatile__ ("fsincos%.x %2,%1:%0" \
|
||||
: "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \
|
||||
@ -353,8 +356,6 @@ __inline_functions (long double,l)
|
||||
|
||||
/* Define inline versions of the user visible functions. */
|
||||
|
||||
/* Note that there must be no whitespace before the argument passed for
|
||||
NAME, to make token pasting work correctly with -traditional. */
|
||||
# define __inline_forward_c(rettype, name, args1, args2) \
|
||||
__MATH_INLINE rettype __attribute__((__const__)) \
|
||||
__NTH (name args1) \
|
||||
|
@ -27,7 +27,7 @@ gen-as-const-headers += locale-defines.sym
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),nptl)
|
||||
tests += test-get_hwcap test-get_hwcap-static
|
||||
tests-internal += test-get_hwcap test-get_hwcap-static
|
||||
tests-static += test-get_hwcap-static
|
||||
endif
|
||||
|
||||
|
@ -199,7 +199,8 @@ CFLAGS-gai.c += -DNEED_NETLINK
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),nptl)
|
||||
tests += tst-setgetname tst-align-clone tst-getpid1 \
|
||||
tests += tst-align-clone tst-getpid1 \
|
||||
tst-thread-affinity-pthread tst-thread-affinity-pthread2 \
|
||||
tst-thread-affinity-sched
|
||||
tests-internal += tst-setgetname
|
||||
endif
|
||||
|
@ -45,6 +45,12 @@ modules-names += test-double-libmvec-alias-mod \
|
||||
test-float-libmvec-alias-mod \
|
||||
test-float-libmvec-alias-avx-mod \
|
||||
test-float-libmvec-alias-avx2-mod
|
||||
modules-names-tests += test-double-libmvec-alias-mod \
|
||||
test-double-libmvec-alias-avx-mod \
|
||||
test-double-libmvec-alias-avx2-mod \
|
||||
test-float-libmvec-alias-mod \
|
||||
test-float-libmvec-alias-avx-mod \
|
||||
test-float-libmvec-alias-avx2-mod
|
||||
extra-test-objs += test-double-libmvec-sincos-avx-main.o \
|
||||
test-double-libmvec-sincos-avx2-main.o \
|
||||
test-double-libmvec-sincos-main.o \
|
||||
@ -146,6 +152,8 @@ tests += test-double-libmvec-alias-avx512 \
|
||||
test-float-libmvec-sincosf-avx512
|
||||
modules-names += test-double-libmvec-alias-avx512-mod \
|
||||
test-float-libmvec-alias-avx512-mod
|
||||
modules-names-tests += test-double-libmvec-alias-avx512-mod \
|
||||
test-float-libmvec-alias-avx512-mod
|
||||
extra-test-objs += test-double-libmvec-sincos-avx512-main.o \
|
||||
test-float-libmvec-sincosf-avx512-main.o
|
||||
test-double-libmvec-alias-avx512-mod.so-no-z-defs = yes
|
||||
|
@ -16,11 +16,11 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <cpu-features.h>
|
||||
|
||||
#if defined REQUIRE_AVX
|
||||
# include <init-arch.h>
|
||||
|
||||
# define INIT_ARCH_EXT
|
||||
|
||||
# define CHECK_ARCH_EXT \
|
||||
do \
|
||||
{ \
|
||||
@ -29,10 +29,8 @@
|
||||
while (0)
|
||||
|
||||
#elif defined REQUIRE_AVX2
|
||||
# include <init-arch.h>
|
||||
|
||||
# define INIT_ARCH_EXT
|
||||
|
||||
# define CHECK_ARCH_EXT \
|
||||
do \
|
||||
{ \
|
||||
@ -41,10 +39,8 @@
|
||||
while (0)
|
||||
|
||||
#elif defined REQUIRE_AVX512F
|
||||
# include <init-arch.h>
|
||||
|
||||
# define INIT_ARCH_EXT
|
||||
|
||||
# define CHECK_ARCH_EXT \
|
||||
do \
|
||||
{ \
|
||||
|
@ -16,7 +16,7 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <init-arch.h>
|
||||
#include <cpu-features.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
Loading…
Reference in New Issue
Block a user