about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-07-31 21:01:00 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-07-31 21:01:16 +0200
commit27312d7a15d9428ea66797c761ec8ee92904b4ca (patch)
treea1c290b3fbb1c768a33ca92905d4b19377f284cb /src
parentd19a3d987b5c8eced66e087ba90f823f3cc99959 (diff)
downloadbox64-27312d7a15d9428ea66797c761ec8ee92904b4ca.tar.gz
box64-27312d7a15d9428ea66797c761ec8ee92904b4ca.zip
[WRAPPER] Added __powl_finite wrapping to libm (for #2862)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt2
-rw-r--r--src/wrapped/generated/wrappedlibmtypes.h5
-rw-r--r--src/wrapped/wrappedlibm.c9
-rw-r--r--src/wrapped/wrappedlibm_private.h1
4 files changed, 16 insertions, 1 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 7e1f0f62..c85af77d 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -5130,6 +5130,8 @@ wrappedlibm:
   - __fmod_finite
   - __hypot_finite
   - __pow_finite
+- DFDD:
+  - __powl_finite
 wrappedlibncurses:
 - pFv:
   - initscr
diff --git a/src/wrapped/generated/wrappedlibmtypes.h b/src/wrapped/generated/wrappedlibmtypes.h
index adeff992..2d0b0c22 100644
--- a/src/wrapped/generated/wrappedlibmtypes.h
+++ b/src/wrapped/generated/wrappedlibmtypes.h
@@ -25,9 +25,11 @@ typedef double (*dFdd_t)(double, double);
 #if defined(HAVE_LD80BITS) || defined(ANDROID)
 typedef int64_t (*IFD_t)(long double);
 typedef long double (*DFD_t)(long double);
+typedef long double (*DFDD_t)(long double, long double);
 #else // !HAVE_LD80BITS && !ANDROID
 typedef int64_t (*IFD_t)(double);
 typedef double (*DFD_t)(double);
+typedef double (*DFDD_t)(double, double);
 #endif
 
 #define SUPER() ADDED_FUNCTIONS() \
@@ -74,6 +76,7 @@ typedef double (*DFD_t)(double);
 	GO(__atan2_finite, dFdd_t) \
 	GO(__fmod_finite, dFdd_t) \
 	GO(__hypot_finite, dFdd_t) \
-	GO(__pow_finite, dFdd_t)
+	GO(__pow_finite, dFdd_t) \
+	GO(__powl_finite, DFDD_t)
 
 #endif // __wrappedlibmTYPES_H_
diff --git a/src/wrapped/wrappedlibm.c b/src/wrapped/wrappedlibm.c
index 8a7273ec..9e7a9ebc 100644
--- a/src/wrapped/wrappedlibm.c
+++ b/src/wrapped/wrappedlibm.c
@@ -27,6 +27,9 @@ typedef float   (*fFff_t)   (float, float);
 typedef double  (*dFdd_t)   (double, double);
 typedef float   (*fFf_t)    (float);
 typedef double  (*dFd_t)    (double);
+#ifdef HAVE_LD80BITS
+typedef long double (*DFDD_t) (long double, long double);
+#endif
 
 #undef GO_cFc
 
@@ -81,6 +84,12 @@ F1D(log)
 F2F(fmodf)
 F2D(fmod)
 
+#ifdef HAVE_LD80BITS
+FINITE(powl, DFDD_t, long double, (long double a, long double b), a, b)
+#else
+EXPORT double my___powl_finite(double a, double b) __attribute__((alias("my___pow_finite")));
+#endif
+
 #undef F2D
 #undef F2F
 #undef F1D
diff --git a/src/wrapped/wrappedlibm_private.h b/src/wrapped/wrappedlibm_private.h
index effcf49c..c827b2c7 100644
--- a/src/wrapped/wrappedlibm_private.h
+++ b/src/wrapped/wrappedlibm_private.h
@@ -303,6 +303,7 @@ GOWM(pow10l, DFD)
 GOW(powf, fFff)
 GOM(__powf_finite, fFff)
 GOM(__pow_finite, dFdd)
+GOM(__powl_finite, DFDD)
 GOWD(powl, DFDD, pow)
 GOW(remainder, dFdd)
 GOW(remainderf, fFff)