Alexandre Julliard : msvcrt: Don't export fabsf on x86_64.
Alexandre Julliard
julliard at winehq.org
Fri Jan 15 15:39:45 CST 2021
Module: wine
Branch: master
Commit: 5131905771017784a55d2ca099e6cb34544dc539
URL: https://source.winehq.org/git/wine.git/?a=commit;h=5131905771017784a55d2ca099e6cb34544dc539
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Jan 15 17:03:10 2021 +0100
msvcrt: Don't export fabsf on x86_64.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msvcr110/msvcr110.spec | 2 +-
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr120_app/msvcr120_app.spec | 2 +-
dlls/msvcrt/math.c | 28 ++++++++++++++++------------
dlls/msvcrt/msvcrt.spec | 2 +-
include/msvcrt/math.h | 8 ++++++--
6 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index 62e230a8740..e46208d84c0 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -2015,7 +2015,7 @@
@ cdecl exp(double)
@ cdecl -arch=!i386 expf(float)
@ cdecl fabs(double)
-@ cdecl -arch=!i386 fabsf(float)
+@ cdecl -arch=arm,arm64 fabsf(float)
@ cdecl fclose(ptr)
@ cdecl feof(ptr)
@ cdecl ferror(ptr)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 509bb59ba43..962ebeb96c8 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -2138,7 +2138,7 @@
@ cdecl expm1f(float)
@ cdecl expm1l(double) expm1
@ cdecl fabs(double)
-@ cdecl -arch=!i386 fabsf(float)
+@ cdecl -arch=arm,arm64 fabsf(float)
@ cdecl fclose(ptr)
@ cdecl fdim(double double)
@ cdecl fdimf(float float)
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index f74140c2311..d8c424100a9 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1804,7 +1804,7 @@
@ cdecl expm1f(float) msvcr120.expm1f
@ cdecl expm1l(double) msvcr120.expm1l
@ cdecl fabs(double) msvcr120.fabs
-@ cdecl -arch=!i386 fabsf(float) msvcr120.fabsf
+@ cdecl -arch=arm,arm64 fabsf(float) msvcr120.fabsf
@ cdecl fclose(ptr) msvcr120.fclose
@ cdecl fdim(double double) msvcr120.fdim
@ cdecl fdimf(float float) msvcr120.fdimf
diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c
index e6e837e52c6..3aba13d1478 100644
--- a/dlls/msvcrt/math.c
+++ b/dlls/msvcrt/math.c
@@ -713,18 +713,6 @@ float CDECL ceilf( float x )
return unix_funcs->ceilf(x);
}
-/*********************************************************************
- * fabsf (MSVCRT.@)
- *
- * Copied from musl: src/math/fabsf.c
- */
-float CDECL fabsf( float x )
-{
- union { float f; UINT32 i; } u = { x };
- u.i &= 0x7fffffff;
- return u.f;
-}
-
/*********************************************************************
* floorf (MSVCRT.@)
*/
@@ -751,6 +739,22 @@ float CDECL modff( float x, float *iptr )
#endif
+#if !defined(__i386__) && !defined(__x86_64__) && (_MSVCR_VER == 0 || _MSVCR_VER >= 110)
+
+/*********************************************************************
+ * fabsf (MSVCRT.@)
+ *
+ * Copied from musl: src/math/fabsf.c
+ */
+float CDECL fabsf( float x )
+{
+ union { float f; UINT32 i; } u = { x };
+ u.i &= 0x7fffffff;
+ return u.f;
+}
+
+#endif
+
/*********************************************************************
* acos (MSVCRT.@)
*
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 63fb33ae300..51195429088 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1284,7 +1284,7 @@
@ cdecl exp(double)
@ cdecl -arch=!i386 expf(float)
@ cdecl fabs(double)
-@ cdecl -arch=!i386 fabsf(float)
+@ cdecl -arch=arm,arm64 fabsf(float)
@ cdecl fclose(ptr)
@ cdecl feof(ptr)
@ cdecl ferror(ptr)
diff --git a/include/msvcrt/math.h b/include/msvcrt/math.h
index d4bc140f228..43e82fc3bea 100644
--- a/include/msvcrt/math.h
+++ b/include/msvcrt/math.h
@@ -133,7 +133,6 @@ _ACRTIMP float __cdecl powf(float, float);
_ACRTIMP float __cdecl sqrtf(float);
_ACRTIMP float __cdecl ceilf(float);
_ACRTIMP float __cdecl floorf(float);
-_ACRTIMP float __cdecl fabsf(float);
_ACRTIMP float __cdecl frexpf(float, int*);
_ACRTIMP float __cdecl modff(float, float*);
_ACRTIMP float __cdecl fmodf(float, float);
@@ -161,7 +160,6 @@ static inline float powf(float x, float y) { return pow(x, y); }
static inline float sqrtf(float x) { return sqrt(x); }
static inline float ceilf(float x) { return ceil(x); }
static inline float floorf(float x) { return floor(x); }
-static inline float fabsf(float x) { return fabs(x); }
static inline float frexpf(float x, int *y) { return frexp(x, y); }
static inline float modff(float x, float *y) { double yd, ret = modf(x, &yd); *y = yd; return ret; }
static inline float fmodf(float x, float y) { return fmod(x, y); }
@@ -172,6 +170,12 @@ static inline int _fpclassf(float x) { return _fpclass(x); }
#endif
+#if !defined(__i386__) && !defined(__x86_64__) && (_MSVCR_VER == 0 || _MSVCR_VER >= 110)
+_ACRTIMP float __cdecl fabsf(float);
+#else
+static inline float fabsf(float x) { return fabs(x); }
+#endif
+
#if !defined(__i386__) || _MSVCR_VER>=120
_ACRTIMP float __cdecl _chgsignf(float);
More information about the wine-cvs
mailing list