glibc/stdlib
Joseph Myers 5556d30cae Fix strtof decimal rounding close to half least subnormal (bug 18247).
Bug 18247 is an off-by-one error in strtof's determination of a
decimal exponent such that any value with that decimal exponent is at
most half the least subnormal and so the appropriate underflowing
value for the rounding mode can be determined with no
multiple-precision computations.  (Whether the value is in fact safe
despite the off-by-one depends on the floating-point format in
question.  It's wrong for float and for m68k ldbl-96 but not for other
supported formats.)  This patch corrects the computation of the
exponent in question to be safe in general, adding a comment
explaining the new computation.

Tested for x86_64.

	[BZ #18247]
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Decrease minimum
	decimal exponent by 1.
	* stdlib/tst-strtod-round-data: Add more tests.
	* stdlib/tst-strtod-round.c (tests): Regenerated.
2015-04-10 20:45:30 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sys
a64l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
abort.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
abs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
add_n.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
addmul_1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
alloca.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atexit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atof.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atoi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atol.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bsearch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bug-fmtmsg1.c Fix locking problem in fmtmsg 2012-01-16 09:03:20 -05:00
bug-getcontext.c Fix bug-getcontext test 2012-07-16 18:46:40 +02:00
bug-strtod2.c
bug-strtod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
canonicalize.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_atexit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_finalize.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_thread_atexit_impl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Depend
div.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
divmod_1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
divrem.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
drand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
drand48-iter.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
drand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
erand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
erand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
errno.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
exit.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmtmsg.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmtmsg.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fpioconst.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fpioconst.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gen-fpioconst.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gen-tst-strtod-round.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getcontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getsubopt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gmp-impl.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gmp.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
grouping.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
grouping.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
groupingwc.c
inlines.c
isomac.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
jrand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
jrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
l64a.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
labs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lcong48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lcong48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ldbl2mpn.c
ldiv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
llabs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lldiv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
longlong.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lrand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lshift.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
makecontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile S/390: Fix setcontext/swapcontext which are not restoring sigmask. 2015-03-12 11:08:11 +01:00
mblen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbstowcs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbtowc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mod_1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
monetary.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mp_clz_tab.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2flt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2ldbl.c
mrand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
msort.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mul_1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mul_n.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
nrand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
nrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
old_atexit.c
on_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
putenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
qsort.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rand_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rand.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
random_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
random.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rpmatch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rshift.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
secure-getenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
seed48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
seed48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
setcontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
setenv.c * stdlib/setenv.c (__add_to_environ): Revert previous change. 2015-03-15 17:06:21 -07:00
srand48_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
srand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stdlib.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strfmon_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strfmon.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtod_l.c Fix strtof decimal rounding close to half least subnormal (bug 18247). 2015-04-10 20:45:30 +00:00
strtod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtof_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtof.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoimax.c
strtol_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtol.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtold_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtold.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoll_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoul_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoull_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoull.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoumax.c
sub_n.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
submul_1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
swapcontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
system.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tens_in_limb.c * stdlib/Makefile (aux): Add tens_in_limb. 2008-03-08 04:18:31 +00:00
test-a64l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-canon2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-canon.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testdiv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testdiv.input
testmb2.c
testmb.c
testrand.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testsort.c
tst-atof1.c
tst-atof2.c
tst-bsearch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-environ.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-fmtmsg.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-fmtmsg.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-limits.c Fix a couple of -Wundef warnings. 2014-12-29 23:14:38 -05:00
tst-makecontext2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-makecontext3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-makecontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-putenv.c
tst-putenvmod.c
tst-qsort2.c stdlib/tst-qsort2.c: Fix off-by-one argc interpretation error 2014-06-20 21:29:33 +01:00
tst-qsort.c
tst-rand48-2.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-rand48.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-random2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-random.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-secure-getenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-setcontext2.c S/390: Fix setcontext/swapcontext which are not restoring sigmask. 2015-03-12 11:08:11 +01:00
tst-setcontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtod2.c * stdlib/tst-strtod2.c (do_test): Use %tu in fmt string for ptrdiff_t 2007-08-01 03:44:35 +00:00
tst-strtod3.c
tst-strtod4.c Include errno.h. Change main() to do_test(). Define TEST_FUNCTION. Include test-skeleton.c. (do_test): Check errno and exit(0) if ENOSYS. 2007-01-11 21:51:00 +00:00
tst-strtod5.c * stdlib/strtod_l.c (____STRTOF_INTERNAL): Properly handle -0. 2007-08-03 16:45:47 +00:00
tst-strtod6.c [BZ #15522] strtod ("nan(N)") returning a sNaN in some cases 2013-08-29 12:22:10 +02:00
tst-strtod-overflow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtod-round-data Fix strtof decimal rounding close to half least subnormal (bug 18247). 2015-04-10 20:45:30 +00:00
tst-strtod-round.c Fix strtof decimal rounding close to half least subnormal (bug 18247). 2015-04-10 20:45:30 +00:00
tst-strtod-underflow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtol.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-strtoll.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-system.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-tininess.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-tls-atexit-lib.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-tls-atexit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-unsetenv1.c * stdlib/Makefile (tests): Add tst-unsetenv1. 2008-12-02 02:27:43 +00:00
tst-xpg-basename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ucontext.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
udiv_qrnnd.c
Versions C++11 thread_local destructors support 2013-02-18 19:08:21 +05:30
wcstoimax.c
wcstombs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoumax.c
wctomb.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xpg_basename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00