Alexandre Julliard : ntdll: Move the math functions to the Unix library.
Alexandre Julliard
julliard at winehq.org
Fri Jun 26 17:00:53 CDT 2020
Module: wine
Branch: master
Commit: e60591919850a79a483ec3c138fce96f8e1edb57
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e60591919850a79a483ec3c138fce96f8e1edb57
Author: Alexandre Julliard <julliard at 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 at 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 );
More information about the wine-cvs
mailing list