From eb6efee4923d70137545c36baf9337524a4b14dd Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Wed, 1 Jan 2025 20:29:54 -0500 Subject: [PATCH] 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 --- test/common/fp_control.h | 9 +++++++++ 1 file changed, 9 insertions(+) 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 ) { -- 2.30.2