From: John Paul Adrian Glaubitz Date: Fri, 12 Jul 2024 05:16:04 +0000 (-0400) Subject: sh4 support X-Git-Tag: archive/raspbian/2021.12.0-1+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=40fa546c534f2ccbbdb798a152014950d2e8079d;p=onetbb.git sh4 support Forwarded: not yet. BTS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1027168 onetbb currently FTBFS on sh4 because the source code assumes that the target FPU supports all four rounding modes (FE_TONEAREST, FE_DOWNWARD, FE_UPWARD and FE_TOWARDZERO) which is not the case on sh4 which supports FE_TONEAREST and FE_TOWARDZERO only [1]. The attached patch fixes these assumptions for sh4 and makes the code build. I have already patched and uploaded the package to the unreleased distribution so that the mold linker can build on sh4 as well. I will forward the patch later after reformating it. Gbp-Pq: Name sh4-support.patch --- diff --git a/test/common/fp_control.h b/test/common/fp_control.h index 9e18f8b..6737efe 100644 --- a/test/common/fp_control.h +++ b/test/common/fp_control.h @@ -112,7 +112,11 @@ inline void SetRoundingMode ( int mode ) { #include +#if defined(__sh__) +const int RND_MODE_MASK = FE_TONEAREST | FE_TOWARDZERO; +#else const int RND_MODE_MASK = FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO; +#endif const int NumSseModes = 1; const int SseModes[NumSseModes] = { 0 }; @@ -125,8 +129,13 @@ inline void SetSseMode ( int ) {} #endif /* Other archs */ +#if defined(__sh__) +const int NumRoundingModes = 2; +const int RoundingModes[NumRoundingModes] = { FE_TONEAREST, FE_TOWARDZERO }; +#else const int NumRoundingModes = 4; const int RoundingModes[NumRoundingModes] = { FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO }; +#endif const int numFPModes = NumRoundingModes*NumSseModes; inline void SetFPMode( int mode ) {