From 4e2dff67beeb063cb36fe100d9d2b3f2f88d80c6 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 6 Nov 2017 13:26:15 +0000 Subject: [PATCH] Do not declare _Float128 support for powerpc64le -mlong-double-64 (bug 22402). The powerpc bits/floatn.h declares _Float128 support to be present when the compiler supports it for powerpc64le. However, in the case where -mlong-double-64 is used, __MATH_TG does not actually support _Float128; it only supports _Float128 in the distinct-long-double case. This shows up as a build failure when building glibc mainline with GCC mainline, given the recently added sanity check in math.h for configurations supported by __MATH_TG, as the compat code for -mlong-double-64 fails to build. However, the bug was logically present before that change (including in 2.26), just less visible. This patch fixes the build failure by declaring _Float128 to be unsupported in that case. (Of course this can't actually stop users calling the type-generic macros with _Float128 arguments with -mlong-double-64, just as they could be called with other unsupported types on other platforms, but perhaps makes it less likely by making all the type-specific _Float128 interfaces invisible in that case.) Tested compilation for powerpc64le with build-many-glibcs.py. [BZ #22402] * sysdeps/powerpc/bits/floatn.h: Include . [__NO_LONG_DOUBLE_MATH] (__HAVE_FLOAT128): Define to 0. --- ChangeLog | 6 ++++++ sysdeps/powerpc/bits/floatn.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f6f3ebfceb..acd573cfc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-11-06 Joseph Myers + + [BZ #22402] + * sysdeps/powerpc/bits/floatn.h: Include . + [__NO_LONG_DOUBLE_MATH] (__HAVE_FLOAT128): Define to 0. + 2017-11-04 Mike FABIAN * localedata/locales/tpi_PG (LC_TIME): Fix wrong d_fmt, / needs diff --git a/sysdeps/powerpc/bits/floatn.h b/sysdeps/powerpc/bits/floatn.h index 44a9434701..a293bfc996 100644 --- a/sysdeps/powerpc/bits/floatn.h +++ b/sysdeps/powerpc/bits/floatn.h @@ -20,12 +20,13 @@ #define _BITS_FLOATN_H #include +#include /* Defined to 1 if the current compiler invocation provides a floating-point type with the IEEE 754 binary128 format, and this glibc includes corresponding *f128 interfaces for it. */ #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \ - && defined __FLOAT128__ + && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH # define __HAVE_FLOAT128 1 #else # define __HAVE_FLOAT128 0 -- 2.43.5