From 4780e11726e392151677a60f5bb8afb581fa7221 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 21 Aug 2024 12:41:53 +0200 Subject: [PATCH] package/gcc: add GCC patch to fix PowerPC64/musl build issue PowerPC64/musl toolchains currently fail to build with: In file included from ../../../libquadmath/math/sqrtq.c:13: ../../../libquadmath/math/../../libgcc/soft-fp/quad.h:69:1: error: unable to emulate 'TF' 69 | typedef float TFtype __attribute__ ((mode (TF))); | ^~~~~~~ make[4]: *** [Makefile:979: math/sqrtq.lo] Error 1 This issue has been reported upstream as https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007, and has been fixed as https://gcc.gnu.org/g:3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b. This commit simply backports the upstream GCC fix. This issue was new with GCC 14.x, so only GCC 14.x needs to be fixed. Fixes: http://autobuild.buildroot.org/results/529bec7ef338842030d3340d9b21d8fd16d8639d/ Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- ...up-libquadmath-math-sqrtq.c-compilat.patch | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch diff --git a/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch b/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch new file mode 100644 index 0000000000..b6ed2ffed8 --- /dev/null +++ b/package/gcc/14.2.0/0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch @@ -0,0 +1,57 @@ +From ba9356565695728ce0c852f7de3de27f8745611d Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 3 Aug 2024 20:37:54 +0200 +Subject: [PATCH] libquadmath: Fix up libquadmath/math/sqrtq.c compilation in + some powerpc* configurations [PR116007] + +My PR114623 change started using soft-fp.h and quad.h for the sqrtq implementation. +Unfortunately, that seems to fail building in some powerpc* configurations, where +TFmode isn't available. +quad.h has: + #ifndef TFtype + typedef float TFtype __attribute__ ((mode (TF))); + #endif +and uses TFtype. quad.h has: + /* Define the complex type corresponding to __float128 + ("_Complex __float128" is not allowed) */ + #if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__) + typedef _Complex float __attribute__((mode(TC))) __complex128; + #else + typedef _Complex float __attribute__((mode(KC))) __complex128; + #endif +with the conditional and KCmode use added during porting of libquadmath +to powerpc*, so I've just defined TFtype for powerpc when __LONG_DOUBLE_IEEE128__ +isn't defined; I could define it to float __attribute__ ((mode (KF))) but it +seemed easier to just define it to __float128 which should do the same thing. + +2024-08-03 Jakub Jelinek + + PR target/116007 + * math/sqrtq.c (TFtype): For PowerPC without __LONG_DOUBLE_IEEE128__ + define to __float128 before including soft-fp.h and quad.h. + +(cherry picked from commit 3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b) +Upstream: https://gcc.gnu.org/g:3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b +Upstream: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007 +Signed-off-by: Thomas Petazzoni +--- + libquadmath/math/sqrtq.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libquadmath/math/sqrtq.c b/libquadmath/math/sqrtq.c +index 8ca2828d42c..a58998a0667 100644 +--- a/libquadmath/math/sqrtq.c ++++ b/libquadmath/math/sqrtq.c +@@ -9,6 +9,9 @@ + && defined(FE_TOWARDZERO) \ + && defined(FE_INEXACT) + #define USE_SOFT_FP 1 ++#if defined(_ARCH_PPC) && !defined(__LONG_DOUBLE_IEEE128__) ++#define TFtype __float128 ++#endif + #include "../../libgcc/soft-fp/soft-fp.h" + #include "../../libgcc/soft-fp/quad.h" + #endif +-- +2.46.0 +