about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* Enumerate tests with special rules in tests-special variable.Joseph Myers2014-03-0625-130/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is a revised and updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html>. In order to generate overall summaries of the results of all tests in the glibc testsuite, we need to identify and concatenate the files with the results of individual tests. Tomas Dohnalek's patch used $(common-objpfx)*/*.test-result for this. However, the normal glibc approach is explicit enumeration of the expected set of files with a given property, rather than all files matching some pattern like that. Furthermore, we would like to be able to mark tests as UNRESOLVED if the file with their results is for some reason missing, and in future we would like to be able to mark tests as UNSUPPORTED if they are disabled for a particular configuration (rather than simply having them missing from the list of tests as at present). Such handling of tests that were not run or did not record results requires an explicit enumeration of tests. For the tests following the default makefile rules, $(tests) (and $(xtests)) provides such an enumeration. Others, however, are added directly as dependencies of the "tests" and "xtests" makefile targets. This patch changes the makefiles to put them in variables tests-special and xtests-special, with appropriate dependencies on the tests listed there then being added centrally. Those variables are used in Rules and so need to be set before Rules is included in a subdirectory makefile, which is often earlier in the makefile than the dependencies were present before. We previously discussed the question of where to include Rules; see the question at <https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, and a discussion in <https://sourceware.org/ml/libc-alpha/2013-01/msg00337.html> of why Rules is included early rather than late in subdirectory makefiles. It was necessary to avoid an indirection through the check-abi target and get the check-abi-* targets for individual libraries into the tests-special variable. The intl/ test $(objpfx)tst-gettext.out, previously built only because of dependencies from other tests, was also added to tests-special for the same reason. The entries in tests-special are the full makefile targets, complete with $(objpfx) and .out. If a future change causes tests to be named consistently with a .out suffix, this can be changed to include just the path relative to $(objpfx), without .out. Tested x86_64, including that the same set of files is generated in the build directory by a build and testsuite run both before and after the patch (except for changes to the elf/tst-null-argv.debug.out.<number> file name), and a build with run-built-tests=no to verify there aren't any more obvious instances of the issue Marcus Shawcroft reported with a previous version in <https://sourceware.org/ml/libc-alpha/2014-01/msg00462.html>. * Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (tests): Depend on $(tests-special). * Makerules (check-abi-list): New variable. (check-abi): Depend on $(check-abi-list). [$(subdir) = elf] (tests-special): Add $(objpfx)check-abi-libc.out. [$(build-shared) = yes && subdir] (tests-special): Add $(check-abi-list). [$(build-shared) = yes && subdir] (tests): Do not depend on check-abi. * Rules (tests): Depend on $(tests-special). (xtests): Depend on $(xtests-special). * catgets/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * conform/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * elf/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * grp/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * iconv/Makefile (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * iconvdata/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * intl/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. Also add $(objpfx)tst-gettext.out. * io/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * libio/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * malloc/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * misc/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * nptl/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * nptl_db/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * posix/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * resolv/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * stdio-common/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (do-tst-unbputc): Remove target. (do-tst-printf): Likewise. * stdlib/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * string/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * sysdeps/x86/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. localedata: * Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable.
* conformtest: correct set of standards for which more headers are tested.Joseph Myers2014-03-065-4/+11
| | | | | | | | | | | | | | | | Continuing the corrections to which headers conformtest tests for which standards, this patch corrects conformtest mistakes regarding which headers to test for the remaining standards (XOPEN2K POSIX2008 XOPEN2K8). Tested x86_64. 2014-03-05 Joseph Myers <joseph@codesourcery.com> * conform/data/netinet/tcp.h-data [POSIX2008 || XOPEN2K8]: Enable whole file. * conform/data/sys/timeb.h-data [POSIX2008 || XOPEN2K8]: Disable whole file. * conform/data/sys/uio.h-data [POSIX2008]: Likewise. * conform/data/ucontext.h-data [POSIX2008 || XOPEN2K8]: Likewise.
* conformtest: correct set of standards for which some headers are tested.Joseph Myers2014-03-0627-26/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewing the sets of headers for which conformtest has expectations for various standards showed up cases where headers had expectations for standards not including those headers, or were missing expectations for a standard that did include the header. This patch fixes easy cases of this (largely disabling tests for standards for which they are inapplicable). Tested x86_64. * conform/data/aio.h-data [XPG3 || XPG4]: Disable whole file. * conform/data/arpa/inet.h-data [XPG3]: Likewise. * conform/data/dlfcn.h-data [XPG3 || XPG4]: Likewise. * conform/data/fmtmsg.h-data [XPG3]: Likewise. * conform/data/libgen.h-data [XPG3]: Likewise. * conform/data/mqueue.h-data [XPG3 || XPG4]: Likewise. * conform/data/ndbm.h-data [XPG3]: Likewise. * conform/data/net/if.h-data [XPG3 || XPG4 || UNIX98]: Likewise. * conform/data/netdb.h-data [XPG3]: Likewise. * conform/data/netinet/in.h-data [XPG3]: Likewise. * conform/data/poll.h-data [XPG3]: Likewise. * conform/data/spawn.h-data [XPG3 || XPG4 || UNIX98]: Likewise. * conform/data/strings.h-data [XPG3]: Likewise. * conform/data/stropts.h-data [XPG3]: Likewise. * conform/data/sys/mman.h-data [XPG3]: Likewise. * conform/data/sys/resource.h-data [XPG3]: Likewise. * conform/data/sys/select.h-data [XPG3 || XPG4 || UNIX98]: Likewise. * conform/data/sys/statvfs.h-data [XPG3]: Likewise. * conform/data/sys/time.h-data [XPG3]: Likewise. * conform/data/sys/timeb.h-data [XPG3]: Likewise. * conform/data/sys/uio.h-data [XPG3]: Likewise. * conform/data/sys/un.h-data [XPG3]: Likewise. * conform/data/syslog.h-data [XPG3]: Likewise. * conform/data/ucontext.h-data [XPG3]: Likewise. * conform/data/utmpx.h-data [XPG3]: Likewise. * conform/data/varargs.h-data [UNIX98]: Enable file.
* Remove INSTALL_INFO setting in manual/Makefile.Joseph Myers2014-03-062-3/+2
| | | | * manual/Makefile (INSTALL_INFO): Remove variable setting.
* Prepare libm-test.inc structures for multi-rounding-mode testing.Joseph Myers2014-03-063-88/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At present, libm-test.inc tests are run in multiple rounding modes by having a separate array for each rounding mode (which might or might not have the same test inputs as the other such arrays), a separate function calling a RUN_TEST_LOOP_* macro over that array, and a separate call to that function in main. The number of functions tested in multiple rounding modes has gradually increased as rounding-mode-specific bugs have been found and fixed in different functions. It would be better to be able to use a single macro call, in a single function, to run tests for a function over all rounding modes, with this being done for all libm functions except in cases where it's deferred until some bugs can be fixed because XFAILing all affected tests would be painful (that's why the full set of pow tests isn't currently run in all rounding modes). This patch helps prepare for that by making the structures storing expected results for tests store results for all four rounding modes. After this patch, the results for all modes are just duplicates, but tests access the appropriate field in the structure, so helping to pave the way for when the fields stop being duplicates and multiple rounding modes can be tested from a single array. Tests might in future specify a single set of results, to be used in all rounding modes; separate results for each rounding mode, specified manually; or use of auto-libm-tests-* to generate results for each rounding mode. Tested x86_64. * math/libm-test.inc (struct test_f_f_data): Move expected results into structure for each rounding mode. (struct test_ff_f_data): Likewise. (struct test_ff_f_data_nexttoward): Likewise. (struct test_fi_f_data): Likewise. (struct test_fl_f_data): Likewise. (struct test_if_f_data): Likewise. (struct test_fff_f_data): Likewise. (struct test_c_f_data): Likewise. (struct test_f_f1_data): Likewise. (struct test_fF_f1_data): Likewise. (struct test_ffI_f1_data): Likewise. (struct test_c_c_data): Likewise. (struct test_cc_c_data): Likewise. (struct test_f_i_data): Likewise. (struct test_ff_i_data): Likewise. (struct test_f_l_data): Likewise. (struct test_f_L_data): Likewise. (struct test_fFF_11_data): Likewise. (RM_): New macro. (RM_FE_DOWNWARD): Likewise. (RM_FE_TONEAREST): Likewise. (RM_FE_TOWARDZERO): Likewise. (RM_FE_UPWARD): Likewise. (RUN_TEST_LOOP_f_f): Update references to expected results. (RUN_TEST_LOOP_2_f): Likewise. (RUN_TEST_LOOP_fff_f): Likewise. (RUN_TEST_LOOP_c_f): Likewise. (RUN_TEST_LOOP_f_f1): Likewise. (RUN_TEST_LOOP_fF_f1): Likewise. (RUN_TEST_LOOP_fI_f1): Likewise. (RUN_TEST_LOOP_ffI_f1): Likewise. (RUN_TEST_LOOP_c_c): Likewise. (RUN_TEST_LOOP_cc_c): Likewise. (RUN_TEST_LOOP_f_i): Likewise. (RUN_TEST_LOOP_f_i_tg): Likewise. (RUN_TEST_LOOP_ff_i_tg): Likewise. (RUN_TEST_LOOP_f_b): Likewise. (RUN_TEST_LOOP_f_b_tg): Likewise. (RUN_TEST_LOOP_f_l): Likewise. (RUN_TEST_LOOP_f_L): Likewise. (RUN_TEST_LOOP_fFF_11): Likewise. * math/gen-libm-test.pl (parse_args): Output four copies of expected results for each test.
* Don't define __ASSUME_UTIMES for linux-generic architectures.Joseph Myers2014-03-063-2/+5
| | | | | | | | | | | | | | | | The __ASSUME_UTIMES macro describes whether the utimes syscall is present. For linux-generic architectures, it isn't (utimensat is instead), so the macro should not be defined for them; this patch removes the spurious definitions for such architectures. (Those definitions don't actually cause any user-visible bug, because futimes.c doesn't use __ASSUME_UTIMES if __ASSUME_UTIMENSAT is defined, and futimesat.c and utimes.c are overridden for linux-generic, but the definitions are still logically incorrect.) * sysdeps/unix/sysv/linux/aarch64/kernel-features.h (__ASSUME_UTIMES): Remove. * sysdeps/unix/sysv/linux/tile/kernel-features.h (__ASSUME_UTIMES): Likewise.
* Adjust how gen-auto-libm-tests handles before-rounding/after-rounding cases.Joseph Myers2014-03-064-327/+315
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes gen-auto-libm-tests so that, when generating test results that depend on whether the architecture has before-rounding or after-rounding tininess detection, the :before-rounding or :after-rounding conditions go on the exception / errno flags generated, rather than generating two separate lines in auto-libm-test-out for e.g. flt-32:before-rounding and flt-32:after-rounding. The rationale for this is as follows. It would be desirable for testing a libm function in all rounding modes to require just one function and array in libm-test.inc, not four (or five), with the array of test data including expected results for all rounding modes rather than separate arrays for each rounding mode that also need to repeat all the test inputs. For gen-libm-test.pl to generate data for such an array from auto-libm-test-out, it would be helpful if each (format, test input) pair has exactly four lines in auto-libm-test-out, one for each rounding mode, rather than some rounding modes having just one line and some having two because the exceptions depend on tininess detection. Tested x86_64 and x86. * math/gen-auto-libm-tests.c: Update comment on output format. (output_for_one_input_case): Generate before-rounding and after-rounding information as conditions on output flags not floating-point format. * math/auto-libm-test-out: Regenerated. * math/gen-libm-test.pl (cond_value): New function. (or_cond_value): Use cond_value. (generate_testfile): Handle conditional exceptions.
* Automatically check sanity of ulps from libm tests.Joseph Myers2014-03-052-191/+407
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes libm-test.inc apply sanity checks to ulps values resulting from tests, or found in libm-test-ulps files, to avoid the need for manual checking/editing of new ulps for cases that are excessively large or involve functions that should not have any ulps. For IBM long double, errors must be at most 14ulp (the largest currently checked-in value), or at most 3ulp (the documented error bound for division) in the case of exactly-determined functions; for other formats, the limits are 9ulp (also the largest currently checked-in value) and 0ulp. Limits from ulps files are saturated to those bounds, and regen-ulps will ignore any errors outside those bounds. (Thus if, say, you have an architecture-specific problem with fma, the tests can still be XFAILed in auto-libm-test-in, but errors outside the permitted range can no longer be listed in libm-test-ulps.) Tested x86_64. * math/libm-test.inc (max_valid_error): New variable. (init_max_error): Take new argument specifying whether function results are exactly determined. Set max_valid_error and bound other variables for errors based on this argument. (set_max_error): Do not record results above max_valid_error. (check_float_internal): Only accept errors of up to 0.5ulps if also at most max_valid_error. (START): Take new argument EXACT and pass it to init_max_error. (acos_test): Update call to START. (acos_test_tonearest): Likewise. (acos_test_towardzero): Likewise. (acos_test_downward): Likewise. (acos_test_upward): Likewise. (acosh_test): Likewise. (asin_test): Likewise. (asin_test_tonearest): Likewise. (asin_test_towardzero): Likewise. (asin_test_downward): Likewise. (asin_test_upward): Likewise. (asinh_test): Likewise. (atan_test): Likewise. (atanh_test): Likewise. (atan2_test): Likewise. (cabs_test): Likewise. (cacos_test): Likewise. (cacosh_test): Likewise. (carg_test): Likewise. (casin_test): Likewise. (casinh_test): Likewise. (catan_test): Likewise. (catanh_test): Likewise. (cbrt_test): Likewise. (ccos_test): Likewise. (ccosh_test): Likewise. (ceil_test): Likewise. (cexp_test): Likewise. (cimag_test): Likewise. (clog_test): Likewise. (clog10_test): Likewise. (conj_test): Likewise. (copysign_test): Likewise. (cos_test): Likewise. (cos_test_tonearest): Likewise. (cos_test_towardzero): Likewise. (cos_test_downward): Likewise. (cos_test_upward): Likewise. (cosh_test): Likewise. (cosh_test_tonearest): Likewise. (cosh_test_towardzero): Likewise. (cosh_test_downward): Likewise. (cosh_test_upward): Likewise. (cpow_test): Likewise. (cproj_test): Likewise. (creal_test): Likewise. (csin_test): Likewise. (csinh_test): Likewise. (csqrt_test): Likewise. (ctan_test): Likewise. (ctan_test_tonearest): Likewise. (ctan_test_towardzero): Likewise. (ctan_test_downward): Likewise. (ctan_test_upward): Likewise. (ctanh_test): Likewise. (ctanh_test_tonearest): Likewise. (ctanh_test_towardzero): Likewise. (ctanh_test_downward): Likewise. (ctanh_test_upward): Likewise. (erf_test): Likewise. (erfc_test): Likewise. (exp_test): Likewise. (exp_test_tonearest): Likewise. (exp_test_towardzero): Likewise. (exp_test_downward): Likewise. (exp_test_upward): Likewise. (exp10_test): Likewise. (exp10_test_tonearest): Likewise. (exp10_test_towardzero): Likewise. (exp10_test_downward): Likewise. (exp10_test_upward): Likewise. (pow10_test): Likewise. (exp2_test): Likewise. (expm1_test): Likewise. (expm1_test_tonearest): Likewise. (expm1_test_towardzero): Likewise. (expm1_test_downward): Likewise. (expm1_test_upward): Likewise. (fabs_test): Likewise. (fdim_test): Likewise. (floor_test): Likewise. (fma_test): Likewise. (fma_test_towardzero): Likewise. (fma_test_downward): Likewise. (fma_test_upward): Likewise. (fmax_test): Likewise. (fmin_test): Likewise. (fmod_test): Likewise. (fpclassify_test): Likewise. (frexp_test): Likewise. (hypot_test): Likewise. (ilogb_test): Likewise. (isfinite_test): Likewise. (finite_test): Likewise. (isgreater_test): Likewise. (isgreaterequal_test): Likewise. (isinf_test): Likewise. (isless_test): Likewise. (islessequal_test): Likewise. (islessgreater_test): Likewise. (isnan_test): Likewise. (isnormal_test): Likewise. (issignaling_test): Likewise. (isunordered_test): Likewise. (j0_test): Likewise. (j1_test): Likewise. (jn_test): Likewise. (ldexp_test): Likewise. (lgamma_test): Likewise. (gamma_test): Likewise. (lrint_test): Likewise. (lrint_test_tonearest): Likewise. (lrint_test_towardzero): Likewise. (lrint_test_downward): Likewise. (lrint_test_upward): Likewise. (llrint_test): Likewise. (llrint_test_tonearest): Likewise. (llrint_test_towardzero): Likewise. (llrint_test_downward): Likewise. (llrint_test_upward): Likewise. (log_test): Likewise. (log10_test): Likewise. (log1p_test): Likewise. (log2_test): Likewise. (logb_test): Likewise. (logb_test_downward): Likewise. (lround_test): Likewise. (llround_test): Likewise. (modf_test): Likewise. (nearbyint_test): Likewise. (nextafter_test): Likewise. (nexttoward_test): Likewise. (pow_test): Likewise. (pow_test_tonearest): Likewise. (pow_test_towardzero): Likewise. (pow_test_downward): Likewise. (pow_test_upward): Likewise. (remainder_test): Likewise. (drem_test): Likewise. (remainder_test_tonearest): Likewise. (drem_test_tonearest): Likewise. (remainder_test_towardzero): Likewise. (drem_test_towardzero): Likewise. (remainder_test_downward): Likewise. (drem_test_downward): Likewise. (remainder_test_upward): Likewise. (drem_test_upward): Likewise. (remquo_test): Likewise. (rint_test): Likewise. (rint_test_tonearest): Likewise. (rint_test_towardzero): Likewise. (rint_test_downward): Likewise. (rint_test_upward): Likewise. (round_test): Likewise. (scalb_test): Likewise. (scalbn_test): Likewise. (scalbln_test): Likewise. (signbit_test): Likewise. (sin_test): Likewise. (sin_test_tonearest): Likewise. (sin_test_towardzero): Likewise. (sin_test_downward): Likewise. (sin_test_upward): Likewise. (sincos_test): Likewise. (sinh_test): Likewise. (sinh_test_tonearest): Likewise. (sinh_test_towardzero): Likewise. (sinh_test_downward): Likewise. (sinh_test_upward): Likewise. (sqrt_test): Likewise. (sqrt_test_tonearest): Likewise. (sqrt_test_towardzero): Likewise. (sqrt_test_downward): Likewise. (sqrt_test_upward): Likewise. (tan_test): Likewise. (tan_test_tonearest): Likewise. (tan_test_towardzero): Likewise. (tan_test_downward): Likewise. (tan_test_upward): Likewise. (tanh_test): Likewise. (tgamma_test): Likewise. (trunc_test): Likewise. (y0_test): Likewise. (y1_test): Likewise. (yn_test): Likewise. (significand_test): Likewise.
* Don't include individual test ulps in libm-test-ulps.Joseph Myers2014-03-0524-218882/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As recently discussed <https://sourceware.org/ml/libc-alpha/2014-02/msg00670.html>, it doesn't seem particularly useful for libm-test-ulps files to contain huge amounts of data on ulps for individual tests; just the global maximum observed ulps for each function, together with the verification of exceptions, errno and special results such as infinities and NaNs for each test, suffices to verify that a function's behavior on the given test inputs is within the expected accuracy. Removing this data reduces source tree churn caused by updates to these files when libm tests are added, and reduces the frequency with which testsuite additions actually need libm-test-ulps changes at all. Accordingly, this patch removes that data, so that individual tests get checked against the global bounds for the given function and only generate an error if those are exceeded. Tested x86_64 (including verifying that if an ulps value is artificially reduced, the tests do indeed fail as they should and "make regen-ulps" generates the expected changes). * math/libm-test.inc (struct ulp_data): Don't refer to ulps for individual tests in comment. (libm-test-ulps.h): Don't refer to test_ulps in #include comment. (prev_max_error): New variable. (prev_real_max_error): Likewise. (prev_imag_max_error): Likewise. (compare_ulp_data): Don't refer to test names in comment. (find_test_ulps): Remove function. (find_function_ulps): Likewise. (find_complex_function_ulps): Likewise. (init_max_error): Take function name as argument. Look up ulps for that function. (print_ulps): Remove function. (print_max_error): Use prev_max_error instead of calling find_function_ulps. (print_complex_max_error): Use prev_real_max_error and prev_imag_max_error instead of calling find_complex_function_ulps. (check_float_internal): Take max_ulp parameter instead of calling find_test_ulps. Don't call print_ulps. (check_float): Update call to check_float_internal. (check_complex): Update calls to check_float_internal. (START): Pass argument to init_max_error. * math/gen-libm-test.pl (%results): Don't include "kind" information. (parse_ulps): Don't handle ulps of individual tests. (print_ulps_file): Likewise. (output_ulps): Likewise. * math/README.libm-test: Update. * manual/libm-err-tab.pl (parse_ulps): Don't handle ulps of individual tests. * sysdeps/aarch64/libm-test-ulps: Remove individual test ulps. * sysdeps/alpha/fpu/libm-test-ulps: Likewise. * sysdeps/arm/libm-test-ulps: Likewise. * sysdeps/i386/fpu/libm-test-ulps: Likewise. * sysdeps/ia64/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Likewise. * sysdeps/microblaze/libm-test-ulps: Likewise. * sysdeps/mips/mips32/libm-test-ulps: Likewise. * sysdeps/mips/mips64/libm-test-ulps: Likewise. * sysdeps/powerpc/fpu/libm-test-ulps: Likewise. * sysdeps/powerpc/nofpu/libm-test-ulps: Likewise. * sysdeps/s390/fpu/libm-test-ulps: Likewise. * sysdeps/sh/libm-test-ulps: Likewise. * sysdeps/sparc/fpu/libm-test-ulps: Likewise. * sysdeps/tile/libm-test-ulps: Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. * sysdeps/hppa/fpu/libm-test-ulps: Remove individual test ulps.
* hppa: Remove fma ulps from libm-test-ulps.Carlos O'Donell2014-03-052-9/+2
| | | | | | | | The expected fma ulp of 1 has been removed. The fma function should have 0 ulps. Bug #16661 has been filed to track this issue.
* hppa: Regenerate ULPs again.Carlos O'Donell2014-03-042-0/+1823
|
* hppa: Regenerate ULPs.Carlos O'Donell2014-03-042-0/+32
|
* Fix libm-test.inc:print_complex_max_error handling of some error cases.Joseph Myers2014-03-042-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When regenerating ulps incrementally with "make regen-ulps", the resulting diffs should only increase existing ulps, never decrease them. This allows successive uses of "make regen-ulps" on different hardware or with different compiler configurations to accumulate ulps that are sufficient for tests to pass in a variety of configurations. However, sometimes changes that decrease ulps are wrongly generated; thus, when applying <https://sourceware.org/ml/libc-alpha/2014-02/msg00605.html> I had to remove such changes manually. The problem is print_complex_max_error. If the ulps for either the real or the imaginary part of a function are out of range, this function prints the maximum ulps seen for both parts, which then replace those previously in libm-test-ulps. So if the ulps for one part are bigger than recorded before, but those for the other part are smaller, the diffs reduce existing ulps. This patch fixes the logic so that only increased ulps get printed. Tested x86_64 ("make math/tests", and "make regen-ulps" in a situation with ulps manually modified so one part would go up and the other down, to confirm the changes have the intended effect then). * math/libm-test.inc (print_complex_max_error): Check separately whether real and imaginary errors are within allowed range and pass 0 to print_complex_function_ulps instead of value within allowed range.
* Fix up formatting in tst-ftell-active-handler.cSiddhesh Poyarekar2014-03-042-7/+12
|
* Fix up formattingSiddhesh Poyarekar2014-03-042-2/+4
|
* Use cached offset in ftell when reliableSiddhesh Poyarekar2014-03-045-23/+65
| | | | | | | | | | | | | | | | | | | | | | | | The cached offset is reliable to use in ftell when the stream handle is active. We can consider a stream as being active when there is unflushed data. However, even in this case, we can use the cached offset only when the stream is not being written to in a+ mode, because this case may have unflushed data and a stale offset; the previous read could have sent it off somewhere other than the end of the file. There were a couple of adjustments necessary to get this to work. Firstly, fdopen now ceases to use _IO_attach_fd because it sets the offset cache to the current file position. This is not correct because there could be changes to the file descriptor before the stream handle is activated, which would not get reflected. A similar offset caching action is done in _IO_fwide, claiming that wide streams have 'problems' with the file offsets. There don't seem to be any obvious problems with not having the offset cache available, other than that it will have to be queried in a subsequent read/write/seek. I have removed this as well. The testsuite passes successfully with these changes on x86_64.
* Separate ftell from fseek logic and avoid modifying FILE data (#16532)Siddhesh Poyarekar2014-03-047-135/+602
| | | | | | | | | | | | | | | ftell semantics are distinct from fseek(SEEK_CUR) especially when it is called on a file handler that is not yet active. Due to this caveat, much care needs to be taken while modifying the handler data and hence, this first iteration on separating out ftell focusses on maintaining handler data integrity at all times while it figures out the current stream offset. The result is that it makes a syscall for every offset request. There is scope for optimizing this by caching offsets when we know that the handler is active. A simple way to find out is when the buffers have data. It is not so simple to find this out when the buffer is empty without adding some kind of flag.
* Retire the separate ChangeLog files in nptl/ and nptl_db/ subdirs.Roland McGrath2014-03-033-0/+15
|
* nscd: Improved support for tracking startup failure in nscd service (BZ #16639)Siddhesh Poyarekar2014-03-035-37/+161
| | | | | | | | | | | | | | | | | | | | | | Currently, the nscd parent process parses commandline options and configuration, forks on startup and immediately exits with a success. If the child process encounters some error after this, it goes undetected and any services started up after it may have to repeatedly check to make sure that the nscd service did actually start up and is serving requests. To make this process more reliable, I have added a pipe between the parent and child process, through which the child process sends a notification to the parent informing it of its status. The parent waits for this status and once it receives it, exits with the corresponding exit code. So if the child service sends a success status (0), the parent exits with a success status. Similarly for error conditions, the child sends the non-zero status code, which the parent passes on as the exit code. This, along with setting the nscd service type to forking in its systemd configuration file, allows systemd to be certain that the nscd service is ready and is accepting connections.
* Revert 4248f0da6ff9e7dd63464cdecec2dec332dfc2f0.Carlos O'Donell2014-03-032-6/+113
| | | | | | | Objections were raised surrounding the calloc simplification and it is better to revert the patch, continue discussions and then submit a new patch for inclusion with all issues fully addressed.
* PowerPC: Update powerpc-fpu ULPs.Adhemerval Zanella2014-03-032-0/+57
|
* PowerPC: strrchr optimization for POWER7/PPC64Rajalakshmi Srinivasaraghavan2014-03-038-2/+389
| | | | | | This patch optimizes strrchr() for ppc64. It uses aligned memory access along with cmpb instruction and CPU prefetch to avoid cache misses for speed improvement.
* Add changelog.Ondřej Bílka2014-03-011-0/+6
|
* Add header and standard information to threads.texi.Carlos O'Donell2014-02-282-0/+15
| | | | | | | The glibc manual uses special annotations to include functions in the summary chapter. These annotations were missing from the functions in the threads chapter. This patch adds those special markers and in turn adds these functions to the summary chapter.
* Promote do_lookup_x:check_match to a full function.Carlos O'Donell2014-02-282-104/+129
| | | | | | | | | | | | | | | | | While it may be argued that nested functions make the resulting code easier to read, or worse to read the following two bugs make it difficult to debug: Bug 8300 - no local symbol information within nested or nesting procedures https://sourceware.org/bugzilla/show_bug.cgi?id=8300 Bug 53927 - wrong value for DW_AT_static_link http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53927 Until these are fixed I've made check_match a full function. After they are fixed we can resume arguing about the merits of nested functions on readability and maintenance.
* Make strtok benchmark competive.Ondřej Bílka2014-02-282-58/+9
| | | | | We include a generic version of strtok to result which could be faster when underlying primitives are better optimized than current version.
* Fix fallout from Joseph's untested Makeconfig change.Roland McGrath2014-02-2820-38/+62
|
* Add missing } in Versions file.Roland McGrath2014-02-282-0/+5
|
* Fix missing ChangeLogSiddhesh Poyarekar2014-02-281-0/+6
| | | | | I had forgotten to add a changelog entry for a patch. Added it now in the right place.
* PowerPC: llround/llroundf POWER8 optimizationAdhemerval Zanella2014-02-275-5/+97
| | | | | | This patch add a optimized llround/llroundf implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
* PowerPC: llrint/llrintf POWER8 optimizationAdhemerval Zanella2014-02-275-3/+94
| | | | | | This patch add a optimized llrint/llrintf implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
* PowerPC: Optimized finite/finitef for POWER8Adhemerval Zanella2014-02-277-6/+116
| | | | | | This patch add a optimized finite/finitef implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
* PowerPC: Optimized isinf/isinff for POWER8Adhemerval Zanella2014-02-277-6/+122
| | | | | | This patch add a optimized isinf/isinff implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
* PowerPC: Optimized isnan/isnanf for POWER8Adhemerval Zanella2014-02-278-17/+128
| | | | | | This patch add a optimized isnan/isnanf implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
* Fix ARM NAN fraction bits.Joey Ye2014-02-272-3/+8
| | | | | | | | | | | | | | | | | | Current ARM soft-float implementation is violating the RTABI (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.pdf) Section 4.1.1.1: When not otherwise specified by IEEE 754, the result on an invalid operation should be the quiet NaN bit pattern with only the most significant bit of the significand set, and all other significand bits zero. This patch fixes it by setting _FP_NANFRAC_* to zero. Ran make check test with -mfloat-abi=soft. No regression. * sysdeps/arm/soft-fp/sfp-machine.h (_FP_NANFRAC_S, _FP_NANFRAC_D) (_FP_NANFRAC_Q): Set to zero.
* Fix ChangeLog formattingSiddhesh Poyarekar2014-02-271-3/+3
|
* Fix sign of input to bsloww1 (BZ #16623)Siddhesh Poyarekar2014-02-276-7/+205
| | | | | | | | In 84ba214c, I removed some redundant sign computations and in the process, I incorrectly got rid of a temporary variable, thus passing the absolute value of the input to bsloww1. This caused #16623. This fix undoes the incorrect change.
* Support expected failures in .test-result files.Joseph Myers2014-02-275-5/+29
| | | | | | | | | | | | | | | | | | | | | | | This patch, an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00195.html>, makes it possible for .test-result files for individual tests to contain XPASS and XFAIL rather than PASS and FAIL in cases where failure is expected. This replaces the marking of two individual tests with "-" to cause them to be expected at makefile level to fail; evaluate-test.sh will ensure it exits with status 0 for an expected failure. Tested x86_64. * scripts/evaluate-test.sh: Take new argument indicating whether failure is expected. * Makeconfig (evaluate-test): Pass argument to evaluate-test.sh indicating whether failure is expected. * conform/Makefile (test-xfail-run-conformtest): New variable. ($(objpfx)run-conformtest.out): Don't expect to fail at makefile level. * posix/Makefile (test-xfail-annexc): New variable. ($(objpfx)annexc.out): Don't expect to fail at makefile level.
* Consistently include Makeconfig after defining subdir.Joseph Myers2014-02-2662-76/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html> I noted it was necessary to add includes of Makeconfig early in various subdirectory makefiles for the tests-special variable settings added by that patch to be conditional on configuration information. No-one commented on the general question there of whether Makeconfig should always be included immediately after the definition of subdir. This patch implements that early inclusion of Makeconfig in each directory (which is a lot easier than consistent placement of includes of Rules). Includes are added if needed, or moved up if already present. Subdirectory "all:" targets are removed, since Makeconfig provides one. There is potential for further cleanups I haven't done. Rules and Makerules have code such as ifneq "$(findstring env,$(origin headers))" "" headers := endif to override to empty any value of various variables that came from the environment. I think there is a case for Makeconfig setting all the subdirectory variables (other than subdir) to empty to ensure no outside value is going to take effect if a subdirectory fails to define a variable. (A list of such variables, possibly out of date and incomplete, is in manual/maint.texi.) Rules and Makerules would give errors if Makeconfig hadn't already been included, instead of including it themselves. The special code to override values coming from the environment would then be obsolete and could be removed. Tested x86_64, including that installed binaries are identical before and after the patch. * argp/Makefile: Include Makeconfig immediately after defining subdir. * assert/Makefile: Likewise. * benchtests/Makefile: Likewise. * catgets/Makefile: Likewise. * conform/Makefile: Likewise. * crypt/Makefile: Likewise. * csu/Makefile: Likewise. (all): Remove target. * ctype/Makefile: Include Makeconfig immediately after defining subdir. * debug/Makefile: Likewise. * dirent/Makefile: Likewise. * dlfcn/Makefile: Likewise. * gmon/Makefile: Likewise. * gnulib/Makefile: Likewise. * grp/Makefile: Likewise. * gshadow/Makefile: Likewise. * hesiod/Makefile: Likewise. * hurd/Makefile: Likewise. (all): Remove target. * iconvdata/Makefile: Include Makeconfig immediately after defining subdir. * inet/Makefile: Likewise. * intl/Makefile: Likewise. * io/Makefile: Likewise. * libio/Makefile: Likewise. (all): Remove target. * locale/Makefile: Include Makeconfig immediately after defining subdir. * login/Makefile: Likewise. * mach/Makefile: Likewise. (all): Remove target. * malloc/Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. * manual/Makefile: Include Makeconfig immediately after defining subdir. * math/Makefile: Likewise. * misc/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * po/Makefile: Likewise. (all): Remove target. * posix/Makefile: Include Makeconfig immediately after defining subdir. * pwd/Makefile: Likewise. * resolv/Makefile: Likewise. * resource/Makefile: Likewise. * rt/Makefile: Likewise. * setjmp/Makefile: Likewise. * shadow/Makefile: Likewise. * signal/Makefile: Likewise. * socket/Makefile: Likewise. * soft-fp/Makefile: Likewise. * stdio-common/Makefile: Likewise. * stdlib/Makefile: Likewise. * streams/Makefile: Likewise. * string/Makefile: Likewise. * sunrpc/Makefile: Likewise. (all): Remove target. * sysvipc/Makefile: Include Makeconfig immediately after defining subdir. * termios/Makefile: Likewise. * time/Makefile: Likewise. * timezone/Makefile: Likewise. (all): Remove target. * wcsmbs/Makefile: Include Makeconfig immediately after defining subdir. * wctype/Makefile: Likewise. libidn/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. localedata/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. nptl/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. nptl_db/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir.
* Fix two spaces after sentence.Ondřej Bílka2014-02-2619-55/+74
| | | | | Minor formatting fix that was carried by issuing sed -e"s/\. \([A-Z]\)/. \1/" followed by editing result.
* Add macros and inline functions to mips math_private.h file.Steve Ellcey2014-02-262-8/+169
| | | | | | This is a patch to the MIPS math_private.h file to define HAVE_RM_CTX and implement the ctx macros. I also defined a few other macros and inline functions that I skipped the first time.
* Use @Theglibc{} in manual/ipc.texi.Carlos O'Donell2014-02-262-1/+3
|
* Add a new "Inter-Process Communication" chapter.Carlos O'Donell2014-02-265-4/+127
| | | | | | | This patch adds a new "Inter-Process Communication" chapter to cover the sem*, msg*, and shm* functions. Initially we document only the sem* function signatures and their safety notes.
* PowerPC: Update powerpc-fpu ULPs.Adhemerval Zanella2014-02-262-2/+3499
|
* Simplify calloc implementation.Ondřej Bílka2014-02-262-109/+10
| | | | | | To make future improvements of allocator simpler we could for now calloc just call malloc and memset. With that we could omit a changes that would duplicate malloc changes anyway.
* BZ #16632: Change [_BSD/_SVID]_SOURCE warning.Carlos O'Donell2014-02-253-3/+12
| | | | | | | | | | | | | | | | | | Source packages that need to support both 2.19 and 2.20 will need to decide to use _BSD_SOURCE and _SVID_SOURCE vs. _DEFAULT_SOURCE. The difficulty in making that decision is that __GLIBC_MINOR__ is itself defined in features.h, but you want to set the feature test macros before including features.h. Therefore to ease the transition we should disable the warning if _DEFAULT_SOURCE is also defined. https://sourceware.org/ml/libc-alpha/2014-02/msg00666.html https://sourceware.org/glibc/wiki/Release/2.20#Packaging_Changes
* BZ #16613: Support TLS in audit libraries.Carlos O'Donell2014-02-259-3/+90
| | | | | | | | | | | This commit fixes a bug where the dynamic loader would crash when loading audit libraries, via LD_AUDIT, where those libraries used TLS. The dynamic loader was not considering that the audit libraries would use TLS and failed to bump the TLS generation counter leaving TLS usage inconsistent after loading the audit libraries. https://sourceware.org/ml/libc-alpha/2014-02/msg00569.html
* misc/sys/select.h (__FD_MASK): Avoid signed integer overflow.Florian Weimer2014-02-253-2/+7
| | | | | | | Shifting into the sign position is currently supported as a GCC extension, but explicitly subjected to future changes. Computation in the unsigned type followed by a cast to the signed type is a GCC extension that will be available forever.
* ARM: Add SystemTap probes to longjmp and setjmp.Will Newton2014-02-255-31/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now the ARM port implements pointer encryption for jmpbufs, gdb needs a SystemTap probe point in longjmp to determine the target PC of a call to longjmp. This patch implements the probe point in longjmp and a similar probe point in setjmp. In order to have all the appropriate registers available to pass to the probe this reorders the layout of jmpbuf, putting the sp and lr registers at the start rather than the end, allowing them to be read and written sequentially. Tested on armv7, no new failures in the glibc testsuite and confirmed that this fixes the gdb.base/longjmp.exp failures in the gdb testsuite. ChangeLog: 2014-02-25 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S: Include stap-probe.h. (__longjmp): Restore sp and lr before restoring callee saved registers. Add longjmp and longjmp_target SystemTap probe point. * sysdeps/arm/bits/setjmp.h (__jmp_buf): Update comment. * sysdeps/arm/include/bits/setjmp.h (__JMP_BUF_SP): Define to zero to match jmpbuf layout. * sysdeps/arm/setjmp.S: Include stap-probe.h. (__sigsetjmp): Save sp and lr before saving callee saved registers. Add setjmp SystemTap probe point.
* S/390: Regenerate ULPs.Stefan Liebler2014-02-252-30/+4670
|