blob: 80f11e44c12e939da5862875e3eb641eac90ee6b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
From c7af102e6bce6638add2f38576ffe9c6741ba768 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= <mail@nh2.me>
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 <mail@nh2.me>
---
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
|