glibc/sysdeps/generic
Joseph Myers c8235dda72 Avoid excess range overflowing results from cosh, sinh, lgamma (bug 18980).
Various i386 libm functions return values with excess range and
precision; Wilco Dijkstra's patches to make isfinite etc. expand
inline cause this pre-existing issue to result in test failures (when
e.g. a result that overflows float but not long double gets counted as
overflowing for some purposes but not others).

This patch addresses those cases arising from functions defined in C,
adding a math_narrow_eval macro that forces values to memory to
eliminate excess precision if FLT_EVAL_METHOD indicates this is
needed, and is a no-op otherwise.  I'll convert existing uses of
volatile and asm for this purpose to use the new macro later, once
i386 has clean test results again (which requires fixes for .S files
as well).

Tested for x86_64 and x86.  Committed.

	[BZ #18980]
	* sysdeps/generic/math_private.h: Include <float.h>.
	(math_narrow_eval): New macro.
	[FLT_EVAL_METHOD != 0] (excess_precision): Likewise.
	* sysdeps/ieee754/dbl-64/e_cosh.c (__ieee754_cosh): Use
	math_narrow_eval on overflowing return value.
	* sysdeps/ieee754/dbl-64/e_lgamma_r.c (__ieee754_lgamma_r):
	Likewise.
	* sysdeps/ieee754/dbl-64/e_sinh.c (__ieee754_sinh): Likewise.
	* sysdeps/ieee754/flt-32/e_coshf.c (__ieee754_coshf): Likewise.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c (__ieee754_lgammaf_r):
	Likewise.
	* sysdeps/ieee754/flt-32/e_sinhf.c (__ieee754_sinhf): Likewise.
2015-09-18 20:00:48 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
net Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
netinet Define ETH_ALEN in generic <netinet/if_ether.h>. 2015-03-04 16:11:31 -08:00
nfs Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sys Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
_G_config.h
_itoa.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
a.out.h
abort-instr.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
aio_misc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
allocalim.h
asm-syntax.h
atomic-machine.h Move bits/atomic.h to atomic-machine.h (bug 14912). 2015-09-11 20:00:19 +00:00
c++-types.data Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
confstr.h
device-nrs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dirstream.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-cache.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-dtprocnum.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-fileid.h Factor file identity rules out of generic rtld code. 2015-07-14 13:15:26 -07:00
dl-fptr.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-hash.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-librecon.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-machine.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-osinfo.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-procinfo.c
dl-procinfo.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-tls.h
dwarf2.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
elide.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
eloop-threshold.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
entry.h
errqueue.h
exit-thread.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fd_to_filename.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fips-private.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fork.h
fpu_control.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
frame.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
framestate.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gcc-compat.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gccframe.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
get-rounding-mode.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gmp-mparam.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
hp-timing-common.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
hp-timing.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ifreq.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ifunc-sel.h
intr-msg.h
inttypes.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ld.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
ldconfig.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ldsodefs.h Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
libBrokenLocale.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libanl.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libc-lock.h Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
libc-mmap.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
libc-tsd.h Rename bits/libc-tsd.h to libc-tsd.h (bug 14912). 2015-09-03 20:33:46 +00:00
libc.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libcidn.abilist
libcrypt.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libdl.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libm-test-ulps
libm.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libnss_compat.abilist
libnss_db.abilist
libnss_dns.abilist
libnss_files.abilist
libnss_hesiod.abilist
libnss_nis.abilist
libnss_nisplus.abilist
libpthread.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
libresolv.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
librt.abilist Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
linkmap.h Rename bits/linkmap.h to linkmap.h (bug 14912). 2015-09-04 19:44:27 +00:00
local-setxid.h
localplt.data Add hidden __tls_get_addr/___tls_get_addr alias 2014-12-21 09:27:11 -08:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
machine-lock.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
machine-sp.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
malloc-machine.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
malloc-sysdep.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
math-tests-arch.h Refactoring of START for conditions in individual tests 2015-05-14 18:07:06 +03:00
math-tests.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
math_ldbl.h
math_ldbl_opt.h
math_private.h Avoid excess range overflowing results from cosh, sinh, lgamma (bug 18980). 2015-09-18 20:00:48 +00:00
memcopy.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
not-cancel.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
nscd-types.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
pagecopy.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
paths.h
profil-counter.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
pty-private.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
register-dump.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rtld-lowlevel.h
safe-fatal.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sigcontextinfo.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
siglist.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sigset-cvt-mask.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stackguard-macros.h BZ #15754: Fix test case for ARM. 2013-09-23 01:44:38 -04:00
stackinfo.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stdint.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stdio-lock.h Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
symbol-hacks.h Remove NOT_IN_libc 2014-11-24 15:03:45 +05:30
sysdep-cancel.h
sysdep.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
thread_state.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tininess.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tls-macros.h
tls.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-audit.h
tst-stack-align.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unsecvars.h
unwind-dw2-fde-glibc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unwind-dw2-fde.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
unwind-dw2-fde.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unwind-dw2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unwind-pe.c
unwind-pe.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unwind-resume.h ARM: Consolidate with generic unwinder wrapper code 2015-01-05 15:42:16 -08:00
unwind.h Adjust _Unwind_Word in unwind.h to version in libgcc. 2015-08-26 10:26:26 +02:00
utmp-equal.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00