From 0b3ad39364f952e2cdc2fe31408bff678ab39363 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 7 Mar 2014 20:06:54 +0000 Subject: [PATCH] * libc/include/stdlib.h (strtold): Define if _HAVE_LONG_DOUBLE is defined. * libc/stdlib/strtold.c (strtold): Ditto. Call strtod on systems with long double == double, _strtold otherwise. --- newlib/ChangeLog | 8 ++++++++ newlib/libc/include/stdlib.h | 4 ++-- newlib/libc/stdlib/strtold.c | 10 ++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 26d1668ca..ae3754746 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,11 @@ +2014-03-07 Corinna Vinschen + Jeff Johnston + + * libc/include/stdlib.h (strtold): Define if _HAVE_LONG_DOUBLE is + defined. + * libc/stdlib/strtold.c (strtold): Ditto. Call strtod on systems + with long double == double, _strtold otherwise. + 2014-03-05 Corinna Vinschen * libc/include/time.h (__TM_GMTOFF): Remove Cygwin-specific definition. diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h index ef218663b..905cf5d59 100644 --- a/newlib/libc/include/stdlib.h +++ b/newlib/libc/include/stdlib.h @@ -231,11 +231,11 @@ int _EXFUN(_system_r,(struct _reent *, const char *)); _VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *)); /* On platforms where long double equals double. */ -#ifdef _LDBL_EQ_DBL +#ifdef _HAVE_LONG_DOUBLE #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) extern long double strtold (const char *__restrict, char **__restrict); #endif -#endif /* _LDBL_EQ_DBL */ +#endif /* _HAVE_LONG_DOUBLE */ _END_STD_C diff --git a/newlib/libc/stdlib/strtold.c b/newlib/libc/stdlib/strtold.c index 390ec735b..a620251ee 100644 --- a/newlib/libc/stdlib/strtold.c +++ b/newlib/libc/stdlib/strtold.c @@ -31,12 +31,18 @@ POSSIBILITY OF SUCH DAMAGE. #include #include "local.h" +#ifdef _HAVE_LONG_DOUBLE +extern long double _strtold (const char *, char **); + /* On platforms where long double is as wide as double. */ -#ifdef _LDBL_EQ_DBL long double strtold (const char *__restrict s00, char **__restrict se) { +#ifdef _LDBL_EQ_DBL return strtod(s00, se); +#else + return _strtold (s00, se); +#endif } -#endif /* _LDBL_EQ_DBL */ +#endif /* _HAVE_LONG_DOUBLE */