glibc:fw/math-split-tests

Last commit made on 2017-02-17
Get this branch:
git clone -b fw/math-split-tests https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
fw/math-split-tests
Repository:
lp:glibc

Recent commits

f7ba66b... by Joseph Myers <email address hidden>

RFC: Run libm tests separately for each function

At present, libm tests for each function get built into a single
executable (for each floating point type, for each of normal / inline
/ finite-math-only functions, plus vector variants) and run together,
resulting in a single PASS or FAIL (for each of those nine variants
plus vector variants). Building this executable involves reading
about 40 MB of libm-test-*.c sources, which would grow to maybe 70 or
80 MB when the complex inverse trig and hyperbolic functions move to
the auto-libm-test-* mechanism (that move is practical now that tests
for all functions don't need regenerating for any change to
auto-libm-test-in but you can instead regenerate each
auto-libm-test-out-* file independently; auto-libm-test-out-casin and
auto-libm-test-out-casinh take about 38 minutes each to generate on my
system after such a move, auto-libm-test-out-cacos and
auto-libm-test-out-cacosh take about 80 minutes each).

This patch arranges for tests of each function to be run separately
from the makefiles instead. There are 121 functions being tested for
each (type, variant pair) (actually 126, but run as 121 from the
Makefile because each of the pairs (exp10, pow10), (isfinite, finite),
(lgamma, gamma), (remainder, drem), (scalbn, ldexp), shares a table of
test results and so is run together), so 1089 separate tests run from
the Makefile, plus 48 vector tests on x86_64 (six functions for eight
vector variants). Each test only involves a libm-test-<func>.c file
of no more than about 4 MB, rather than all such files taking about 40
MB. With tests run separately, test summaries will indicate which
functions actually have problems (of course, those problems may just
be out-of-date libm-test-ulps files if the file hasn't been updated
for the architecture in question recently).

All the .c files for the 1089+48 tests are generated automatically
from the Makefiles. Various checked-in boilerplate .c files are
removed as no longer needed. CFLAGS definitions for the different
kinds of tests are generated using makefile iterators to apply
target-specific variable settings. libm-have-vector-test.h is no
longer needed; the list of functions to test for each vector type is
now in the sysdeps Makefile.

This should remove the amount of boilerplate needed for float128
testing support; test-float128.h will still be needed, but not various
.c files or Makefile CFLAGS definitions. The logic for creating
dependencies on libm-test-support-*.o files should also render
<https://sourceware.org/ml/libc-alpha/2017-02/msg00279.html>
unnecessary.

Any comments? Especially regarding the use of iterators; there is
existing precedent (in elf/Makefile) for using o-iterator.mk as a
generic iterator with object-suffixes-left set to something other than
a list of object suffixes, but maybe there should be a differently
named iterator for such generic uses?

