summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--stdlib/strfroml.c15
-rw-r--r--sysdeps/ieee754/float128/strfromf128.c13
3 files changed, 35 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b58c4e21ba..abcbfe1d61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 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):
 	Define and later undefine as macro.  Define as weak alias if
 	[!USE_WIDE_CHAR].
diff --git a/stdlib/strfroml.c b/stdlib/strfroml.c
index bd6ebca0ad..3d1b6bf3dc 100644
--- a/stdlib/strfroml.c
+++ b/stdlib/strfroml.c
@@ -23,12 +23,25 @@
 
 #if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
 # 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
 #endif
+#if __HAVE_FLOAT64X_LONG_DOUBLE
+# undef strfromf64x
+#endif
 
 #include "strfrom-skeleton.c"
 
 #if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128
 weak_alias (strfroml, strfromf128)
 #endif
+#if __HAVE_FLOAT64X_LONG_DOUBLE
+weak_alias (strfroml, strfromf64x)
+#endif
diff --git a/sysdeps/ieee754/float128/strfromf128.c b/sysdeps/ieee754/float128/strfromf128.c
index 597c7e62f9..c3183cd7ef 100644
--- a/sysdeps/ieee754/float128/strfromf128.c
+++ b/sysdeps/ieee754/float128/strfromf128.c
@@ -16,10 +16,21 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <bits/floatn.h>
+
 #define	FLOAT		_Float128
 #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 <stdlib/strfrom-skeleton.c>
+
+#if __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE
+weak_alias (strfromf128, strfromf64x)
+#endif