Module: wine Branch: master Commit: e60591919850a79a483ec3c138fce96f8e1edb57 URL: https://source.winehq.org/git/wine.git/?a=commit;h=e60591919850a79a483ec3c13...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Jun 26 09:12:11 2020 +0200
ntdll: Move the math functions to the Unix library.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/misc.c | 30 +++++++++++------------------- dlls/ntdll/ntdll.spec | 2 +- dlls/ntdll/unix/loader.c | 23 +++++++++++++++++++++++ dlls/ntdll/unixlib.h | 14 +++++++++++++- 4 files changed, 48 insertions(+), 21 deletions(-)
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index 362c68e5e0..4e2175b89b 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -77,15 +77,7 @@ void CDECL NTDLL_wine_get_host_version( const char **sysname, const char **relea */ int CDECL NTDLL_abs( int i ) { - return abs( i ); -} - -/********************************************************************* - * labs (NTDLL.@) - */ -LONG CDECL NTDLL_labs( LONG i ) -{ - return labs( i ); + return i >= 0 ? i : -i; }
/********************************************************************* @@ -93,7 +85,7 @@ LONG CDECL NTDLL_labs( LONG i ) */ double CDECL NTDLL_atan( double d ) { - return atan( d ); + return unix_funcs->atan( d ); }
/********************************************************************* @@ -101,7 +93,7 @@ double CDECL NTDLL_atan( double d ) */ double CDECL NTDLL_ceil( double d ) { - return ceil( d ); + return unix_funcs->ceil( d ); }
/********************************************************************* @@ -109,7 +101,7 @@ double CDECL NTDLL_ceil( double d ) */ double CDECL NTDLL_cos( double d ) { - return cos( d ); + return unix_funcs->cos( d ); }
/********************************************************************* @@ -117,7 +109,7 @@ double CDECL NTDLL_cos( double d ) */ double CDECL NTDLL_fabs( double d ) { - return fabs( d ); + return unix_funcs->fabs( d ); }
/********************************************************************* @@ -125,7 +117,7 @@ double CDECL NTDLL_fabs( double d ) */ double CDECL NTDLL_floor( double d ) { - return floor( d ); + return unix_funcs->floor( d ); }
/********************************************************************* @@ -133,7 +125,7 @@ double CDECL NTDLL_floor( double d ) */ double CDECL NTDLL_log( double d ) { - return log( d ); + return unix_funcs->log( d ); }
/********************************************************************* @@ -141,7 +133,7 @@ double CDECL NTDLL_log( double d ) */ double CDECL NTDLL_pow( double x, double y ) { - return pow( x, y ); + return unix_funcs->pow( x, y ); }
/********************************************************************* @@ -149,7 +141,7 @@ double CDECL NTDLL_pow( double x, double y ) */ double CDECL NTDLL_sin( double d ) { - return sin( d ); + return unix_funcs->sin( d ); }
/********************************************************************* @@ -157,7 +149,7 @@ double CDECL NTDLL_sin( double d ) */ double CDECL NTDLL_sqrt( double d ) { - return sqrt( d ); + return unix_funcs->sqrt( d ); }
/********************************************************************* @@ -165,7 +157,7 @@ double CDECL NTDLL_sqrt( double d ) */ double CDECL NTDLL_tan( double d ) { - return tan( d ); + return unix_funcs->tan( d ); }
#if defined(__GNUC__) && defined(__i386__) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 0b0d458796..913d6cacc4 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1508,7 +1508,7 @@ @ cdecl iswspace(long) NTDLL_iswspace @ cdecl iswxdigit(long) NTDLL_iswxdigit @ cdecl isxdigit(long) NTDLL_isxdigit -@ cdecl labs(long) NTDLL_labs +@ cdecl labs(long) NTDLL_abs @ cdecl log(double) NTDLL_log @ cdecl mbstowcs(ptr str long) NTDLL_mbstowcs @ cdecl memchr(ptr long long) NTDLL_memchr diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 68018b49fb..be71498343 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1331,6 +1331,19 @@ ULONG_PTR get_image_address(void) }
+/* math function wrappers */ +static double CDECL ntdll_atan( double d ) { return atan( d ); } +static double CDECL ntdll_ceil( double d ) { return ceil( d ); } +static double CDECL ntdll_cos( double d ) { return cos( d ); } +static double CDECL ntdll_fabs( double d ) { return fabs( d ); } +static double CDECL ntdll_floor( double d ) { return floor( d ); } +static double CDECL ntdll_log( double d ) { return log( d ); } +static double CDECL ntdll_pow( double x, double y ) { return pow( x, y ); } +static double CDECL ntdll_sin( double d ) { return sin( d ); } +static double CDECL ntdll_sqrt( double d ) { return sqrt( d ); } +static double CDECL ntdll_tan( double d ) { return tan( d ); } + + /*********************************************************************** * unix_funcs */ @@ -1466,6 +1479,16 @@ static struct unix_funcs unix_funcs = fast_RtlSleepConditionVariableSRW, fast_RtlSleepConditionVariableCS, fast_RtlWakeConditionVariable, + ntdll_atan, + ntdll_ceil, + ntdll_cos, + ntdll_fabs, + ntdll_floor, + ntdll_log, + ntdll_pow, + ntdll_sin, + ntdll_sqrt, + ntdll_tan, get_initial_environment, get_dynamic_environment, get_initial_directory, diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h index 62117eabb6..cec36b58c0 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -29,7 +29,7 @@ struct msghdr; struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */ -#define NTDLL_UNIXLIB_VERSION 63 +#define NTDLL_UNIXLIB_VERSION 64
struct unix_funcs { @@ -285,6 +285,18 @@ struct unix_funcs const LARGE_INTEGER *timeout ); NTSTATUS (CDECL *fast_RtlWakeConditionVariable)( RTL_CONDITION_VARIABLE *variable, int count );
+ /* math functions */ + double (CDECL *atan)( double d ); + double (CDECL *ceil)( double d ); + double (CDECL *cos)( double d ); + double (CDECL *fabs)( double d ); + double (CDECL *floor)( double d ); + double (CDECL *log)( double d ); + double (CDECL *pow)( double x, double y ); + double (CDECL *sin)( double d ); + double (CDECL *sqrt)( double d ); + double (CDECL *tan)( double d ); + /* environment functions */ NTSTATUS (CDECL *get_initial_environment)( WCHAR **wargv[], WCHAR *env, SIZE_T *size ); NTSTATUS (CDECL *get_dynamic_environment)( WCHAR *env, SIZE_T *size );