diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-12-06 23:06:12 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-12-06 23:06:12 +0000 |
commit | fb1ca2aa3e58cad474c918f34e5e5eed70f5d94a (patch) | |
tree | 4a3bc2b05252124e5348b506c742c59da642820d | |
parent | fc10cc3f3223f1fa8c8dcc6743d18d1392808d71 (diff) | |
download | glibc-fb1ca2aa3e58cad474c918f34e5e5eed70f5d94a.tar.gz glibc-fb1ca2aa3e58cad474c918f34e5e5eed70f5d94a.tar.xz glibc-fb1ca2aa3e58cad474c918f34e5e5eed70f5d94a.zip |
Support defining strtof32, wcstof32 aliases.
This patch adds support for defining strtof32, wcstof32, strtof32_l and wcstof32_l functions as aliases of the corresponding float functions when _Float32 support is enabled. Tested for x86_64; also tested with build-many-glibcs.py in conjunction with other _Float32 changes. * stdlib/strtof.c: Include <bits/floatn.h> [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (strtof32): Define and later undefine as macro. Define as weak alias if [!USE_WIDE_CHAR]. [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (wcstof32): Define and later undefine as macro. Define as weak alias if [USE_WIDE_CHAR]. * stdlib/strtof_l.c: Include <bits/floatn.h> [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (strtof32_l): Define and later undefine as macro. Define as weak alias if [!USE_WIDE_CHAR]. [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (wcstof32_l): Define and later undefine as macro. Define as weak alias if [USE_WIDE_CHAR].
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | stdlib/strtof.c | 17 | ||||
-rw-r--r-- | stdlib/strtof_l.c | 17 |
3 files changed, 49 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index fc455ae577..d4c70e4820 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ 2017-12-06 Joseph Myers <joseph@codesourcery.com> + * stdlib/strtof.c: Include <bits/floatn.h> + [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (strtof32): Define + and later undefine as macro. Define as weak alias if + [!USE_WIDE_CHAR]. + [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (wcstof32): Define + and later undefine as macro. Define as weak alias if + [USE_WIDE_CHAR]. + * stdlib/strtof_l.c: Include <bits/floatn.h> + [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (strtof32_l): Define + and later undefine as macro. Define as weak alias if + [!USE_WIDE_CHAR]. + [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (wcstof32_l): Define + and later undefine as macro. Define as weak alias if + [USE_WIDE_CHAR]. + * stdlib/strfromf.c: Include <bits/floatn.h>. [__HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32] (strfromf32): Define and later undefine as macro and define as weak alias. diff --git a/stdlib/strtof.c b/stdlib/strtof.c index 600512134c..7f47362025 100644 --- a/stdlib/strtof.c +++ b/stdlib/strtof.c @@ -20,6 +20,13 @@ /* The actual implementation for all floating point sizes is in strtod.c. These macros tell it to produce the `float' version, `strtof'. */ +#include <bits/floatn.h> + +#if __HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32 +# define strtof32 __hide_strtof32 +# define wcstof32 __hide_wcstof32 +#endif + #define FLOAT float #define FLT FLT #ifdef USE_WIDE_CHAR @@ -32,3 +39,13 @@ #include "strtod.c" + +#if __HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32 +# undef strtof32 +# undef wcstof32 +# ifdef USE_WIDE_CHAR +weak_alias (wcstof, wcstof32) +# else +weak_alias (strtof, strtof32) +# endif +#endif diff --git a/stdlib/strtof_l.c b/stdlib/strtof_l.c index 33be42f96d..5735240afa 100644 --- a/stdlib/strtof_l.c +++ b/stdlib/strtof_l.c @@ -17,6 +17,13 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <bits/floatn.h> + +#if __HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32 +# define strtof32_l __hide_strtof32_l +# define wcstof32_l __hide_wcstof32_l +#endif + #include <locale.h> extern float ____strtof_l_internal (const char *, char **, int, locale_t); @@ -36,3 +43,13 @@ extern float ____strtof_l_internal (const char *, char **, int, locale_t); #define FLOAT_HUGE_VAL HUGE_VALF #include "strtod_l.c" + +#if __HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32 +# undef strtof32_l +# undef wcstof32_l +# ifdef USE_WIDE_CHAR +weak_alias (wcstof_l, wcstof32_l) +# else +weak_alias (strtof_l, strtof32_l) +# endif +#endif |