newlib-cygwin/newlib/libc/stdlib
Corinna Vinschen 97dac2bbcb ldtoa: fix dropping too many digits from output
ldtoa cuts the number of digits it returns based on a computation of
number of supported bits (144) divide by log10(2).  Not only is the
integer approximation of log10(2) ~= 8/27 missing a digit here, it
also fails to take really small double and long double values into
account.

Allow for the full potential precision of long double values.  At the
same time, change the local string array allocation to request only as
much bytes as necessary to support the caller-requested number of
digits, to keep the stack size low on small targets.

In the long run a better fix would be to switch to gdtoa, as the BSD
variants, as well as Mingw64 do.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-04 13:15:39 +01:00
..
Makefile.am newlib: Build internal strtold code only if HAVE_LONG_DOUBLE defined 2018-10-10 18:01:22 +02:00
Makefile.in Add build mechanism to share common header files between machines 2021-04-13 12:55:33 +02:00
_Exit.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
__adjust.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
__atexit.c newlib: don't check malloc/free pointer 2018-08-08 10:50:19 +02:00
__call_atexit.c newlib: don't check malloc/free pointer 2018-08-08 10:50:19 +02:00
__exp10.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
__ten_mu.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
a64l.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
abort.c ansification: remove _VOID 2018-01-17 11:47:20 -06:00
abs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
aligned_alloc.c Include malloc.h in libc/stdlib/aligned_alloc.c 2021-02-18 02:05:47 +01:00
arc4random.c Fix warnings when building for msp430-elf 2020-09-03 12:55:32 +02:00
arc4random.h Only define static locks in multithreaded mode 2017-02-13 17:04:17 -05:00
arc4random_uniform.c Add arc4random() etc. from OpenBSD 5.8 2016-03-18 12:33:41 +01:00
assert.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
atexit.c ansification: remove _EXFNPTR, _EXPARM 2018-01-17 11:47:27 -06:00
atexit.h ansification: remove _PTR 2018-01-17 11:47:16 -06:00
atof.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
atoff.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
atoi.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
atol.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
atoll.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
btowc.c Consolidate wctomb/mbtowc calls for POSIX-1.2008 2016-08-15 10:56:57 +02:00
calloc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
chacha_private.h Cleanup macros in chacha_private.h to be target-type independent 2016-03-18 21:20:06 +01:00
cxa_atexit.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
cxa_finalize.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
div.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
drand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
dtoa.c Prevent NULL ptr accesses due to Balloc out of memory 2019-10-04 17:43:49 -04:00
dtoastub.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
ecvtbuf.c Don't display trailing '.' in _dcvt 2019-12-18 20:53:36 +01:00
efgcvt.c fix compile errors for efgcvt.c 2019-07-24 11:58:21 +02:00
environ.c 2002-12-20 Jeff Johnston <jjohnstn@redhat.com> 2002-12-20 21:07:56 +00:00
envlock.c stdlib: remove TRAD_SYNOPSIS 2017-12-01 03:41:52 -06:00
eprintf.c
erand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
exit.c Fix syntax error in exit.c 2018-01-19 19:58:10 +01:00
gdtoa-gethex.c stdlib: conditionalize locale usage 2021-08-23 10:02:00 +02:00
gdtoa-hexnan.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
gdtoa.h Import correctly working strtold from David M. Gay. 2015-11-20 18:14:58 +01:00
getenv.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
getenv_r.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
getopt.c newlib: getopt now permutes multi-flag options correctly 2018-06-18 18:45:44 +02:00
getsubopt.3 Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
getsubopt.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
imaxabs.c Importing imaxabs inttypes method from FreeBSD. 2017-07-28 12:23:08 +02:00
imaxdiv.c Importing imaxdiv inttypes method from FreeBSD. 2017-07-28 12:23:10 +02:00
itoa.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
jrand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
l64a.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
labs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
lcong48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
ldiv.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
ldtoa.c ldtoa: fix dropping too many digits from output 2021-11-04 13:15:39 +01:00
llabs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
lldiv.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
local.h ansification: remove _EXFUN, _EXFUN_NOTHROW 2018-01-17 11:47:29 -06:00
lrand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
malign.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
malloc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mallocr.c malloc/nano-malloc: correctly check for out-of-bounds allocation reqs 2020-11-17 10:52:34 +01:00
mbctype.h ansification: remove _EXFUN, _EXFUN_NOTHROW 2018-01-17 11:47:29 -06:00
mblen.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mblen_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbrlen.c 2013-11-26 Julio Gutierrez <jgutleyva@gmail.com> 2013-11-26 17:21:01 +00:00
mbrtowc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbsinit.c * libc/stdlib/mbrlen.c: Change include order to prevent compiler errors when 2003-12-05 06:13:44 +00:00
mbsnrtowcs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbsrtowcs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbstowcs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbstowcs_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbtowc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mbtowc_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mlock.c stdlib: remove TRAD_SYNOPSIS 2017-12-01 03:41:52 -06:00
mprec.c Prevent NULL ptr accesses due to Balloc out of memory 2019-10-04 17:43:49 -04:00
mprec.h Prevent NULL ptr accesses due to Balloc out of memory 2019-10-04 17:43:49 -04:00
mrand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
msize.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mstats.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
mtrim.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
nano-mallocr.c nano-malloc: Fix redefined compilation warning 2021-09-06 20:29:39 +02:00
nrand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
on_exit.c ansification: remove _EXFNPTR, _EXPARM 2018-01-17 11:47:27 -06:00
on_exit_args.c Add static instance of _on_exit_args for _REENT_SMALL platforms. 2015-12-21 11:49:28 -05:00
on_exit_args.h Add static instance of _on_exit_args for _REENT_SMALL platforms. 2015-12-21 11:49:28 -05:00
putenv.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
putenv_r.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
quick_exit.c Only define static locks in multithreaded mode 2017-02-13 17:04:17 -05:00
rand.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
rand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
rand48.h ansification: remove _EXFUN, _EXFUN_NOTHROW 2018-01-17 11:47:29 -06:00
rand_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
random.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
realloc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
reallocarray.c libc/stdlib: Use __builtin_mul_overflow for reallocarray and calloc 2020-08-12 10:09:56 +02:00
reallocf.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
rpmatch.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
sb_charsets.c Actually return value from __cp_index 2016-10-22 21:08:44 +02:00
seed48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
setenv.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
setenv_r.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
srand48.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
std.h ansification: remove _HAVE_STDC 2018-01-17 11:47:30 -06:00
stdlib.tex Add simple versions of random() and srandom() 2016-03-28 22:39:50 -05:00
strtod.c stdlib: conditionalize locale usage 2021-08-23 10:02:00 +02:00
strtodg.c Prevent more NULL ptr accesses due to Balloc out of memory 2020-01-09 15:18:14 -05:00
strtoimax.c Added Restriction on base value 2018-08-13 09:42:21 +02:00
strtol.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
strtold.c Implement strto[dflu]_l/wcsto[dflu]_l 2016-08-15 17:35:21 +02:00
strtoll.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
strtoll_r.c Implement strto[dflu]_l/wcsto[dflu]_l 2016-08-15 17:35:21 +02:00
strtorx.c newlib: strtold: use __builtin_nanl to avoid libm dependency 2018-10-10 17:53:55 +02:00
strtoul.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
strtoull.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
strtoull_r.c Implement strto[dflu]_l/wcsto[dflu]_l 2016-08-15 17:35:21 +02:00
strtoumax.c newlib: fix various gcc warnings 2018-08-08 10:50:19 +02:00
system.c ansification: remove _EXFUN, _EXFUN_NOTHROW 2018-01-17 11:47:29 -06:00
utoa.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
valloc.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcrtomb.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcsnrtombs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcsrtombs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcstod.c stdlib: Use __get_numeric_locale instead of __localeconv_l for decimal_point 2018-09-06 14:14:05 +02:00
wcstoimax.c Importing wcstoimax inttypes method from FreeBSD. 2017-08-02 13:02:26 +02:00
wcstol.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
wcstold.c stdlib: Use __get_numeric_locale instead of __localeconv_l for decimal_point 2018-09-06 14:14:05 +02:00
wcstoll.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
wcstoll_r.c Implement strto[dflu]_l/wcsto[dflu]_l 2016-08-15 17:35:21 +02:00
wcstombs.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcstombs_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wcstoul.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
wcstoull.c Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
wcstoull_r.c Implement strto[dflu]_l/wcsto[dflu]_l 2016-08-15 17:35:21 +02:00
wcstoumax.c Importing wcstoumax inttypes method from FreeBSD. 2017-08-02 13:02:26 +02:00
wctob.c Consolidate wctomb/mbtowc calls for POSIX-1.2008 2016-08-15 10:56:57 +02:00
wctomb.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00
wctomb_r.c ansification: remove _DEFUN 2018-01-17 11:47:26 -06:00