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