Module: wine Branch: master Commit: 5131905771017784a55d2ca099e6cb34544dc539 URL: https://source.winehq.org/git/wine.git/?a=commit;h=5131905771017784a55d2ca09...
Author: Alexandre Julliard julliard@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@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);