2017-02-16 Joseph Myers <email address hidden>

 * math/Makefile (libm-tests-generated): Remove variable.
 (libm-tests-base-normal): New variable.
 (libm-tests-base-finite): Likewise.
 (libm-tests-base-inline): Likewise.
 (libm-tests-base): Likewise.
 (libm-tests-normal): Likewise.
 (libm-tests-finite): Likewise.
 (libm-tests-inline): Likewise.
 (libm-tests-vector): Likewise.
 (libm-tests): Define in terms of these new variables.
 (libm-tests-for-type): New variable.
 (libm-tests.o): Move definition.
 (tests): Move addition of $(libm-tests).
 (generated): Update for new and removed libm test files.
 ($(objpfx)libm-test.c): Remove target.
 ($(objpfx)libm-have-vector-test.h): Likewise.
 (CFLAGS-test-double-vlen2.c): Remove variable.
 (CFLAGS-test-double-vlen4.c): Likewise.
 (CFLAGS-test-double-vlen8.c): Likewise.
 (CFLAGS-test-float-vlen4.c): Likewise.
 (CFLAGS-test-float-vlen8.c): Likewise.
 (CFLAGS-test-float-vlen16.c): Likewise.
 (CFLAGS-test-float.c): Likewise.
 (CFLAGS-test-float-finite.c): Likewise.
 (CFLAGS-libm-test-support-float.c): Likewise.
 (CFLAGS-test-double.c): Likewise.
 (CFLAGS-test-double-finite.c): Likewise.
 (CFLAGS-libm-test-support-double.c): Likewise.
 (CFLAGS-test-ldouble.c): Likewise.
 (CFLAGS-test-ldouble-finite.c): Likewise.
 (CFLAGS-libm-test-support-ldouble.c): Likewise.
 (libm-test-inline-cflags): New variable.
 (CFLAGS-test-ifloat.c): Remove variable.
 (CFLAGS-test-idouble.c): Likewise.
 (CFLAGS-test-ildouble.c): Likewise.
 ($(addprefix $(objpfx), $(libm-tests.o))): Move target and update
 dependencies.
 ($(foreach t,$(libm-tests-normal),$(objpfx)$(t).c)): New rule.
 ($(foreach t,$(libm-tests-finite),$(objpfx)$(t).c)): Likewise.
 ($(foreach t,$(libm-tests-inline),$(objpfx)$(t).c)): Likewise.
 ($(foreach t,$(libm-tests-vector),$(objpfx)$(t).c)): Likewise.
 ($(foreach t,$(types),$(objpfx)libm-test-support-$(t).c)):
 Likewise.
 (dependencies on libm-test-support-*.o): Remove.
 ($(foreach f,$(libm-test-funcs-all),$(objpfx)$(o)-$(f).o)): New
 rules using iterators.
 ($(addprefix $(objpfx),$(call libm-tests-for-type,$(o)))):
 Likewise.
 ($(objpfx)libm-test-support-$(o).o): Likewise.
 ($(addprefix $(objpfx),$(filter-out $(tests-static)
 $(libm-vec-tests),$(tests)))): Filter out $(libm-tests-vector)
 instead.
 ($(addprefix $(objpfx), $(libm-vec-tests))): Use iterator to
 define rule instead.
 * math/README.libm-test: Update.
 * math/libm-test-acos.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-acosh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-asin.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-asinh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-atan.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-atan2.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-atanh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cabs.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cacos.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cacosh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-canonicalize.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-carg.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-casin.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-casinh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-catan.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-catanh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cbrt.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ccos.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ccosh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ceil.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cexp.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cimag.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-clog.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-clog10.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-conj.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-copysign.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cos.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cosh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cpow.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-cproj.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-creal.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-csin.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-csinh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-csqrt.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ctan.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ctanh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-erf.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-erfc.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-exp.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-exp10.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-exp2.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-expm1.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fabs.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fdim.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-floor.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fma.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fmax.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fmaxmag.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fmin.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fminmag.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fmod.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fpclassify.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-frexp.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fromfp.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-fromfpx.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-getpayload.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-hypot.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ilogb.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-iscanonical.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-iseqsig.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isfinite.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isgreater.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isgreaterequal.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isinf.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isless.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-islessequal.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-islessgreater.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isnan.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isnormal.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-issignaling.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-issubnormal.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-isunordered.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-iszero.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-j0.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-j1.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-jn.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-lgamma.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-llogb.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-llrint.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-llround.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-log.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-log10.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-log1p.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-log2.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-logb.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-lrint.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-lround.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-modf.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-nearbyint.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-nextafter.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-nextdown.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-nexttoward.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-nextup.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-pow.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-remainder.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-remquo.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-rint.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-round.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-roundeven.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-scalb.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-scalbln.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-scalbn.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-setpayload.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-setpayloadsig.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-signbit.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-significand.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-sin.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-sincos.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-sinh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-sqrt.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-tan.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-tanh.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-tgamma.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-totalorder.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-totalordermag.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-trunc.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ufromfp.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-ufromfpx.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-y0.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-y1.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-yn.inc: Include libm-test-driver.c.
 (do_test): New function.
 * math/libm-test-driver.c: Do not include libm-have-vector-test.h.
 (HAVE_VECTOR): Remove macro.
 (START): Do not call HAVE_VECTOR.
 * math/test-double-vlen2.h (FUNC_TEST): Remove macro.
 * math/test-double-vlen4.h (FUNC_TEST): Remove macro.
 * math/test-double-vlen8.h (FUNC_TEST): Remove macro.
 * math/test-float-vlen16.h (FUNC_TEST): Remove macro.
 * math/test-float-vlen4.h (FUNC_TEST): Remove macro.
 * math/test-float-vlen8.h (FUNC_TEST): Remove macro.
 * math/test-math-vector.h (FUNC_TEST): New macro.
 (WRAPPER_DECL): Rename to WRAPPER_DECL_f.
 * sysdeps/x86_64/fpu/Makefile (double-vlen2-funcs): New variable.
 (double-vlen4-funcs): Likewise.
 (double-vlen4-avx2-funcs): Likewise.
 (double-vlen8-funcs): Likewise.
 (float-vlen4-funcs): Likewise.
 (float-vlen8-funcs): Likewise.
 (float-vlen8-avx2-funcs): Likewise.
 (float-vlen16-funcs): Likewise.
 (CFLAGS-test-double-vlen4-avx2.c): Remove variable.
 (CFLAGS-test-float-vlen8-avx2.c): Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen4.h (TEST_VECTOR_cos): Remove
 macro.
 (TEST_VECTOR_sin): Likewise.
 (TEST_VECTOR_sincos): Likewise.
 (TEST_VECTOR_log): Likewise.
 (TEST_VECTOR_exp): Likewise.
 (TEST_VECTOR_pow): Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen8.h (TEST_VECTOR_cos):
 Likewise.
 (TEST_VECTOR_sin): Likewise.
 (TEST_VECTOR_sincos): Likewise.
 (TEST_VECTOR_log): Likewise.
 (TEST_VECTOR_exp): Likewise.
 (TEST_VECTOR_pow): Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen16.h (TEST_VECTOR_cosf):
 Likewise.
 (TEST_VECTOR_sinf): Likewise.
 (TEST_VECTOR_sincosf): Likewise.
 (TEST_VECTOR_logf): Likewise.
 (TEST_VECTOR_expf): Likewise.
 (TEST_VECTOR_powf): Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen8.h (TEST_VECTOR_cosf):
 Likewise.
 (TEST_VECTOR_sinf): Likewise.
 (TEST_VECTOR_sincosf): Likewise.
 (TEST_VECTOR_logf): Likewise.
 (TEST_VECTOR_expf): Likewise.
 (TEST_VECTOR_powf): Likewise.
 * math/gen-libm-have-vector-test.sh: Remove file.
 * math/libm-test.inc: Likewise.
 * math/libm-test-support-double.c: Likewise.
 * math/libm-test-support-float.c: Likewise.
 * math/libm-test-support-ldouble.c: Likewise.
 * math/test-double-finite.c: Likewise.: Likewise.
 * math/test-double.c: Likewise.
 * math/test-float-finite.c: Likewise.
 * math/test-float.c: Likewise.
 * math/test-idouble.c: Likewise.
 * math/test-ifloat.c: Likewise.
 * math/test-ildouble.c: Likewise.
 * math/test-ldouble-finite.c: Likewise.
 * math/test-ldouble.c: Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen2.c: Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen2.h: Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen4-avx2.c: Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise.
 * sysdeps/x86_64/fpu/test-double-vlen8.c: Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen16.c: Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen4.c: Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen4.h: Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen8-avx2.c: Likewise.
 * sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise.

