about summary refs log tree commit diff
path: root/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
...
* Benchmark inputs for cos and sinSiddhesh Poyarekar2013-12-311-0/+3
| | | | | | Add a comprehensive number of inputs for all branches in sin and cos computation, excluding the fast paths. This also adds a number of inputs for the multiple precision slow paths.
* benchmark inputs for atanSiddhesh Poyarekar2013-12-311-0/+3
| | | | | | | Add a more comprehensive set of inputs for the atan function. I have also fixed the name on the multiple precision fallback inputs (I couldn't find any new inputs there) to reflect the fact that the fallback is only 144bits and not 768bits as I had earlier mentioned.
* benchmark inputs for tanh and atanhSiddhesh Poyarekar2013-12-311-0/+3
|
* benchmark inputs for asinh and acoshSiddhesh Poyarekar2013-12-311-0/+3
| | | | | | Like sinh and cosh, this patch has benchmark inputs for asinh and acosh, generated using a random number generator and spread over significant branches, ignoring the fast return paths.
* benchmark inputs for sinh and coshSiddhesh Poyarekar2013-12-311-0/+3
| | | | | | | Add a full set of inputs for sinh and cosh functions generated using a random number generator and spreading it over all branches in the function, ignoring the fast paths (i.e. immediate return for special values).
* benchmark inputs for asin and acosSiddhesh Poyarekar2013-12-311-0/+5
| | | | | Add a comprehensive set of inputs for asin and acos functions, including the multiple precision fallback path.
* Fix ChangeLogOndřej Bílka2013-12-301-1/+2
|
* Fix spelling in manual, as in bug 16376Ville Skytta2013-12-301-0/+18
|
* Add Solvenian translations for glibc messages.Carlos O'Donell2013-12-271-1/+5
|
* ignore gdb related filesMike Frysinger2013-12-271-0/+4
| | | | Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Fix typo in csloww()Allan McRae2013-12-271-0/+6
| | | | | An incorrect variable name was used during the refactoring done in commit 4aafb73c.
* Define __CORRECT_ISO_CPP_STRING_H_PROTO correctly for Clang.Brooks Moses2013-12-231-0/+7
| | | | | | | | | | | | | | | | | | | | | In the string/string.h and string/strings.h headers, we have a couple of macros that "tell the caller that we provide correct C++ prototypes" according to the comment; they are used to determine whether to wrap some prototypes in "extern "C++"" (and provide multiple overloads of them, and some other magic) when __cplusplus is defined. The macros are set to check for sufficiently-recent GCC versions (4.4 and later), but this is not the right check for non-GCC compilers. In particular, these macros should also be set when using Clang -- if they are not set, then Clang will be unable to correctly diagnose a number of subtle bugs that will be errors in GCC compilations. As per discussion on earlier versions of this patch, rather than restrict the fix to Clang per se, we assume that all C++ compilers that claim to fully support C++98 are using a standard-conforming C++ standard library, which seems pretty reasonable. Clang has been providing an appropriate value of __cplusplus since May 2012.
* Restore accidentally deleted bug-fix entries in NEWS.Maxim Kuvyrkov2013-12-241-0/+4
| | | | * NEWS: Restore accidentally deleted bug-fix entries.
* Fix race in free() of fastbin chunk: BZ #15073Maxim Kuvyrkov2013-12-241-0/+7
| | | | | | | | | | | | Perform sanity check only if we have_lock. Due to lockless nature of fastbins we need to be careful derefencing pointers to fastbin entries (chunksize(old) in this case) in multithreaded environments. The fix is to add have_lock to the if-condition checks. The rest of the patch only makes code more readable. * malloc/malloc.c (_int_free): Perform sanity check only if we have_lock.
* Add Changelog and news entry.Ondřej Bílka2013-12-231-0/+6
|
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-231-0/+4
|
* Fix ldbl-128 lgammal for small negative arguments (bug 16337).Joseph Myers2013-12-221-0/+5
| | | | | | | | | | | | | | | | | | | | | This patch fixes bug 16337, ldbl-128 lgammal spurious overflows for small negative arguments (the arguments in question are already in the testsuite). The implementation uses the reflection formula to compute lgamma of negative x from lgamma of -x, effectively resulting in a calculation -log(x^2) + log(-x); cancellation isn't problematic in this case (bugs for problematic cancellation in lgamma are 2542, 2543, 2558), but the x^2 calculation can underflow (in which case there is spurious logic to return an overflowing value - lgamma can only ever correctly overflow for large positive arguments, though tgamma can overflow for small arguments of either sign as well as large positive arguments). The fix is simply to calculate the result directly with logl when the argument is a small enough negative number. Tested mips64. * sysdeps/ieee754/ldbl-128/e_lgammal_r.c (__ieee754_lgammal_r): Calculate results for small negative arguments directly rather than using reflection formula with special underflow handling.
* Flatten sysdeps/unix/bsd/bsd4.4 into sysdeps/unix/bsd.Joseph Myers2013-12-221-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed in <https://sourceware.org/ml/libc-alpha/2012-04/msg00840.html> and <https://sourceware.org/ml/libc-alpha/2012-04/msg00989.html>, it seems appropriate to flatten sysdeps/unix/bsd/bsd4.4 into sysdeps/unix/bsd. The bulk of the patch is just moving files. The only other changes are: update paths in sysdeps/mach/hurd/Implies and sysdeps/unix/sysv/linux/wait3.c; merge the two syscalls.list files, with the removal of syscalls that were in sysdeps/unix/bsd/syscalls.list but overridden in the bsd4.4 directory by .c files there. Tested x86_64. The installed shared libraries are identical before and after the patch except for libc.so where the move of wait3.c (included by sysdeps/unix/sysv/linux/wait3.c) affects debug info, but the disassembly is unchanged. * sysdeps/mach/hurd/Implies: Change unix/bsd/bsd4.4 to unix/bsd. * sysdeps/unix/bsd/syscalls.list (chflags): Add entry from sysdeps/unix/bsd/bsd4.4/syscalls.list. (fchflags): Likewise. (revoke): Likewise. (setlogin): Likewise. (sigaltstack): Likewise. (wait4): Likewise. (sigblock): Remove. (sigsetmask): Likewise. (wait3): Likewise. (waitpid): Likewise. * sysdeps/unix/bsd/bsd4.4/syscalls.list: Remove file. * sysdeps/unix/sysv/linux/wait3.c: Update directory of included file. * sysdeps/unix/bsd/bsd4.4/Makefile: Move to ... * sysdeps/unix/bsd/Makefile: ... here. * sysdeps/unix/bsd/bsd4.4/Versions: Move to ... * sysdeps/unix/bsd/Versions: ... here. * sysdeps/unix/bsd/bsd4.4/bits/sockaddr.h: Move to ... * sysdeps/unix/bsd/bits/sockaddr.h: ... here. * sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c: Move to ... * sysdeps/unix/bsd/cmsg_nxthdr.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigblock.c: Move to ... * sysdeps/unix/bsd/sigblock.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigsetmask.c: Move to ... * sysdeps/unix/bsd/sigsetmask.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigvec.c: Move to ... * sysdeps/unix/bsd/sigvec.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcdrain.c: Move to ... * sysdeps/unix/bsd/tcdrain.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcgetattr.c: Move to ... * sysdeps/unix/bsd/tcgetattr.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcsetattr.c: Move to ... * sysdeps/unix/bsd/tcsetattr.c: ... here. * sysdeps/unix/bsd/bsd4.4/wait.c: Move to ... * sysdeps/unix/bsd/wait.c: ... here. * sysdeps/unix/bsd/bsd4.4/wait3.c: Move to ... * sysdeps/unix/bsd/wait3.c: ... here. * sysdeps/unix/bsd/bsd4.4/waitpid.c: Move to ... * sysdeps/unix/bsd/waitpid.c: ... here.
* Fix x86 / x86_64 expl / expl10l wild results in directed rounding modes (bug ↵Joseph Myers2013-12-211-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 16356). This patch fixes bug 16356, bad results from x86 / x86_64 expl / exp10l in directed rounding modes, the most serious of the bugs shown up by my patch expanding libm test coverage. When I fixed bug 16293, I thought it was only necessary to set round-to-nearest when using frndint in expm1 functions, because in other cases the cancellation error from having the resulting fractional part close to 1 or -1 would not be significant. However, in expl and exp10l, the way the final fractional part gets computed (something more complicated than a simple subtraction, because more precision is needed than you'd get that way) can result in a value outside the range [-1, 1] when the argument to frndint was very close to an integer and was rounded the "wrong" way because of the rounding mode - and the f2xm1 instruction has undefined results if its argument is outside [-1, 1], so resulting in the large errors seen. So this patch removes the USE_AS_EXPM1L conditionals on the round-to-nearest settings, so all of expl, expm1l and exp10l now get round-to-nearest used for frndint (meaning the final fractional part can at most be slightly above 0.5 in magnitude). Associated tests of exp and exp10 are added and testing of exp10 in directed rounding modes enabled. Tested x86_64 and x86 and ulps updated accordingly. * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL): Also set round-to-nearest for [!USE_AS_EXPM1L]. * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL): Likewise. * math/auto-libm-test-in: Do not expect cosh tests to fail. Add more tests of exp and exp10. Expect some exp10 tests to miss exceptions or fail in directed rounding modes. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (exp10_tonearest_test_data): New array. (exp10_test_tonearest): New function. (exp10_towardzero_test_data): New array. (exp10_test_towardzero): New function. (exp10_downward_test_data): New array. (exp10_test_downward): New function. (exp10_upward_test_data): New array. (exp10_test_upward): New function. (main): Call the new functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Add more libm-test coverage of [a-c]* real functions.Joseph Myers2013-12-201-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | Various libm functions have inadequate test coverage in libm-test.inc / auto-libm-test-in - failing to cover all the usual special cases (infinities, NaNs, zero, large and small finite values, subnormals) as well as a reasonable range of ordinary inputs and, where appropriate, inputs close to the thresholds for underflow and overflow. This patch improves test coverage for real functions [a-c]* (with the expectation of adding more coverage for other functions later). Tested x86_64 and x86 and ulps updated accordingly (and eight glibc bugs and one C11 DR filed for issues found in the process). * math/auto-libm-test-in: Add more tests of acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, cos and cosh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (acosh_test_data): Add more tests. (atanh_test_data): Likewise. (ceil_test_data): Likewise. (copysign_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Update timezone code from tzcode 2013i.Joseph Myers2013-12-201-0/+8
| | | | | | | | | | | | | | | | | Now we have Paul's support for version-3 tz files checked in, this patch updates all the code we take (unmodified) from tzcode to version 2013i (which includes the support for generating version-3 tz files where necessary). Tested x86_64. * timezone/checktab.awk: Update from tzcode 2013i. * timezone/private.h: Likewise. * timezone/scheck.c: Likewise. * timezone/tzfile.h: Likewise. * timezone/tzselect.ksh: Likewise. * timezone/zdump.c: Likewise. * timezone/zic.c: Likewise.
* Move tests of cpow from libm-test.inc to auto-libm-test-in.Joseph Myers2013-12-201-0/+13
| | | | | | | | | | | | | | | | | | | | This patch moves tests of cpow to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of cpow. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (cpow_test_data): Use AUTO_TESTS_cc_c. * * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_cc_c. (func_calc_desc): Add mpc_cc_c union field. (test_functions): Add cpow. (special_fill_2pi): New function. (special_real_inputs): Add 2pi. (calc_generic_results): Handle mpc_cc_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc.Joseph Myers2013-12-201-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Consolidate code to compute sin and cos from lookup tablesSiddhesh Poyarekar2013-12-201-0/+5
| | | | | | | | | | | This patch consolidates the multiple copies of code that looks up sin and cos of a number from the lookup table and computes the final value, into static functions. This does not have a noticeable performance impact since the functions are inlined by gcc. There is further scope for consolidation in the functions but they cause a more noticable impact on performance (>5%) due to which I have held back on them.
* Remove more redundant computations in s_sin.cSiddhesh Poyarekar2013-12-201-0/+7
| | | | | | | | Removed more redundant computations in the slow paths of the sin and cos functions. The notable change is the passing of the most significant bits of X to the slow functions to check if X is positive so that just the absolute value of x can be passed and the repeated ABS() operation is avoided.
* Remove redundant arguments in reduce_and_computeSiddhesh Poyarekar2013-12-201-0/+5
| | | | | The A and DA arguments in reduce_and_compute are useless and hence have been removed.
* Remove some redundant computations in s_sin.cSiddhesh Poyarekar2013-12-201-0/+9
| | | | | | | | There are multiple points in the code where the absolute value of a number is computed multiple times or is computed even though the value can only be positive. This change removes those redundant computations. Tested on x86_64 to verify that there were no regressions in the testsuite.
* Move tests of cabs and carg from libm-test.inc to auto-libm-test-in.Joseph Myers2013-12-191-0/+10
| | | | | | | | | | | | | | | | | This patch moves tests of cabs and carg to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Tested x86_64 and x86; no ulps updates needed. * math/auto-libm-test-in: Add tests of cabs and carg. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (cabs_test_data): Use AUTO_TESTS_c_f. (carg_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_f. (func_calc_desc): Add mpc_c_f union field. (test_functions): Add cabs and carg. (calc_generic_results): Handle mpc_c_f.
* Don't make soft-fp symbols compat symbols for powerpc-nofpu.Joseph Myers2013-12-191-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sysdeps/powerpc/powerpc32/libgcc-compat.S makes certain symbols that glibc once accidentally reexported from libgcc into compat symbols. Where the exports were purely accidental, this is the right thing to do. However, for powerpc-nofpu the soft-fp symbols are deliberately exported from libc, given public versions in sysdeps/powerpc/nofpu/Versions and used by libm in preference to the libgcc versions that do not support the software exceptions and rounding modes. The libc versions should also be usable by user programs, though normally libgcc gets linked in first (meaning, effectively, that the <fenv.h> functions are broken as regards their expected effects on user arithmetic). A longstanding todo item is to remove the functions in question from libgcc (when built with recent enough glibc) - that is, remove them from static libgcc and make them compat symbols in shared libgcc - so that this works properly (this is one of the items mentioned at <http://gcc.gnu.org/wiki/Software_floating_point> - parts of that page are obviously out of date, but this item still applies). Doing this requires first that the functions are actually available from libc for new links, not just as compat symbols. This patch stops the symbols in question being compat symbols for powerpc-nofpu. The nofpu Versions entries for them are removed (the symbols never were exported at GLIBC_2.3.2, only GLIBC_2.0, because the compat symbols took precedence). Tested powerpc-nofpu. The symbols are no longer compat symbols and libm.so now properly gets undefined references to them (resolved to libc.so) instead of the libgcc copies getting linked into libm as before. * sysdeps/powerpc/powerpc32/libgcc-compat.S [_SOFT_FLOAT || __NO_FPRS__] (__fixdfdi_v_glibc20): Do not define as a macro and a compat symbol. [_SOFT_FLOAT || __NO_FPRS__] (__fixsfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunsdfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunssfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floatdidf_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floaddisf_v_glibc20): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixdfdi): Do not use .hidden. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixsfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunsdfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunssfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddidf): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddisf): Likewise. * sysdeps/powerpc/nofpu/Versions (libc): Remove __fixdfdi, __fixsfdi, __fixunsdfdi, __fixunssfdi, __floatdidf and __floatdisf from GLIBC_2.3.2.
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-191-0/+4
|
* Cleanup compile warnings.Paul Pluzhnikov2013-12-191-0/+6
| | | | | | | | 2013-12-19 Paul Pluzhnikov <ppluzhnikov@google.com> * elf/dl-misc.c (ptr_to_signal_safe_allocator_header): New function. (__signal_safe_memalign, __signal_safe_free): Use it. (__signal_safe_realloc): Likewise.
* Update texinfo.tex, config.guess, config.sub from upstream.Joseph Myers2013-12-191-0/+5
| | | | | | | | | | | | | | This patch updates various miscellaneous files we take from upstream GNU sources (texinfo.texi, config.guess, config.sub - various others haven't changed upstream since we last updated them) to their current upstream versions. Tested x86_64. * manual/texinfo.tex: Update to version 2013-11-26.10 with trailing whitespace removed. * scripts/config.guess: Update to version 2013-11-29. * scripts/config.sub: Update to version 2013-10-01.
* Move tests of sincos from libm-test.inc to auto-libm-test-in.Joseph Myers2013-12-191-0/+13
| | | | | | | | | | | | | | | | | | | | This patch moves tests of sincos to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Tested x86_64 and x86 and ulps updated accordingly. (auto-libm-test-out diffs omitted below.) * math/auto-libm-test-in: Add tests of sincos. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (sincos_test_data): Use AUTO_TESTS_fFF_11. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpfr_f_11. (func_calc_desc): Add mpfr_f_11 union field. (test_functions): Add sincos. (calc_generic_results): Handle mpfr_f_11. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Fix uses of CALL_MCOUNT in ppc64 assembler sourcesAndreas Schwab2013-12-191-0/+8
|
* Disable libm-test test name beautification for M_* constants.Joseph Myers2013-12-191-0/+4
| | | | | | | | | | | | | | | | | | | | | math/gen-libm-test.pl has code to beautify names of various constants, transforming the source form in libm-test.inc into the version appearing in test names in libm-test-ulps files. This has become decreasingly relevant over time for the M_* constants, first as I changed the test names so only the arguments and not the expected results appeared in them, then as tests have moved to auto-libm-test-* so that automatically generated hex float constants get used instead of M_* in test inputs. This patch removes the beautification for all M_* constants. Tested x86_64 and x86 and ulps updated accordingly. Even the one case where this affected the name in the ulps files will disappear once complex function tests are moved to auto-libm-test-*. * math/gen-libm-test.pl (%beautify): Remove M_* constants. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293).Joseph Myers2013-12-191-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug 16293 is inaccuracy of x86/x86_64 versions of expm1, near 0 in directed rounding modes, that arises from frndint rounding the exponent to 1 or -1 instead of 0, resulting in large cancellation error. This inaccuracy in turn affects other functions such as sinh that use expm1. This patch fixes the problem by setting round-to-nearest mode temporarily around the affected calls to frndint. I don't think this is needed for other uses of frndint, such as in exp itself, as only for expm1 is the cancellation error significant. Tested x86_64 and x86 and ulps updated accordingly. * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Set round-to-nearest mode when using frndint. * sysdeps/i386/fpu/s_expm1.S (__expm1): Likewise. * sysdeps/i386/fpu/s_expm1f.S (__expm1f): Likewise. * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Likewise. * math/auto-libm-test-in: Add more tests of expm1. Do not expect sinh test to fail. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): Remove macro. (TEST_COND_x86): Likewise. (expm1_tonearest_test_data): New array. (expm1_test_tonearest): New function. (expm1_towardzero_test_data): New array. (expm1_test_towardzero): New function. (expm1_downward_test_data): New array. (expm1_test_downward): New function. (expm1_upward_test_data): New array. (expm1_test_upward): New function. (main): Run the new test functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Add _DEFAULT_SOURCE feature test macro.Joseph Myers2013-12-191-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a feature test macro _DEFAULT_SOURCE to enable the default set of header declarations. The intention is: if _DEFAULT_SOURCE is not used there is no change to the set of __USE_* macros glibc defines; if it's used on its own, and without compiler options such as -std=c99 that define __STRICT_ANSI__, again, there is no change; if it's used together with the macros it approximately (i.e., apart from __USE_POSIX_IMPLICITLY) implies (-D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809L), again, there is no change. Otherwise, it causes the relevant features to be enabled, even if __STRICT_ANSI__, or another feature test macro, would cause them to be disabled. This macro deliberately bundles the POSIX.1-2008 (non-X/Open) functionality with the BSD/SVID/"misc" functionality, rather than defining a macro that gives just the latter, as many of the header cleanups resulting from removing _BSD_SOURCE and _SVID_SOURCE support are only possible when BSD/SVID/"misc" is always bundled with POSIX.1-2008. Tested x86_64. * include/features.h: Update comment documenting feature test macros. Mention _DEFAULT_SOURCE in comment. [_GNU_SOURCE] (_DEFAULT_SOURCE): Undefine and redefine. [_DEFAULT_SOURCE]: Undefine and redefine _DEFAULT_SOURCE, _BSD_SOURCE and _SVID_SOURCE. [!__STRICT_ANSI__ && !_ISOC99_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE && !_XOPEN_SOURCE && !_BSD_SOURCE && !_SVID_SOURCE]: Likewise. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (__USE_POSIX_IMPLICITLY): Define. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (_POSIX_SOURCE): Undefine and redefine. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (_POSIX_C_SOURCE): Likewise. * manual/creature.texi (_DEFAULT_SOURCE): Document. (Feature Test Macros): Update documentation of default features.
* benchtests: Add strtok benchmarkRajalakshmi Srinivasaraghavan2013-12-191-0/+5
|
* Stop partial menu generation in INSTALL fileAllan McRae2013-12-191-0/+5
| | | | | | | | | | The commit d136c6dc resulted in menu text for the "Top" node being added to the INSTALL file on regeneration. As the full menu is not displayed in the plain text file anyway, suppress the menu section completely to avoid the additional text. Also regenerate the INSTALL file to commit a small formatting change introduced in the same commit.
* Patch 2/4 of the effort to make TLS access async-signal-safe.Paul Pluzhnikov2013-12-181-0/+13
| | | | | | | | | | | | | | | | | Add a signal-safe malloc replacement. 2013-12-18 Andrew Hunter <ahh@google.com> * sysdeps/generic/ldsodefs.h (__signal_safe_memalign): New prototype. (__signal_safe_malloc, __signal_safe_free): Likewise. (__signal_safe_realloc, __signal_safe_calloc): Likewise. * elf/dl-misc.c (__signal_safe_allocator_header): New struct. (__signal_safe_memalign, __signal_safe_malloc): New function. (__signal_safe_free, __signal_safe_realloc): Likewise. (__signal_safe_calloc): Likewise. * elf/dl-tls.c (allocate_dtv, _dl_clear_dtv): Call signal-safe functions. (_dl_deallocate_tls, _dl_update_slotinfo): Likewise.
* Patch 3/4 of the effort to make TLS access async-signal-safe.Paul Pluzhnikov2013-12-181-0/+7
| | | | | | | | | | | Factor out _dl_clear_dtv. 2013-12-18 Andrew Hunter <ahh@google.com> * elf/Versions (ld): Add _dl_clear_dtv. * sysdeps/generic/ldsodefs.h (_dl_clear_dtv): New prototype. * elf/dl-tls.c (_dl_clear_dtv): New function. * nptl/allocatestack.c (get_cached_stack): Call _dl_clear_dtv.
* Patch [1/4] async-signal safe TLS.Paul Pluzhnikov2013-12-181-0/+11
| | | | | | | | | | | | | 2013-12-18 Andrew Hunter <ahh@google.com> * sysdeps/generic/ldsodefs.h (_dl_mask_all_signals): New prototype. (_dl_unmask_signals): Likewise. * sysdeps/mach/hurd/dl-sysdep.h (_dl_mask_all_signals): New stub. (_dl_unmask_all_signals): Likewise. * sysdeps/unix/sysv/linux/dl-sysdep.h (_dl_mask_all_signals): New prototype. (_dl_unmask_all_signals): Likewise. * sysdeps/unix/sysv/linux/dl-sysdep.c (_dl_mask_all_signals): New function. (_dl_unmask_signals): Likewise.
* Add error reporting (via errno) to getauxval().Brooks Moses2013-12-181-0/+11
| | | | | | | | | | | | [BZ 15846] As discussed in the recent thread on my $EXEC_ORIGIN patch and in BZ 15846, getauxval() presently has no unambiguous way of reporting an error condition. It currently returns zero on error, but this may also be a valid result for some auxv entries. As there is no clear invalid result for all current and future auxv entries, this patch sets errno (following a suggestion in the BZ entry). This version of the patch also adds documentation and tests for the value-not-found conditions in getauxval().
* Move tests of jn and yn from libm-test.inc to auto-libm-test-in.Joseph Myers2013-12-181-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | This patch moves tests of jn and yn to auto-libm-test-in, adding the required support for gen-auto-libm-tests (and adding a missing assertion there and fixing logic that was broken for functions with integer arguments). Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of jn and yn. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (jn_test_data): Use AUTO_TESTS_if_f. (yn_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpfr_if_f. (func_calc_desc): Add mpfr_if_f union field. (FUNC_mpfr_if_f): New macro. (test_functions): Add jn and yn. (calc_generic_results): Assert type of second input for mpfr_ff_f. Handle mpfr_if_f. (output_for_one_input_case): Disable all checking for arguments fitting floating-point types in case of an integer argument. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* Update powerpc-nofpu localplt.data for fegetround hidden_proto / hidden_def.Joseph Myers2013-12-181-0/+5
| | | | | | | | | | My recent changes that added libm_hidden_proto / libm_hidden_def for fegetround had the side effect of removing the need for a localplt.data entry for fegetround for powerpc-nofpu. This patch removes that entry. Tested powerpc-nofpu. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data: Don't expect fegetround reference in libm.so.
* Compile e_sqrt.c with -ffp-contract=off.Marcus Shawcroft2013-12-181-0/+5
|
* Mark some hypot tests no-test-inline.Joseph Myers2013-12-181-0/+3
| | | | | | | As needed on x86. * math/auto-libm-test-in: Mark some hypot tests no-test-inline. * math/auto-libm-test-out: Regenerated.
* Fix ldbl-128 logl for subnormals (bug 16338).Joseph Myers2013-12-181-0/+11
| | | | | | | | | | | | | | | | | | | | | | This patch fixes bug 16338, ldbl-128 logl not handling subnormals (with consequent inaccuracy for lgammal as well). The fix is simply to use __frexpl when determining the exponent, as done already in log2l and log10l. Given the lack of testing of small arguments to any of the log* functions, appropriate tests are added for all of them. Tested x86_64 and x86 and ulps updated accordingly, and spot tests also run for mips64 to confirm the ldbl-128 fix. Note that while this fixes lgammal inaccuracy for small positive arguments, I suspect that there will still be problems with spurious underflows in that case. * sysdeps/ieee754/ldbl-128/e_logl.c (__ieee754_logl): Use __frexpl to determine exponent and adjust argument to have exponent of -1. * math/auto-libm-test-in: Add more tests of log, log10, log1p and log2. * math/auto-libm-test-out: Regenerated. * sysdeps/x86_64/fpu/libm-test-ulps: Update.
* Update documentation after dropping PER_THREAD conditional.Ondřej Bílka2013-12-181-0/+5
| | | | | In probes documentation we described what happens when PER_THREAD is disabled which is now not relevant.
* Remove use of SSE4.2 functions for strstr on i686Andreas Schwab2013-12-181-0/+9
| | | | | The SSE4.2 have been removed from x86_64 by commit 584b18eb. This patch fixes the build on i686, which attempts to use the removed files.