Support strfromf64x alias.

This patch adds support for defining strfromf64x as a function alias
(of strfroml or strfromf128, as appropriate) when _Float64x is
supported.

Tested for x86_64, including in conjunction with _Float64x support
patches, and also tested build for other configurations (in
conjunction with _Float64x support patches) with build-many-glibcs.py
to cover the various different files needing updating to define these
aliases.

	* stdlib/strfroml.c: Always include <stdlib.h>.
	[__HAVE_FLOAT64X_LONG_DOUBLE] (strfromf64x): Define and later
	undefine as macro and define as weak alias.
	* sysdeps/ieee754/float128/strfromf128.c: Include <bits/floatn.h>.
	[__HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE]: Include
	<stdlib.h>.
	[__HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE] (strfromf64x):
	Define and later undefine as macro and define as weak alias.
This commit is contained in:
Joseph Myers 2017-11-24 23:12:30 +00:00
parent 0df4fe3557
commit df2806cdb5
3 changed files with 35 additions and 2 deletions

View File

@ -1,5 +1,14 @@
2017-11-24 Joseph Myers <joseph@codesourcery.com> 2017-11-24 Joseph Myers <joseph@codesourcery.com>
* stdlib/strfroml.c: Always include <stdlib.h>.
[__HAVE_FLOAT64X_LONG_DOUBLE] (strfromf64x): Define and later
undefine as macro and define as weak alias.
* sysdeps/ieee754/float128/strfromf128.c: Include <bits/floatn.h>.
[__HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE]: Include
<stdlib.h>.
[__HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE] (strfromf64x):
Define and later undefine as macro and define as weak alias.
* stdlib/strtold.c [__HAVE_FLOAT64X_LONG_DOUBLE] (strtof64x): * stdlib/strtold.c [__HAVE_FLOAT64X_LONG_DOUBLE] (strtof64x):
Define and later undefine as macro. Define as weak alias if Define and later undefine as macro. Define as weak alias if
[!USE_WIDE_CHAR]. [!USE_WIDE_CHAR].

View File

@ -23,12 +23,25 @@
#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 #if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
# define strfromf128 __hide_strfromf128 # define strfromf128 __hide_strfromf128
# include <stdlib.h> #endif
#if __HAVE_FLOAT64X_LONG_DOUBLE
# define strfromf64x __hide_strfromf64x
#endif
#include <stdlib.h>
#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
# undef strfromf128 # undef strfromf128
#endif #endif
#if __HAVE_FLOAT64X_LONG_DOUBLE
# undef strfromf64x
#endif
#include "strfrom-skeleton.c" #include "strfrom-skeleton.c"
#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 #if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
weak_alias (strfroml, strfromf128) weak_alias (strfroml, strfromf128)
#endif #endif
#if __HAVE_FLOAT64X_LONG_DOUBLE
weak_alias (strfroml, strfromf64x)
#endif

View File

@ -16,10 +16,21 @@
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <bits/floatn.h>
#define FLOAT _Float128 #define FLOAT _Float128
#define STRFROM strfromf128 #define STRFROM strfromf128
#include <bits/floatn.h> #if __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE
# define strfromf64x __hide_strfromf64x
# include <stdlib.h>
# undef strfromf64x
#endif
#include <float128_private.h> #include <float128_private.h>
#include <stdlib/strfrom-skeleton.c> #include <stdlib/strfrom-skeleton.c>
#if __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE
weak_alias (strfromf128, strfromf64x)
#endif