From c7af102e6bce6638add2f38576ffe9c6741ba768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= Date: Thu, 30 Jul 2020 02:21:07 +0200 Subject: [PATCH] IexMathFpu.cpp: Fix build on non-glibc (e.g. musl libc). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Originally from: https://github.com/void-linux/void-packages/blob/80bbc168faa25448bd3399f4df331b836e74b85c/srcpkgs/ilmbase/patches/musl-_fpstate.patch Fixes error: IlmBase/IexMath/IexMathFpu.cpp: In function ‘void Iex_2_4::FpuControl::restoreControlRegs(const ucontext_t&, bool)’: IlmBase/IexMath/IexMathFpu.cpp:284:38: error: ‘struct _fpstate’ has no member named ‘cw’; did you mean ‘cwd’? 284 | setCw ((ucon.uc_mcontext.fpregs->cw & cwRestoreMask) | cwRestoreVal); | ^~ | cwd IlmBase/IexMath/IexMathFpu.cpp:287:20: error: ‘struct Iex_2_4::FpuControl::_fpstate_64’ has no member named ‘magic’ 287 | setMxcsr (kfp->magic == 0 ? kfp->mxcsr : 0, clearExceptions); | ^~~~~ Signed-off-by: Niklas Hambüchen --- IlmBase/IexMath/IexMathFpu.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/IlmBase/IexMath/IexMathFpu.cpp b/IlmBase/IexMath/IexMathFpu.cpp index ceed658e0..439329e50 100644 --- a/IexMath/IexMathFpu.cpp +++ b/IexMath/IexMathFpu.cpp @@ -281,10 +281,18 @@ restoreControlRegs (const ucontext_t & ucon, bool clearExceptions) inline void restoreControlRegs (const ucontext_t & ucon, bool clearExceptions) { +#if defined(__GLIBC__) || defined(__i386__) setCw ((ucon.uc_mcontext.fpregs->cw & cwRestoreMask) | cwRestoreVal); +#else + setCw ((ucon.uc_mcontext.fpregs->cwd & cwRestoreMask) | cwRestoreVal); +#endif _fpstate * kfp = reinterpret_cast<_fpstate *> (ucon.uc_mcontext.fpregs); +#if defined(__GLIBC__) || defined(__i386__) setMxcsr (kfp->magic == 0 ? kfp->mxcsr : 0, clearExceptions); +#else + setMxcsr (kfp->mxcsr, clearExceptions); +#endif } #endif