f0166c1... by Zack Weinberg

build-many-glibcs: don't crash if email is not configured

The 'bot-cycle' action for build-many-glibcs is a convenient way to
not have to remember all the steps in keeping a many-glibcs tree up
to date ... or it would be, if the script could send mail _optionally_.
Make it so by skipping the mail step if mail isn't configured.

 * scripts/build-many-glibcs.py (bot_build_mail): If the
 bot_config does not contain all of the necessary email-
 related settings, just print a warning and continue.

ceaa988... by Zack Weinberg

Add missing header files throughout the testsuite.

 * crypt/md5.h: Test _LIBC with #if defined, not #if.
 * dirent/opendir-tst1.c: Include sys/stat.h.
 * dirent/tst-fdopendir.c: Include sys/stat.h.
 * dirent/tst-fdopendir2.c: Include stdlib.h.
 * dirent/tst-scandir.c: Include stdbool.h.
 * elf/tst-auditmod1.c: Include link.h and stddef.h.
 * elf/tst-tls15.c: Include stdlib.h.
 * elf/tst-tls16.c: Include stdlib.h.
 * elf/tst-tls17.c: Include stdlib.h.
 * elf/tst-tls18.c: Include stdlib.h.
 * iconv/tst-iconv6.c: Include endian.h.
 * iconvdata/bug-iconv11.c: Include limits.h.
 * io/test-utime.c: Include stdint.h.
 * io/tst-faccessat.c: Include sys/stat.h.
 * io/tst-fchmodat.c: Include sys/stat.h.
 * io/tst-fchownat.c: Include sys/stat.h.
 * io/tst-fstatat.c: Include sys/stat.h.
 * io/tst-futimesat.c: Include sys/stat.h.
 * io/tst-linkat.c: Include sys/stat.h.
 * io/tst-mkdirat.c: Include sys/stat.h and stdbool.h.
 * io/tst-mkfifoat.c: Include sys/stat.h and stdbool.h.
 * io/tst-mknodat.c: Include sys/stat.h and stdbool.h.
 * io/tst-openat.c: Include stdbool.h.
 * io/tst-readlinkat.c: Include sys/stat.h.
 * io/tst-renameat.c: Include sys/stat.h.
 * io/tst-symlinkat.c: Include sys/stat.h.
 * io/tst-unlinkat.c: Include stdbool.h.
 * libio/bug-memstream1.c: Include stdlib.h.
 * libio/bug-wmemstream1.c: Include stdlib.h.
 * libio/tst-fwrite-error.c: Include stdlib.h.
 * libio/tst-memstream1.c: Include stdlib.h.
 * libio/tst-memstream2.c: Include stdlib.h.
 * libio/tst-memstream3.c: Include stdlib.h.
 * malloc/tst-interpose-aux.c: Include stdint.h.
 * misc/tst-preadvwritev-common.c: Include sys/stat.h.
 * nptl/tst-basic7.c: Include limits.h.
 * nptl/tst-cancel25.c: Include pthread.h, not pthreadP.h.
 * nptl/tst-cancel4.c: Include stddef.h, limits.h, and sys/stat.h.
 * nptl/tst-cancel4_1.c: Include stddef.h.
 * nptl/tst-cancel4_2.c: Include stddef.h.
 * nptl/tst-cond16.c: Include limits.h.
 Use sysconf(_SC_PAGESIZE) instead of __getpagesize.
 * nptl/tst-cond18.c: Include limits.h.
 Use sysconf(_SC_PAGESIZE) instead of __getpagesize.
 * nptl/tst-cond4.c: Include stdint.h.
 * nptl/tst-cond6.c: Include stdint.h.
 * nptl/tst-stack2.c: Include limits.h.
 * nptl/tst-stackguard1.c: Include stddef.h.
 * nptl/tst-tls4.c: Include stdint.h. Don't include tls.h.
 * nptl/tst-tls4moda.c: Include stddef.h.
 Don't include stdio.h, unistd.h, or tls.h.
 * nptl/tst-tls4modb.c: Include stddef.h.
 Don't include stdio.h, unistd.h, or tls.h.
 * nptl/tst-tls5.h: Include stddef.h. Don't include stdlib.h or tls.h.
 * posix/tst-getaddrinfo2.c: Include stdio.h.
 * posix/tst-getaddrinfo5.c: Include stdio.h.
 * posix/tst-pathconf.c: Include sys/stat.h.
 * posix/tst-posix_fadvise-common.c: Include stdint.h.
 * posix/tst-preadwrite-common.c: Include sys/stat.h.
 * posix/tst-regex.c: Include stdint.h.
 Don't include spawn.h or spawn_int.h.
 * posix/tst-regexloc.c: Don't include spawn.h or spawn_int.h.
 * posix/tst-vfork3.c: Include sys/stat.h.
 * resolv/tst-bug18665-tcp.c: Include stdlib.h.
 * resolv/tst-res_hconf_reorder.c: Include stdlib.h.
 * resolv/tst-resolv-search.c: Include stdlib.h.
 * stdio-common/tst-fmemopen2.c: Include stdint.h.
 * stdio-common/tst-vfprintf-width-prec.c: Include stdlib.h.
 * stdlib/test-canon.c: Include sys/stat.h.
 * stdlib/tst-tls-atexit.c: Include stdbool.h.
 * string/test-memchr.c: Include stdint.h.
 * string/tst-cmp.c: Include stdint.h.
 * sysdeps/pthread/tst-timer.c: Include stdint.h.
 * sysdeps/unix/sysv/linux/tst-sync_file_range.c: Include stdint.h.
 * sysdeps/wordsize-64/tst-writev.c: Include limits.h and stdint.h.
 * 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.
 * sysdeps/x86_64/tst-auditmod10b.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod3b.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod4b.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod5b.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod6b.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod6c.c: Include link.h and stddef.h.
 * sysdeps/x86_64/tst-auditmod7b.c: Include link.h and stddef.h.
 * time/clocktest.c: Include stdint.h.
 * time/tst-posixtz.c: Include stdint.h.
 * timezone/tst-timezone.c: Include stdint.h.

