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