Support defining strtof32, wcstof32 aliases.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 6 Dec 2017 23:06:12 +0000 (23:06 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 6 Dec 2017 23:06:12 +0000 (23:06 +0000)
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].

ChangeLog
stdlib/strtof.c
stdlib/strtof_l.c

index fc455ae..d4c70e4 100644 (file)
--- 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.
index 6005121..7f47362 100644 (file)
 /* 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
 
 
 #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
index 33be42f..5735240 100644 (file)
    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