e546c3c... by Zack Weinberg

ChangeLog entry for previous changeset

7b037c0... by Zack Weinberg

Clean up redundancies between string.h and strings.h.

 * string/string.h [__USE_MISC]: Include strings.h.
 (__bzero, bcmp, bcopy, bzero, index, rindex)
 (strcasecmp, strncasecmp, strcasecmp_l, strncasecmp_l)
 (ffs, ffsl, ffsll): Don't declare.

 * string/strings.h: Do not suppress the file if string.h has
 already been included.
 (bcmp, bcopy, bzero, strcasecmp, strncasecmp): Add __nonnull
 annotations.
 (index, rindex): Define inline forwarders even if
 __CORRECT_ISO_CPP_STRING_H_PROTO is defined.
 (ffs): Use __attribute_const__.
 (ffsl, ffsll): Declare here.
 (strcasecmp_l, strncasecmp_l): Correct comments; these functions
 have now been standardized.

 * include/string.h (__bzero): Declare here.

ab9536a... by Zack Weinberg

Move bits/types.h into posix/bits.

bits/types.h has no sysdeps variants, so it should be in the
subdirectory that installs it (namely, posix).

 * bits/types.h: Move to posix/bits.
 * include/bits/types.h: New wrapper.

f7db120... by Wilco Dijkstra <email address hidden>

