diff options
Diffstat (limited to 'sysdeps/ieee754/ldbl-64-128/strtold_l.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-64-128/strtold_l.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/sysdeps/ieee754/ldbl-64-128/strtold_l.c b/sysdeps/ieee754/ldbl-64-128/strtold_l.c index a8181740a8..448c26bbd0 100644 --- a/sysdeps/ieee754/ldbl-64-128/strtold_l.c +++ b/sysdeps/ieee754/ldbl-64-128/strtold_l.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2016 Free Software Foundation, Inc. +/* Copyright (C) 1999-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -15,10 +15,21 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <bits/floatn.h> + +#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 +# define strtof128_l __hide_strtof128_l +# define wcstof128_l __hide_wcstof128_l +#endif + +#if __HAVE_FLOAT64X_LONG_DOUBLE +# define strtof64x_l __hide_strtof64x_l +# define wcstof64x_l __hide_wcstof64x_l +#endif + #include <math.h> #include <stdlib.h> #include <wchar.h> -#include <xlocale.h> /* The actual implementation for all floating point sizes is in strtod.c. These macros tell it to produce the `long double' version, `strtold'. */ @@ -26,13 +37,13 @@ #define FLOAT long double #define FLT LDBL #ifdef USE_WIDE_CHAR -extern long double ____new_wcstold_l (const wchar_t *, wchar_t **, __locale_t); +extern long double ____new_wcstold_l (const wchar_t *, wchar_t **, locale_t); # define STRTOF __new_wcstold_l # define __STRTOF ____new_wcstold_l # define ____STRTOF_INTERNAL ____wcstold_l_internal # define STRTOF_NAN __wcstold_nan #else -extern long double ____new_strtold_l (const char *, char **, __locale_t); +extern long double ____new_strtold_l (const char *, char **, locale_t); # define STRTOF __new_strtold_l # define __STRTOF ____new_strtold_l # define ____STRTOF_INTERNAL ____strtold_l_internal @@ -58,3 +69,23 @@ long_double_symbol (libc, ___new_strtold_l, strtold_l); long_double_symbol (libc, ____new_strtold_l, __strtold_l); # endif #endif + +#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 +# undef strtof128_l +# undef wcstof128_l +# ifdef USE_WIDE_CHAR +weak_alias (____new_wcstold_l, wcstof128_l) +# else +weak_alias (____new_strtold_l, strtof128_l) +# endif +#endif + +#if __HAVE_FLOAT64X_LONG_DOUBLE +# undef strtof64x_l +# undef wcstof64x_l +# ifdef USE_WIDE_CHAR +weak_alias (____new_wcstold_l, wcstof64x_l) +# else +weak_alias (____new_strtold_l, strtof64x_l) +# endif +#endif |