Commit Graph

28976 Commits

Author SHA1 Message Date
Joseph Myers
e02920bc02 Improve tgamma accuracy (bug 18613).
In non-default rounding modes, tgamma can be slightly less accurate
than permitted by glibc's accuracy goals.

Part of the problem is error accumulation, addressed in this patch by
setting round-to-nearest for internal computations.  However, there
was also a bug in the code dealing with computing pow (x + n, x + n)
where x + n is not exactly representable, providing another source of
error even in round-to-nearest mode; it was necessary to address both
bugs to get errors for all testcases within glibc's accuracy goals.
Given this second fix, accuracy in round-to-nearest mode is also
improved (hence regeneration of ulps for tgamma should be from scratch
- truncate libm-test-ulps or at least remove existing tgamma entries -
so that the expected ulps can be reduced).

Some additional complications also arose.  Certain tgamma tests should
strictly, according to IEEE semantics, overflow or not depending on
the rounding mode; this is beyond the scope of glibc's accuracy goals
for any function without exactly-determined results, but
gen-auto-libm-tests doesn't handle being lax there as it does for
underflow.  (libm-test.inc also doesn't handle being lax about whether
the result in cases very close to the overflow threshold is infinity
or a finite value close to overflow, but that doesn't cause problems
in this case though I've seen it cause problems with random test
generation for some functions.)  Thus, spurious-overflow markings,
with a comment, are added to auto-libm-test-in (no bug in Bugzilla
because the issue is with the testsuite, not a user-visible bug in
glibc).  And on x86, after the patch I saw ERANGE issues as previously
reported by Carlos (see my commentary in
<https://sourceware.org/ml/libc-alpha/2015-01/msg00485.html>), which
needed addressing by ensuring excess range and precision were
eliminated at various points if FLT_EVAL_METHOD != 0.

I also noticed and fixed a cosmetic issue where 1.0f was used in long
double functions and should have been 1.0L.

This completes the move of all functions to testing in all rounding
modes with ALL_RM_TEST, so gen-libm-have-vector-test.sh is updated to
remove the workaround for some functions not using ALL_RM_TEST.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #18613]
	* sysdeps/ieee754/dbl-64/e_gamma_r.c (gamma_positive): Take log of
	X_ADJ not X when adjusting exponent.
	(__ieee754_gamma_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c (gammaf_positive): Take log
	of X_ADJ not X when adjusting exponent.
	(__ieee754_gammaf_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c (gammal_positive): Take
	log of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (gammal_positive): Take
	log of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c (gammal_positive): Take log
	of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* math/libm-test.inc (tgamma_test_data): Remove one test.  Moved
	to auto-libm-test-in.
	(tgamma_test): Use ALL_RM_TEST.
	* math/auto-libm-test-in: Add one test of tgamma.  Mark some other
	tests of tgamma with spurious-overflow.
	* math/auto-libm-test-out: Regenerated.
	* math/gen-libm-have-vector-test.sh: Do not check for START.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2015-06-29 23:29:35 +00:00
Joseph Myers
4aa10d01b6 Fix ldbl-128 j1l spurious underflows (bug 18612).
The ldbl-128 implementation of j1l produces spurious underflow
exceptions for some small arguments, as a result of squaring the
argument.  This patch fixes it just to use a linear approximation for
sufficiently small arguments, and then to force an underflow exception
only in the cases where it is required.

Tested for mips64.

	[BZ #18612]
	* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): For small
	arguments, just return 0.5 times the argument, with underflow
	forced as needed.
	* math/auto-libm-test-in: Add more tests of j1.
	* math/auto-libm-test-out: Regenerated.
2015-06-29 17:51:32 +00:00
Joseph Myers
63dbe5f322 Fix j1, jn missing underflows (bug 16559).
Similar to various other bugs in this area, j1 and jn implementations
can fail to raise the underflow exception when the internal
computation is exact although the actual function is inexact.  This
patch forces the exception in a similar way to other such fixes.  (The
ldbl-128 / ldbl-128ibm j1l implementation is different and doesn't
need a change for this until spurious underflows in it are fixed.)

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #16559]
	* sysdeps/ieee754/dbl-64/e_j1.c: Include <float.h>.
	(__ieee754_j1): Force underflow exception for small results.
	* sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Likewise.
	* sysdeps/ieee754/flt-32/e_j1f.c: Include <float.h>.
	(__ieee754_j1f): Force underflow exception for small results.
	* sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_jnf): Likewise.
	* sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-96/e_j1l.c: Include <float.h>.
	(__ieee754_j1l): Force underflow exception for small results.
	* sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise.
	* math/auto-libm-test-in: Add more tests of j1 and jn.
	* math/auto-libm-test-out: Regenerated.
2015-06-29 16:52:16 +00:00
Joseph Myers
31545c2327 Update headers for Linux 4.0, 4.1 definitions.
This patch updates installed glibc headers for new definitions from
Linux 4.0 and 4.1 that seem relevant to glibc headers.  In addition, I
noticed that PF_IB / AF_IB, added in Linux 3.11, were missing for no
obvious reason, so added those as well.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

	* sysdeps/unix/sysv/linux/bits/in.h (IP_CHECKSUM): New macro.
	* sysdeps/unix/sysv/linux/bits/socket.h (PF_IB): Likewise.
	(PF_MPLS): Likewise.
	(AF_IB): Likewise.
	(AF_MPLS): Likewise.
	* sysdeps/unix/sysv/linux/sys/mount.h (MS_LAZYTIME): New enum
	value and macro.
	(MS_RMT_MASK): Include MS_LAZYTIME.
2015-06-29 14:38:46 +00:00
Mel Gorman
f8ef472c0f malloc: Do not corrupt the top of a threaded heap if top chunk is MINSIZE [BZ #18502]
mksquashfs was reported in openSUSE to be causing segmentation faults when
creating installation images. Testing showed that mksquashfs sometimes
failed and could be reproduced within 10 attempts. The core dump looked
like the heap top was corrupted and was pointing to an unmapped area. In
other cases, this has been due to an application corrupting glibc structures
but mksquashfs appears to be fine in this regard.

The problem is that heap_trim is "growing" the top into unmapped space.
If the top chunk == MINSIZE then top_area is -1 and this check does not
behave as expected due to a signed/unsigned comparison

  if (top_area <= pad)
    return 0;

The next calculation extra = ALIGN_DOWN(top_area - pad, pagesz) calculates
extra as a negative number which also is unnoticed due to a signed/unsigned
comparison. We then call shrink_heap(heap, negative_number) which crashes
later. This patch adds a simple check against MINSIZE to make sure extra
does not become negative. It adds a cast to hint to the reader that this
is a signed vs unsigned issue.

Without the patch, mksquash fails within 10 attempts. With it applied, it
completed 1000 times without error. The standard test suite "make check"
showed no changes in the summary of test results.
2015-06-26 22:47:45 +02:00
Matthew Fortune
a2057c984e Add support for DT_MIPS_RLD_MAP_REL.
This tag allows debugging of MIPS position independent executables
and provides access to shared library information.

	* elf/elf.h (DT_MIPS_RLD_MAP_REL): New macro.
	(DT_MIPS_NUM): Update.
	* sysdeps/mips/dl-machine.h (ELF_MACHINE_DEBUG_SETUP): Handle
	DT_MIPS_RLD_MAP_REL.
2015-06-26 12:03:45 +01:00
Joseph Myers
a8e2112ae3 Use round-to-nearest internally in jn, test with ALL_RM_TEST (bug 18602).
Some existing jn tests, if run in non-default rounding modes, produce
errors above those accepted in glibc, which causes problems for moving
tests of jn to use ALL_RM_TEST.  This patch makes jn set rounding
to-nearest internally, as was done for yn some time ago, then computes
the appropriate underflowing value for results that underflowed to
zero in to-nearest, and moves the tests to ALL_RM_TEST.  It does
nothing about the general inaccuracy of Bessel function
implementations in glibc, though it should make jn more accurate on
average in non-default rounding modes through reduced error
accumulation.  The recomputation of results that underflowed to zero
should as a side-effect fix some cases of bug 16559, where jn just
used an exact zero, but that is *not* the goal of this patch and other
cases of that bug remain unfixed.

(Most of the changes in the patch are reindentation to add new scopes
for SET_RESTORE_ROUND*.)

Tested for x86_64, x86, powerpc and mips64.

	[BZ #16559]
	[BZ #18602]
	* sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Set
	round-to-nearest internally then recompute results that
	underflowed to zero in the original rounding mode.
	* sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_jnf): Likewise.
	* sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise
	* math/libm-test.inc (jn_test): Use ALL_RM_TEST.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2015-06-25 21:46:02 +00:00
Andrew Senkevich
037e4b993f More correct description of linking with vector math library.
* NEWS: Fixed description of link with vector math library.
2015-06-25 19:46:50 +03:00
Andreas Schwab
7c2ce714d4 Fix buffer overflow for writes to memory buffer stream (bug 18549) 2015-06-25 15:54:09 +02:00
H.J. Lu
cc08749b2d Support compilers defaulting to PIE
To support building glibc with GCC 6 configured with --enable-default-pie,
which generates PIE by default, we need to build programs as PIE.  But
elf/tst-dlopen-aout must not be built as PIE since it tests dlopen on
ET_EXEC file and PIE is ET_DYN.

	[BZ #17841]
	* Makeconfig (no-pie-ldflag): New.
	(+link): Set to $(+link-pie) if default to PIE.
	(+link-tests): Set to $(+link-pie-tests) if default to PIE.
	* config.make.in (build-pie-default): New.
	* configure.ac (libc_cv_pie_default): New.  Set to yes if -fPIE
	is default.  AC_SUBST.
	* configure: Regenerated.
	* elf/Makefile (LDFLAGS-tst-dlopen-aout): New.
2015-06-25 02:49:53 -07:00
Roland McGrath
45a8f0e662 NPTL: Use unsigned type for setxid_futex. 2015-06-24 18:09:32 -07:00
Roland McGrath
e185d57e99 Use unsigned types for counters in getaddrinfo_a code. 2015-06-24 17:58:12 -07:00
Roland McGrath
86edd44f04 Use unsigned types for counters in AIO code. 2015-06-24 17:43:32 -07:00
H.J. Lu
a7fcc2f8ed Align TCB offset to the maximum alignment
We need to align TCB offset to the maximum alignment for TLS_TCB_AT_TP
targets, as _dl_allocate_tls_storage (in elf/dl-tls.c) does using
__libc_memalign and dl_tls_static_align.

	[BZ #18383]
	* csu/libc-tls.c (__libc_setup_tls) [TLS_TCB_AT_TP]: Align
	TCB_OFFSET to MAX_ALIGN, not just TCBALIGN.  Add comment.
	* elf/Makefile (test-xfail-tst-tlsalign{,-static}): Remove
	comment for i386/x86-64.
	(test-xfail-tst-tlsalign-extern-static): Removed.
2015-06-24 16:30:58 -07:00
Joseph Myers
f9536db790 Refactor libm tests.
This patch refactors the libm tests using libm-test.inc to reduce the
level of duplicate definitions.  New headers are created for the
definitions shared by tests for a particular type; by tests of inline
functions; by tests of non-inline functions; by scalar tests; and by
vector tests.  The unused MATHCONST macro is removed.  A new macro
VEC_LEN is added to the vector headers to allow the macros defining
wrappers for vector functions to be defined once, instead of six times
each (differing only in vector length) as before.  There is still
scope for further refactoring, but this seems a useful start.

Tested for x86_64.

	* math/test-double.h: New file.
	* math/test-float.h: Likewise.
	* math/test-ldouble.h: Likewise.
	* math/test-math-inline.h: Likewise.
	* math/test-math-no-inline.h: Likewise.
	* math/test-math-scalar.h: Likewise.
	* math/test-math-vector.h: Likewise.
	* math/test-vec-loop.h: Remove file.  Contents moved into
	test-math-vector.h.
	* math/libm-test.inc (MATHCONST): Do not document macro.
	* math/test-double.c: Include test-double.h, test-math-no-inline.h
	and test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_DOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-float.c: Include test-float.h, test-math-no-inline.h
	and test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_FLOAT): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-idouble.c: Include test-double.h, test-math-inline.h
	and test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_DOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(TEST_INLINE): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-ifloat.c: Include test-float.h, test-math-inline.h and
	test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_FLOAT): Likewise.
	(TEST_MATHVEC): Likewise.
	(TEST_INLINE): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-ildoubl.c: Include test-ldouble.h, test-math-inline.h
	and test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_LDOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(TEST_INLINE): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-ldouble.c: Include test-ldouble.h,
	test-math-no-inline.h and test-math-scalar.h.
	(FUNC): Remove macro.
	(FUNC_TEST): Likewise.
	(FLOAT): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_LDOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	* math/test-double-vlen2.h: Include test-double.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_DOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* math/test-double-vlen4.h: Include test-double.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_DOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* math/test-double-vlen8.h: Include test-double.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_DOUBLE): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* math/test-float-vlen4.h: Include test-float.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_FLOAT): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* math/test-float-vlen8.h: Include test-float.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_FLOAT): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* math/test-float-vlen16.h: Include test-float.h,
	test-math-no-inline.h and test-math-vector.h.
	(FLOAT): Remove macro.
	(FUNC): Likewise.
	(MATHCONST): Likewise.
	(PRINTF_EXPR): Likewise.
	(PRINTF_XEXPR): Likewise.
	(PRINTF_NEXPR): Likewise.
	(TEST_FLOAT): Likewise.
	(TEST_MATHVEC): Likewise.
	(__NO_MATH_INLINES): Likewise.
	(CNCT): Likewise.
	(CONCAT): Likewise.
	(WRAPPER_NAME): Likewise.
	(WRAPPER_DECL): Likewise.
	(WRAPPER_DECL_ff): Likewise.
	(WRAPPER_DECL_fFF): Likewise.
	(VECTOR_WRAPPER): Likewise.
	(VECTOR_WRAPPER_ff): Likewise.
	(VECTOR_WRAPPER_fFF): Likewise.
	(VEC_LEN): New macro.
	* sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c: Do not include
	test-vec-loop.h.
	* sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c: Likewise.
	* sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c: Likewise.
2015-06-24 23:27:18 +00:00
Roland McGrath
5ba4a6eb9f NaCl: Fix glob.c build after getlogin_r -> __getlogin_r. 2015-06-24 15:29:53 -07:00
Joseph Myers
a67894c505 Fix cexp, ccos, ccosh, csin, csinh spurious underflows (bug 18594).
cexp, ccos, ccosh, csin and csinh have spurious underflows in cases
where they compute sin of the smallest normal, that produces an
underflow exception (depending on which sin implementation is in use)
but the final result does not underflow.  ctan and ctanh may also have
such underflows, or they may be latent (the issue there is that
e.g. ctan (DBL_MIN) should, rounded upwards, be the next double value
above DBL_MIN, which under glibc's accuracy goals may not have an
underflow exception, but the intermediate computation of sin (DBL_MIN)
would legitimately underflow on before-rounding architectures).

This patch fixes all those functions so they use plain comparisons (>
DBL_MIN etc.) instead of comparing the result of fpclassify with
FP_SUBNORMAL (in all these cases, we already know the number being
compared is finite).  Note that in the case of csin / csinf / csinl,
there is no need for fabs calls in the comparison because the real
part has already been reduced to its absolute value.

As the patch fixes the failures that previously obstructed moving
tests of cexp to use ALL_RM_TEST, those tests are moved to ALL_RM_TEST
by the patch (two functions remain yet to be converted).

Tested for x86_64 and x86 and ulps updated accordingly.

	[BZ #18594]
	* math/s_ccosh.c (__ccosh): Compare with least normal value
	instead of comparing class with FP_SUBNORMAL.
	* math/s_ccoshf.c (__ccoshf): Likewise.
	* math/s_ccoshl.c (__ccoshl): Likewise.
	* math/s_cexp.c (__cexp): Likewise.
	* math/s_cexpf.c (__cexpf): Likewise.
	* math/s_cexpl.c (__cexpl): Likewise.
	* math/s_csin.c (__csin): Likewise.
	* math/s_csinf.c (__csinf): Likewise.
	* math/s_csinh.c (__csinh): Likewise.
	* math/s_csinhf.c (__csinhf): Likewise.
	* math/s_csinhl.c (__csinhl): Likewise.
	* math/s_csinl.c (__csinl): Likewise.
	* math/s_ctan.c (__ctan): Likewise.
	* math/s_ctanf.c (__ctanf): Likewise.
	* math/s_ctanh.c (__ctanh): Likewise.
	* math/s_ctanhf.c (__ctanhf): Likewise.
	* math/s_ctanhl.c (__ctanhl): Likewise.
	* math/s_ctanl.c (__ctanl): Likewise.
	* math/auto-libm-test-in: Add more tests of ccos, ccosh, cexp,
	csin, csinh, ctan and ctanh.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (cexp_test): Use ALL_RM_TEST.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2015-06-24 21:04:51 +00:00
Roland McGrath
010186901d Print more information in tst-getcpu failure case. 2015-06-24 13:56:46 -07:00
Roland McGrath
bd0a60f9a7 Line-wrap some log entries. 2015-06-24 13:00:29 -07:00
H.J. Lu
eea3dc5bf2 Don't issue errors on GDB Python files
Many packages, including GCC, install Python files for GDB in library
diretory. ldconfig reads them and issue errors since they aren't ELF
files:

ldconfig: /usr/gcc-5.1.1/lib/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start.

ldconfig: /usr/gcc-5.1.1/libx32/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start.

ldconfig: /usr/gcc-5.1.1/lib64/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start.

This patch silences ldconfig on GDB Python files by checking filenames
with -gdb.py suffix.

	[BZ #18585]
	* elf/readlib.c (is_gdb_python_file): New.
	(process_file): Don't issue errors on filenames with -gdb.py
	suffix.
2015-06-24 10:27:39 -07:00
Joseph Myers
6f874bd4d4 Move csin, csinh tests to auto-libm-test-in.
This patch moves most tests of csin and csinh with finite inputs from
libm-test.inc to auto-libm-test-in.  The remaining two tests of each
function with small arguments are not moved because moving them causes
the time required by gen-auto-libm-tests to go up from under 8 seconds
to over 11 minutes for me.  (The current development version of MPC
has had speed improvements for mpc_sin for some time, but there hasn't
been a release containing those improvements yet.)

Tested for x86_64 and x86.

	* math/auto-libm-test-in: Add more tests of csin and csinh.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (csin_test_data): Remove tests moved to
	auto-libm-test-in.
	(csinh_test_data): Likewise.
2015-06-24 16:37:44 +00:00
Joseph Myers
ac831b362a Fix csin, csinh overflow in directed rounding modes (bug 18593).
csin and csinh can produce bad results when overflowing in directed
rounding modes, because a multiplication that can overflow is followed
by a possible negation.  This patch fixes this by negating one of the
arguments of the multiplication before the multiplication instead of
negating the result.

The new tests for this issue are added to auto-libm-test-in, starting
use of that file for csin and csinh.  The issue was found in the
course of moving existing tests for csin and csinh (existing tests, by
being enabled in more cases than previously, showed the issue for
float and double but not for long double); that move will now be done
separately.

Tested for x86_64 and x86 and ulps updated accordingly.

	[BZ #18593]
	* math/s_csin.c (__csin): Negate before rather than after possibly
	overflowing multiplication.
	* math/s_csinf.c (__csinf): Likewise.
	* math/s_csinh.c (__csinh): Likewise.
	* math/s_csinhf.c (__csinhf): Likewise.
	* math/s_csinhl.c (__csinhl): Likewise.
	* math/s_csinl.c (__csinl): Likewise.
	* math/auto-libm-test-in: Add some tests of csin and csinh.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (csin_test_data): Use AUTO_TESTS_c_c.
	(csinh_test_data): Likewise.
	* sysdeps/x86_64/fpu/libm-test-ulps: Update.
2015-06-24 16:20:48 +00:00
Joseph Myers
8475ab1684 Fix ldbl-128 expl missing underflows (bug 18586).
Similar to various other bugs in this area, the ldbl-128 expl
implementation does not raise the underflow exception for all
subnormal results, if the scaling down is exact although the actual
result is inexact.  This patch fixes this by forcing the exception in
this case (the tests that failed before and pass after the test are
already in the testsuite).

Tested for mips64.

	[BZ #18586]
	* sysdeps/ieee754/ldbl-128/e_expl.c (__ieee754_expl): Force
	underflow exception for small results.
2015-06-24 15:12:03 +00:00
Andrew Senkevich
36870482d2 Combination of data tables for x86_64 vector functions sinf, cosf and sincosf.
* sysdeps/x86_64/fpu/Makefile (libmvec-support): Fixed files list.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S: Renamed variable
    and included header.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_trig_data.S: New file.
    * sysdeps/x86_64/fpu/svml_s_trig_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_cosf_data.S: Removed file.
    * sysdeps/x86_64/fpu/svml_s_cosf_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sinf_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sinf_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sincosf_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sincosf_data.h: Likewise.
2015-06-24 17:44:35 +03:00
Joseph Myers
ad39cce0da Fix sin, sincos missing underflows (bug 16526, bug 16538).
Similar to various other bugs in this area, some sin and sincos
implementations do not raise the underflow exception for subnormal
arguments, when the result is tiny and inexact.  This patch forces the
exception in a similar way to previous fixes.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #16526]
	[BZ #16538]
	* sysdeps/ieee754/dbl-64/s_sin.c: Include <float.h>.
	(__sin): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/flt-32/k_sinf.c: Include <float.h>.
	(__kernel_sinf): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/ieee754/ldbl-128/k_sincosl.c: Include <float.h>.
	(__kernel_sincosl): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/ieee754/ldbl-128/k_sinl.c: Include <float.h>.
	(__kernel_sinl): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: Include <float.h>.
	(__kernel_sincosl): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/ieee754/ldbl-128ibm/k_sinl.c: Include <float.h>.
	(__kernel_sinl): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/ieee754/ldbl-96/k_sinl.c: Include <float.h>.
	(__kernel_sinl): Force underflow exception for arguments with
	small absolute value.
	* sysdeps/powerpc/fpu/k_sinf.c: Include <float.h>.
	(__kernel_sinf): Force underflow exception for arguments with
	small absolute value.
	* math/auto-libm-test-in: Add more tests of sin and sincos.
	* math/auto-libm-test-out: Regenerated.
2015-06-23 22:24:20 +00:00
Joseph Myers
8b1bab5ffa Fix spurious "inexact" exceptions from __kernel_standard_l (bug 18245, bug 18583).
__kernel_standard_l converts long double arguments to double for use
in SVID "struct exception".  This has special-case handling for when
that conversion would overflow or underflow but the original long
double function wouldn't.  However, it turns out that "inexact"
exceptions can be spurious here as well, when the function is exactly
determined and __kernel_standard_l is being called for a domain error.
This patch fixes this by using feholdexcept / fesetenv to avoid
exceptions from the conversion, replacing the previous special-case
logic for overflow and underflow (this covers all functions using
__kernel_standard_l, not just those that actually need a change, since
there doesn't seem to be much point in restricting things just to the
functions that mustn't get "inexact" here).

Tested for x86_64 and x86.

	[BZ #18245]
	[BZ #18583]
	* sysdeps/ieee754/k_standardl.c: Include <fenv.h>.
	(__kernel_standard_l): Use feholdexcept and fesetenv around
	conversion to double instead of special-casing overflow and
	underflow.
	* math/libm-test.inc (fmod_test_data): Add more tests.
	(remainder_test_data): Likewise.
	(sqrt_test_data): Likewise.
2015-06-23 17:26:46 +00:00
Torvald Riegel
c47ca9647f Fix atomic_full_barrier on x86 and x86_64.
This fixes BZ #17403 by defining atomic_full_barrier,
atomic_read_barrier, and atomic_write_barrier on x86 and x86_64.  A full
barrier is implemented through an atomic idempotent modification to the
stack and not through using mfence because the latter can supposedly be
somewhat slower due to having to provide stronger guarantees wrt.
self-modifying code, for example.
2015-06-23 19:20:52 +02:00
Joseph Myers
b2faf4eadf Fix math/Makefile dependency on libm-test.stmp for libmvec tests.
Since the libmvec tests went in I've noticed build failures from
parallel testing in math/, when those tests start building before
libm-test.c has been fully generated.  (This only applies if libm test
sources have been modified after the original glibc build, because
otherwise libm-test.stmp was generated during the original build and
doesn't get regenerated during testing.)

Those tests depend on libm-test.stmp, but the dependency uses
$(libmvec-tests), which is set in the sysdeps Makefile fragments, and
appears before the inclusion of ../Rules, which is what includes those
fragments; thus, the dependency does not work and parallel make can
start building the vector tests too soon.  This patch moves the
dependency further down so that the required variable is defined when
the dependency is.

Tested for x86_64.

	* math/Makefile [$(PERL) != no]
	($(addprefix $(objpfx), $(addsuffix .o, $(libm-vec-tests)))): Move
	dependency on libm-test.stmp below the inclusion of Rules.
2015-06-23 16:27:25 +00:00
Andrew Senkevich
5872b8352a Combination of data tables for x86_64 vector functions sin, cos and sincos.
* sysdeps/x86_64/fpu/Makefile (libmvec-support): Fixed files list.
    * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S: Renamed variable
    and included header.
    * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_trig_data.S: New file.
    * sysdeps/x86_64/fpu/svml_d_trig_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_d_cos2_core.S: Removed unneeded include.
    * sysdeps/x86_64/fpu/svml_d_cos4_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_cos8_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_cos_data.S: Removed file.
    * sysdeps/x86_64/fpu/svml_d_cos_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_d_sin_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_sin_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_d_sincos_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_sincos_data.h: Likewise.
2015-06-23 19:21:50 +03:00
Joseph Myers
718d34a309 Fix csqrt spurious underflows (bug 18371).
The csqrt implementations in glibc can cause spurious underflows in
some cases as a side-effect of the scaling for large arguments (when
underflow is correct for the square root of the argument that was
scaled down to avoid overflow, but not for the original argument).
This patch arranges to avoid the underflowing intermediate computation
(eliminating a multiplication in 0.5 in the problem cases where a
subsequent scaling by 2 would follow).

Tested for x86_64 and x86 and ulps updated accordingly (only needed
for x86).

	[BZ #18371]
	* math/s_csqrt.c (__csqrt): Avoid multiplication by 0.5 where
	intermediate but not final result might underflow.
	* math/s_csqrtf.c (__csqrtf): Likewise.
	* math/s_csqrtl.c (__csqrtl): Likewise.
	* math/auto-libm-test-in: Add more tests of csqrt.
	* math/auto-libm-test-out: Regenerated.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
2015-06-23 16:01:54 +00:00
Joseph Myers
b59549574e Fix exp2, exp2f spurious underflows (bug 18219).
The dbl-64 and flt-32 implementations of exp2 functions produce
spurious underflow exceptions.  The underlying reason is the same in
both cases: the computation works as (2^a - 1)*2^b + 2^b for suitably
chosen a and b, where a has small magnitude so 2^a - 1 can be computed
with a low-degree polynomial approximation, and (2^a - 1)*2^b can
underflow even when the final result does not.  This patch fixes this
by adjusting the threshold for when scaling is used to avoid
intermediate underflow so it works for any possible value of a where
the final result would not underflow.

Tested for x86_64 and x86.

	[BZ #18219]
	* sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Reduce
	threshold on absolute value of exponent for which scaling is used.
	* sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise.
	* math/auto-libm-test-in: Add more tests of exp2.
	* math/auto-libm-test-out: Regenerated.
2015-06-23 14:35:18 +00:00
Dmitry V. Levin
b57525f1a3 Fix potential hanging of gethostbyaddr_r/gethostbyname_r
When "reorder" resolver option is enabled, threads of a multi-threaded process
could hang in gethostbyaddr_r, gethostbyname_r, or gethostbyname2_r.

Due to a trivial bug in _res_hconf_reorder_addrs, simultaneous
invocations of this function in a multi-threaded process could result to
_res_hconf_reorder_addrs returning without releasing the lock it holds,
causing other threads to block indefinitely while waiting for the lock
that is not going to be released.

[BZ #17977]
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Fix unlocking
when initializing interface list, based on the bug analysis
and the patch proposed by Eric Newton.
* resolv/tst-res_hconf_reorder.c: New test.
* resolv/Makefile [$(have-thread-library) = yes] (tests): Add
tst-res_hconf_reorder.
($(objpfx)tst-res_hconf_reorder): Depend on $(libdl)
and $(shared-thread-library).
(tst-res_hconf_reorder-ENV): New variable.
2015-06-23 09:37:28 +00:00
Dmitry V. Levin
47852c972d _res_hconf_reorder_addrs: fix typo in comment
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Fix typo in comment.
2015-06-23 09:33:16 +00:00
Joseph Myers
554edb23ff Fix expm1 missing underflows (bug 16353).
Similar to various other bugs in this area, some expm1 implementations
do not raise the underflow exception for subnormal arguments, when the
result is tiny and inexact.  This patch forces the exception in a
similar way to previous fixes.

(The issue does not apply to the ldbl-* implementations or to those
for x86 / x86_64 long double.  The change to
sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c is one I missed when
previously fixing bug 16354; the bug in that implementation was
previously latent, but the expm1 fixes stopped it being latent and so
required it to be fixed to avoid spurious underflows from cosh.)

Tested for x86_64 and x86.

	[BZ #16353]
	* sysdeps/i386/fpu/s_expm1.S (dbl_min): New object.
	(__expm1): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/i386/fpu/s_expm1f.S (flt_min): New object.
	(__expm1f): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/dbl-64/s_expm1.c: Include <float.h>.
	(__expm1): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/flt-32/s_expm1f.c: Include <float.h>.
	(__expm1f): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c (__ieee754_cosh):
	Check for small arguments before calling __expm1.
	* math/auto-libm-test-in: Do not mark underflow exceptions as
	possibly missing for bug 16353.
	* math/auto-libm-test-out: Regenerated.
2015-06-22 21:06:19 +00:00
Andreas Schwab
6b142b3a1d Record TTL also for DNS PTR queries (bug 18513)
This allows nscd to manage proper TTL for GETHOSTBYADDR[v6] requests.
2015-06-22 14:04:34 +02:00
Leonhard Holz
ef635a29f7 remove unnecessary memset in strcoll
This patch avoids some initialization overhead in the hot path of strcoll by
replacing a memset with zero assignments. It improves the file listing benchmark
by 15% on x86. Tests are ok.

filelist#C              -1.30%
filelist#en_US.UTF-8    -15.08%
lorem_ipsum#vi_VN.UTF-8 -15.04%
lorem_ipsum#ar_SA.UTF-8 -11.83%
lorem_ipsum#en_US.UTF-8 -9.66%
lorem_ipsum#zh_CN.UTF-8 -8.63%
lorem_ipsum#cs_CZ.UTF-8 -8.28%
lorem_ipsum#en_GB.UTF-8 -18.07%
lorem_ipsum#da_DK.UTF-8 -11.13%
lorem_ipsum#pl_PL.UTF-8 -15.31%
lorem_ipsum#fr_FR.UTF-8 -12.26%
lorem_ipsum#pt_PT.UTF-8 -10.64%
lorem_ipsum#el_GR.UTF-8 -8.19%
lorem_ipsum#ru_RU.UTF-8 -0.65%
lorem_ipsum#iw_IL.UTF-8 -14.92%
lorem_ipsum#es_ES.UTF-8 -11.47%
lorem_ipsum#hi_IN.UTF-8 -1.05%
lorem_ipsum#sv_SE.UTF-8  6.44%
lorem_ipsum#hu_HU.UTF-8 -9.85%
lorem_ipsum#tr_TR.UTF-8 -14.96%
lorem_ipsum#is_IS.UTF-8 -10.35%
lorem_ipsum#it_IT.UTF-8 -11.33%
lorem_ipsum#sr_RS.UTF-8 -9.88%
lorem_ipsum#ja_JP.UTF-8 -3.23%

        * string/strcoll_l.c (STRCOLL): Remove unnecessary memset.
2015-06-22 07:53:09 +05:30
Leonhard Holz
f48b67323a remove now unused idxnow in strcoll
The struct element idxnow is not used and can be removed. Tests show
no problems.

	* string/strcoll_l.c: Remove unused struct element idxnow.
2015-06-22 07:46:37 +05:30
Joseph Myers
cb0937b299 Fix x86_64 / x86 expm1l (-min_subnorm) result sign (bug 18569).
In the x86 / x86_64 implementations of expm1l, when expm1l's result
should underflow to 0 (argument minus the least subnormal, in some
rounding modes), it can be a zero of the wrong sign.  This patch fixes
this by returning the argument with underflow forced in that case
(this is a 1ulp error relative to the correctly rounded result of -0,
which is OK in terms of the documented accuracy goals, whereas a
result with the wrong sign never is).

Tested for x86_64 and x86.

	[BZ #18569]
	* sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Force
	underflow and return argument in case of subnormal argument.
	* sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]:
	Likewise.
	* math/auto-libm-test-in: Add more tests of expm1.
	* math/auto-libm-test-out: Regenerated.
2015-06-21 18:43:10 +00:00
Joseph Myers
fea1d8d673 Correct ChangeLog syntax for conditional change within function. 2015-06-21 18:41:12 +00:00
Joseph Myers
7540cfc5a8 Fix x86 / x86_64 expl, exp10l missing underflows (bug 16361).
Similar to various other bugs in this area, the x86 and x86_64
implementations of expl / exp10l can fail to produce underflow
exceptions when the unscaled result has trailing 0 bits so the scaling
down to subnormal precision is exact.  This patch fixes this by
forcing the exception in the case of tiny results.

Tested for x86_64 and x86.

	[BZ #16361]
	* sysdeps/i386/fpu/e_expl.S [!USE_AS_EXPM1L] (cmin): New object.
	[!USE_AS_EXPM1L] (IEEE754_EXPL): Force underflow exception for
	tiny results.
	* sysdeps/x86_64/fpu/e_expl.S [!USE_AS_EXPM1L] (cmin): New object.
	[!USE_AS_EXPM1L] (IEEE754_EXPL): Force underflow exception for
	tiny results.
	* math/auto-libm-test-in: Add more tests of exp and exp10.  Do not
	mark underflow exceptions as possibly missing for bug 16361.
	* math/auto-libm-test-out: Regenerated.
2015-06-21 17:48:04 +00:00
Joseph Myers
d6cc0b4fea conformtest: Fix pselect expectations.
conformtest expected pselect for XOPEN2K and POSIX2008 (correctly),
but not for XOPEN2K8 (wrongly).  This patch fixes the data to expect
it for XOPEN2K8 as well.

(As for all such fixes based on failures seen from the tests, there is
no guarantee that the data is fully correct for a particular standard
after the fix; headers and data may well have matching bugs.  So far
I've only reviewed ISO, ISO99, ISO11 and POSIX data in detail, though
I hope eventually to review the others.)

Tested for x86_64 and x86.

	* conform/data/sys/select.h-data [XOPEN2K8] (pselect): Expect.
	* conform/Makefile (test-xfail-XOPEN2K8/sys/select.h/conform):
	Remove variable.
	(test-xfail-XOPEN2K8/sys/time.h/conform): Likewise.
	(test-xfail-XOPEN2K8/utmpx.h/conform).
2015-06-19 20:52:44 +00:00
Joseph Myers
5675961d15 conformtest: Support xfail markers on individual assertions.
Various conformtest tests fail because of known issues, filed in
Bugzilla, that are hard to fix (requiring new features, kernel
cooperation or involving changing types in ways that may involve care
around padding when interfacing to the kernel).  Such an issue has the
effect of making the whole test for the (standard, header) pair fail,
so hiding any other issues with that header for that standard
(possibly regressions or architecture-specific issues).

This patch adds a mechanism for individual conformtest test
expectations to start with xfail-, meaning that a failure of that
particular assertion does not cause the whole test to fail at the
makefile level and so failure at the makefile level can be used to
detect other issues that are likely to be easier to fix.  This is
similar to the whitelisted symbols in the linknamespace tests, or the
marking of particular libm tests as allowing spurious or missing
exceptions, for example.  The bugs filed in Bugzilla should still be
fixed, and the xfail- markers removed at that point, but xfail-
renders the tests more useful until that happens.

Note that there is no way to add such a marker for the assertion that
a header uses only symbols in the namespace of symbols it's meant to
use.  I don't think there's any need for a way to xfail those
namespace tests other than xfailing the whole (standard, header) pair
at the makefile level, since they are generally straightforward to fix
(add appropriate conditionals on the problem definitions).

The xfails in this patch do not necessarily cover all cases of
hard-to-fix header bugs filed in Bugzilla that currently show up in
conformtest failures; there may be more yet to add for existing open
bugs.

Tested for x86_64 and x86.

	* conform/conformtest.pl ($xerrors): New variable.
	(note_error): New function.
	(compiletest): New argument $xfail.  Use not_error.
	(runtest): Likewise.
	(top level): Handle xfail- lines.  Update calls to compiletest and
	runtest.  Handle xfail- and optional- in headers listed with
	allow-header.
	* conform/data/fcntl.h-data (O_TTY_INIT): Use xfail-.
	(O_EXEC): Likewise.
	(O_SEARCH): Likewise.
	* conform/data/stropts.h-data (ioctl): Likewise.
	* conform/data/sys/ipc.h-data (ipc_perm.mode): Likewise.
	* conform/data/sys/sem.h-data (semid_ds.sem_nsems): Likewise.
	* conform/data/sys/socket.h-data (msghdr.msg_iovlen): Likewise.
	(msghdr.msg_controllen): Likewise.
	(cmsghdr.cmsg_len): Likewise.
	* conform/data/utmpx.h-data (utmpx.ut_tv): Likewise.
	* conform/Makefile (test-xfail-XPG3/sys/ipc.h/conform): Remove
	variable.
	(test-xfail-XPG3/sys/sem.h/conform): Likewise.
	(test-xfail-XPG4/stropts.h/conform): Likewise.
	(test-xfail-XPG4/sys/ipc.h/conform): Likewise.
	(test-xfail-XPG4/sys/sem.h/conform): Likewise.
	(test-xfail-XPG4/sys/socket.h/conform): Likewise.
	(test-xfail-UNIX98/stropts.h/conform): Likewise.
	(test-xfail-UNIX98/sys/ipc.h/conform): Likewise.
	(test-xfail-UNIX98/sys/sem.h/conform): Likewise.
	(test-xfail-UNIX98/sys/socket.h/conform): Likewise.
	(test-xfail-XOPEN2K/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/ipc.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/sem.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/socket.h/conform): Likewise.
	(test-xfail-XOPEN2K/utmpx.h/conform): Likewise.
	(test-xfail-POSIX2008/fcntl.h/conform): Likewise.
	(test-xfail-POSIX2008/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K8/fcntl.h/conform): Likewise.
	(test-xfail-XOPEN2K8/stropts.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/ipc.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/sem.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/socket.h/conform): Likewise.
2015-06-19 20:05:41 +00:00
Andrew Senkevich
c342488200 Fixed powerpc64 build.
* sysdeps/ieee754/ldbl-opt/s_sin.c (__DECL_SIMD_sincos_disable,
    __DECL_SIMD_sincos_disablef, __DECL_SIMD_sincos_disablel): Added empty
    definitions for proper unfolding of __MATHDECL_VEC.
2015-06-19 20:42:34 +03:00
Stefan Liebler
2419de0720 Fix benchtests build failure after 'add benchmark for strcoll'
This patch fixes implicit declaration of function strdup, strtok,
strcoll, strchr and removes unused variable res.

ChangeLog:

	* benchtests/bench-strcoll.c:
	Include string.h.
	(main): Remove unused variable res.
2015-06-19 13:47:59 +02:00
Stefan Liebler
86fe187471 Fix timezone tests run in parallel.
The Makefile rule is called one time for target %/UTC or %/Universal.
If the tests are run in parallel, UTC or Universal can trigger the rule.
This patch patch generates the second test-result file as a copy of the
generated one.
Thus the testsuite can rely on the existence of the test-result files
regardless of which target has triggered the rule.

ChangeLog:

	* timezone/Makefile (%/UTC %/Universal):
	Generate test-result files for UTC and Universal.
2015-06-19 13:47:59 +02:00
Stefan Liebler
52e9636260 S/390: Regenerate ULPs
Regenerated ULPs after recent math test changes.

ChangeLog:

	* sysdeps/s390/fpu/libm-test-ulps: Regenerated.
2015-06-19 13:47:59 +02:00
Joseph Myers
8db3cdefef Fix asinh missing underflows (bug 16350).
Similar to various other bugs in this area, some asinh implementations
do not raise the underflow exception for subnormal arguments, when the
result is tiny and inexact.  This patch forces the exception in a
similar way to previous fixes.

Tested for x86_64, x86 and mips64.

	[BZ #16350]
	* sysdeps/i386/fpu/s_asinh.S (__asinh): Force underflow exception
	for arguments with small absolute value.
	* sysdeps/i386/fpu/s_asinhf.S (__asinhf): Likewise.
	* sysdeps/i386/fpu/s_asinhl.S (__asinhl): Likewise.
	* sysdeps/ieee754/dbl-64/s_asinh.c: Include <float.h>.
	(__asinh): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/flt-32/s_asinhf.c: Include <float.h>.
	(__asinhf): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/ldbl-128/s_asinhl.c: Include <float.h>.
	(__asinhl): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: Include <float.h>.
	(__asinhl): Force underflow exception for arguments with small
	absolute value.
	* sysdeps/ieee754/ldbl-96/s_asinhl.c: Include <float.h>.
	(__asinhl): Force underflow exception for arguments with small
	absolute value.
	* math/auto-libm-test-in: Do not mark underflow exceptions as
	possibly missing for bug 16350.
	* math/auto-libm-test-out: Regenerated.
2015-06-18 23:27:41 +00:00
Joseph Myers
a7a3c24632 Remove include/bits/ipc.h.
Ten conformtest failures arise from the internal header
include/bits/ipc.h failing to condition internal declarations, outside
the public namespace of headers including bits/ipc.h, on [!_ISOMAC].
As discussed in
<https://sourceware.org/ml/libc-alpha/2015-06/msg00653.html>, the
internal declarations that are actually relevant are in ipc_priv.h and
so include/bits/ipc.h should not be needed at all; this patch removes
it.  (Ten further conformtest failures for other headers including
bits/ipc.h remain because of other conformance issues in those
headers.)

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* include/bits/ipc.h: Remove file.
	* conform/Makefile (test-xfail-XPG3/sys/msg.h/conform): Remove
	variable.
	(test-xfail-XPG3/sys/shm.h/conform): Likewise.
	(test-xfail-XPG4/sys/msg.h/conform): Likewise.
	(test-xfail-XPG4/sys/shm.h/conform): Likewise.
	(test-xfail-UNIX98/sys/msg.h/conform): Likewise.
	(test-xfail-UNIX98/sys/shm.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/msg.h/conform): Likewise.
	(test-xfail-XOPEN2K/sys/shm.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/msg.h/conform): Likewise.
	(test-xfail-XOPEN2K8/sys/shm.h/conform): Likewise.
2015-06-18 23:08:15 +00:00
Joseph Myers
a1ee4fd106 Remove stray spurious-underflow markings from cexp test.
I noticed that I'd left a spurious-underflow allowance behind in
auto-libm-test-in for a bug that was fixed some time ago.  This patch
removes it.

Tested for x86_64 and x86.

	* math/auto-libm-test-in: Remove spurious underflow allowance for
	tests of cexp.
	* math/auto-libm-test-out: Regenerated.
2015-06-18 20:51:17 +00:00
Joseph Myers
d1ac55d890 Fix netinet/in.h MCAST_* namespace (bug 18558).
sysdeps/unix/sysv/linux/bits/in.h (as included in netinet/in.h, and
via that in netdb.h and arpa/inet.h) defines a series of MCAST_*
macros, both under __USE_MISC and then again unconditionally.  These
are not POSIX macros, nor in any of the namespaces listed in POSIX as
reserved for this header, so should not be defined unconditionally.
This patch duly removes the unconditional definitions, leaving the
ones conditional on __USE_MISC.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	[BZ #18558]
	* sysdeps/unix/sysv/linux/bits/in.h (MCAST_JOIN_GROUP): Remove
	unconditional definition.
	(MCAST_BLOCK_SOURCE): Likewise.
	(MCAST_UNBLOCK_SOURCE): Likewise.
	(MCAST_LEAVE_GROUP): Likewise.
	(MCAST_JOIN_SOURCE_GROUP): Likewise.
	(MCAST_LEAVE_SOURCE_GROUP): Likewise.
	(MCAST_MSFILTER): Likewise.
	* conform/Makefile (test-xfail-XOPEN2K/arpa/inet.h/conform):
	Remove variable.
	(test-xfail-XOPEN2K/netdb.h/conform): Likewise.
	(test-xfail-XOPEN2K/netinet/in.h/conform): Likewise.
	(test-xfail-XOPEN2K8/arpa/inet.h/conform): Likewise.
	(test-xfail-XOPEN2K8/netdb.h/conform): Likewise.
	(test-xfail-XOPEN2K8/netinet/in.h/conform): Likewise.
2015-06-18 19:48:22 +00:00