aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)AuthorFilesLines
2014-01-07Fix ldbl-128ibm coshl spurious overflows (bug 16407).Joseph Myers1-1/+1
This patch fixes bug 16407, spurious overflows from ldbl-128ibm coshl. The implementation assumed that a high part (reinterpreted as an integer) of the absolute value of the argument of 0x408633ce8fb9f87dLL or more meant overflow, but the actual threshold has high part 0x408633ce8fb9f87eLL (and a negative low part). The patch adjusts the threshold accordingly. sinhl probably has the same issue, but I didn't get that far in adding tests of special cases (such as just below and above overflow) before the freeze and during the freeze is not a suitable time to add them (as they'd require ulps to be regenerated again), so I'm not changing that function for now; when I add more tests of special cases, we'll discover whether sinhl indeed has this problem. Tested powerpc32. * sysdeps/ieee754/ldbl-128ibm/e_coshl.c (__ieee754_coshl): Increase overflow threshold.
2014-01-07S/390: Remove __tls_get_addr argument cast.Andreas Krebbel1-1/+1
2014-01-07S/390: Get rid of unused variable warning in dl-machine.hAndreas Krebbel1-1/+2
2014-01-07S/390: Make ucontext_t extendible.Andreas Krebbel16-17/+290
2014-01-07S/390: Make jmp_buf extendible.Andreas Krebbel26-24/+649
2014-01-06Fix ldbl-128 / ldbl-128ibm lgammal spurious underflow (bug 16400).Joseph Myers1-1/+3
This patch fixes bug 16400, spurious underflow exceptions for ldbl-128 / ldbl-128ibm lgammal with small positive arguments, by just using -__logl (x) as the result in the problem cases (similar to the previous fix for problems with small negative arguments). Tested powerpc32, and also tested on mips64 that this does not require ulps regeneration for the ldbl-128 case. * sysdeps/ieee754/ldbl-128/e_lgammal_r.c (__ieee754_lgammal_r): Return -__logl (x) for small positive arguments without evaluating a polynomial.
2014-01-06ptrace.h: add __ prefix to ptrace_peeksiginfo_argsMike Frysinger4-4/+4
All the other ptrace structures in this file have a __ prefix except this new one. This in turn causes build problems for most packages that try to use ptrace such as strace: gcc -DHAVE_CONFIG_H -I. -I../.. -I../../linux/x86_64 -I../../linux \ -I./linux -Wall -Wwrite-strings -g -O2 -MT process.o -MD -MP \ -MF .deps/process.Tpo -c -o process.o ../../process.c In file included from ../../process.c:63:0: /usr/include/linux/ptrace.h:58:8: error: redefinition of 'struct ptrace_peeksiginfo_args' struct ptrace_peeksiginfo_args { ^ In file included from ../../defs.h:159:0, from ../../process.c:37: /usr/include/sys/ptrace.h:191:8: note: originally defined here struct ptrace_peeksiginfo_args ^ Since this struct was introduced in glibc-2.18, there shouldn't be any real regressions with adding the __ prefix. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2014-01-05Update ULPs for i386Andreas Jaeger1-0/+84
Update based on testing with GCC 4.8.1 on Intel i7
2014-01-04tst-fanotify: switch to AC_DEFINEMike Frysinger3-2/+4
Reported-by: Joseph S. Myers <joseph@codesourcery.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2014-01-03Fix soft-float ldbl-128ibm atan2l signs of zero results (bug 16390).Joseph Myers1-0/+1
This patch fixes bug 16390, incorrect signs of zero results from ldbl-128ibm atan2l, soft-float only. The problem is a longstanding GCC bug with fabsl not being correct for signed zero for soft float, and the fix is using -fno-builtin-fabsl as a workaround, as already done for various other source files. Tested powerpc-nofpu. * sysdeps/powerpc/nofpu/Makefile [$(subdir) = math] (CFLAGS-e_atan2l.c): Use -fno-builtin-fabsl.
2014-01-03PowerPC: Fix compiler warningsAdhemerval Zanella4-4/+4
This patch fixes some compile warnings related to extra tokens at end of #undef directive from multilib patchset.
2014-01-03Regenerate powerpc-nofpu ulps.Joseph Myers1-963/+7499
2014-01-02Fix ldbl-128ibm logl inaccuracy (bug 16386).Joseph Myers1-0/+8
This patch fixes bug 16386, ldbl-128ibm logl inaccuracy (with consequent inaccuracy for lgammal) for arguments where the high double is subnormal, which showed up while attempting to regenerate ulps for powerpc-nofpu for 2.19. The problem here is logic failing to allow for subnormals when calculating the exponent of the argument. Tested for powerpc-nofpu. * sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Adjust numbers with subnormal high part when calculating exponent.
2014-01-02Fix ldbl-128ibm asinhl inaccuracy (bug 16385).Joseph Myers1-1/+1
This patch fixes bug 16385, ldbl-128ibm asinhl inaccuracy, which showed up while attempting to regenerate ulps for powerpc-nofpu for 2.19. The problem here was use of fabs instead of fabsl meaning large arguments were reduced to the precision of double. Tested for powerpc-nofpu. * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use fabsl not fabs.
2014-01-02Fix ldbl-128ibm acoshl inaccuracy (bug 16384).Joseph Myers1-2/+2
This patch fixes bug 16384, ldbl-128ibm acoshl inaccuracy, which showed up while attempting to regenerate ulps for powerpc-nofpu for 2.19. There were two separate problems, use of __log1p instead of __log1pl and an insufficiently accurate constant value for log 2 (which this patch replaces by use of M_LN2l), each of which could cause substantial inaccuracy in affected cases. Tested for powerpc-nofpu. * sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (ln2): Initialize with M_LN2l. (__ieee754_acoshl): Use __log1pl not __log1p.
2014-01-01Regenerate x86 / x86_64 ulps.Joseph Myers2-5812/+33
2014-01-01Update copyright notices with scripts/update-copyrightsAllan McRae3066-3066/+3066
2013-12-31tst-fanotify: check for linux/fanotify.h existenceMike Frysinger3-0/+61
We support older kernels that lack this header, so check for it before we try to use it. Reported-by: Adhemerval Zanella <azanella@linux.vnet.ibm.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-12-27Fix typo in csloww()Allan McRae1-1/+1
An incorrect variable name was used during the refactoring done in commit 4aafb73c.
2013-12-23Update powerpc-fpu ULPs.Adhemerval Zanella1-73/+4075
2013-12-22Fix ldbl-128 lgammal for small negative arguments (bug 16337).Joseph Myers1-2/+2
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.
2013-12-22Flatten sysdeps/unix/bsd/bsd4.4 into sysdeps/unix/bsd.Joseph Myers17-14/+8
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.
2013-12-21Fix x86 / x86_64 expl / expl10l wild results in directed rounding modes (bug ↵Joseph Myers4-17/+227
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.
2013-12-20Add more libm-test coverage of [a-c]* real functions.Joseph Myers2-11/+1003
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.
2013-12-20Move tests of cpow from libm-test.inc to auto-libm-test-in.Joseph Myers2-0/+89
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.
2013-12-20Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc.Joseph Myers2-86/+6849
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.
2013-12-20Consolidate code to compute sin and cos from lookup tablesSiddhesh Poyarekar1-232/+129
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.
2013-12-20Remove more redundant computations in s_sin.cSiddhesh Poyarekar1-42/+33
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.
2013-12-20Remove redundant arguments in reduce_and_computeSiddhesh Poyarekar1-4/+4
The A and DA arguments in reduce_and_compute are useless and hence have been removed.
2013-12-20Remove some redundant computations in s_sin.cSiddhesh Poyarekar1-24/+15
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.
2013-12-19Don't make soft-fp symbols compat symbols for powerpc-nofpu.Joseph Myers2-9/+17
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.
2013-12-19Update powerpc-fpu ULPs.Adhemerval Zanella1-0/+633
2013-12-19Move tests of sincos from libm-test.inc to auto-libm-test-in.Joseph Myers2-0/+12
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.
2013-12-19Fix uses of CALL_MCOUNT in ppc64 assembler sourcesAndreas Schwab3-2/+6
2013-12-19Disable libm-test test name beautification for M_* constants.Joseph Myers2-0/+8
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.
2013-12-19Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293).Joseph Myers6-0/+742
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.
2013-12-18Patch 2/4 of the effort to make TLS access async-signal-safe.Paul Pluzhnikov1-0/+6
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.
2013-12-18Patch 3/4 of the effort to make TLS access async-signal-safe.Paul Pluzhnikov1-0/+5
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.
2013-12-18Patch [1/4] async-signal safe TLS.Paul Pluzhnikov4-0/+62
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.
2013-12-18Move tests of jn and yn from libm-test.inc to auto-libm-test-in.Joseph Myers2-4/+821
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.
2013-12-18Update powerpc-nofpu localplt.data for fegetround hidden_proto / hidden_def.Joseph Myers1-1/+0
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.
2013-12-18Compile e_sqrt.c with -ffp-contract=off.Marcus Shawcroft1-0/+1
2013-12-18Fix ldbl-128 logl for subnormals (bug 16338).Joseph Myers3-3/+8
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.
2013-12-18Remove use of SSE4.2 functions for strstr on i686Andreas Schwab6-49/+2
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.
2013-12-17Remove unused files from sysdeps/unix/bsd/bsd4.4/bits/.Joseph Myers2-452/+0
2013-12-17Remove various unused files from sysdeps/unix/bsd/.Joseph Myers27-1534/+0
2013-12-17Remove __FAVOR_BSD.Joseph Myers2-75/+78
2013-12-17Update powerpc-fpu ULPs.Adhemerval Zanella1-2/+380
2013-12-17Fix dbl-64 hypot spurious underflows (bug 16314).Joseph Myers1-1/+1
2013-12-17Fix hypot handling of subnormals (bug 16316, bug 16330).Joseph Myers3-0/+33