Remove the str(n)cmp inlines from string/bits/string2.h. The strncmp
optimization seems unlikely to ever be useful, but if it occurs in
real code it should be added to GCC. Expanding strcmp of small strings
does appear useful (benchmarking shows it is 2-3x faster), so this would
be useful to implement in GCC (PR 78809).

 * string/bits/string2.h (strcmp): Remove define.
 (__strcmp_cg): Likewise.
 (strncmp): Likewise.

3172b27... by Wilco Dijkstra <email address hidden>

The internal header include/string.h does not work in C++: it causes link errors
in several C++ debug tests when any of the functions it declares are called.
The best option would be to not use internal headers for tests (unless
explicitly needed). Add guards so that it is safe to use include/string.h from
C++.

 * include/string.h: Add __cplusplus check.

4918e5f... by Gabriel F. T. Gomes

Fix y0 and y1 exception handling for zero input [BZ #21134]

The Bessel functions of the second type (Yn) should raise the "divide
by zero" exception when input is zero (both positive and negative).
Current code gives the right output, but fails to set the exception.
This error is exposed for float, double, and long double when linking
with -lieee. Without this flag, the error is not exposed, because the
wrappers for these functions, which use __kernel_standard
functionality, set the exception as expected.

Tested for powerpc64le.

 [BZ #21134]
 * sysdeps/ieee754/dbl-64/e_j0.c (__ieee754_y0): Raise the
 "divide by zero" exception when the input is zero.
 * sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_y1): Likewise.
 * sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_y0f): Likewise.
 * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Likewise.
 * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_y0l): Likewise.
 * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_y1l): Likewise.

10303eb... by Joseph Myers <email address hidden>

Move most libmvec test contents from .c to .h files.

The libmvec tests put substantive, architecture-specific contents in
.c files such as test-double-vlen4.c, so making those files
architecture-specific and causing issues for generating such files
automatically when splitting up tests by function.

This patch moves all the substantive contents to .h files, so the .c
files only include the .h file and then libm-test.c. This allows for
automatic generation of per-function .c files in future. The .h files
in turn #include or #include_next the architecture-independent file
and add the architecture-specific definitions to that. (Splitting by
function should in fact allow the TEST_VECTOR_* macros to be replaced
by sysdeps makefile information on which functions to test in each
case, removing the need for gen-libm-have-vector-test.sh as well as
removing the need for some of the architecture-specific headers.)

Tested for x86_64.

 * sysdeps/x86_64/fpu/test-double-vlen2.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-double-vlen2.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-double-vlen4-avx2.c: Move most contents
 to, and include ...
 * sysdeps/x86_64/fpu/test-double-vlen4-avx2.h: ... here. New
 file.
 * sysdeps/x86_64/fpu/test-double-vlen4.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-double-vlen4.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-double-vlen8.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-double-vlen8.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-float-vlen16.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-float-vlen16.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-float-vlen4.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-float-vlen4.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-float-vlen8-avx2.c: Move most contents
 to, and include ...
 * sysdeps/x86_64/fpu/test-float-vlen8-avx2.h: ... here. New file.
 * sysdeps/x86_64/fpu/test-float-vlen8.c: Move most contents to,
 and include ...
 * sysdeps/x86_64/fpu/test-float-vlen8.h: ... here. New file.