about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-13 15:38:13 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-13 15:38:13 +0100
commit610c63cd151cdc0ea7712db5eebf0ed56f56da4e (patch)
tree5709b5bffbfca96b3c1961da10065565b69ac640 /src
parentfa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72 (diff)
downloadbox64-610c63cd151cdc0ea7712db5eebf0ed56f56da4e.tar.gz
box64-610c63cd151cdc0ea7712db5eebf0ed56f56da4e.zip
[BOX32][WRAPPER] Added a few more libc and libresolv 32bits wrapped functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped32/generated/functions_list.txt4
-rw-r--r--src/wrapped32/generated/wrappedlibresolvtypes32.h5
-rw-r--r--src/wrapped32/generated/wrapper32.c2
-rw-r--r--src/wrapped32/generated/wrapper32.h1
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h14
-rw-r--r--src/wrapped32/wrappedlibresolv.c8
-rw-r--r--src/wrapped32/wrappedlibresolv_private.h4
7 files changed, 28 insertions, 10 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index c5efa3ab..9be1ed9d 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -1337,6 +1337,7 @@
 #() iEEipiup -> iEEipiup
 #() iEEuppLp -> iEEuppLp
 #() iEEpiipi -> iEEpiipi
+#() iFEpiipi -> iFEpiipi
 #() iEEpiipV -> iEEpiipV
 #() iFEpiuuu -> iFEpiuuu
 #() iEEpiLpp -> iEEpiLpp
@@ -2321,6 +2322,9 @@ wrappedlibresolv:
 - iEpiipi:
   - __res_query
   - res_query
+  - res_search
+- iFpiipi:
+  - __res_search
 wrappedlibrt:
 - iEuBLL_:
   - __clock_gettime
diff --git a/src/wrapped32/generated/wrappedlibresolvtypes32.h b/src/wrapped32/generated/wrappedlibresolvtypes32.h
index 548138a5..3df66b40 100644
--- a/src/wrapped32/generated/wrappedlibresolvtypes32.h
+++ b/src/wrapped32/generated/wrappedlibresolvtypes32.h
@@ -12,9 +12,12 @@
 #endif
 
 typedef int32_t (*iEpiipi_t)(void*, int32_t, int32_t, void*, int32_t);
+typedef int32_t (*iFpiipi_t)(void*, int32_t, int32_t, void*, int32_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(__res_query, iEpiipi_t) \
-	GO(res_query, iEpiipi_t)
+	GO(res_query, iEpiipi_t) \
+	GO(res_search, iEpiipi_t) \
+	GO(__res_search, iFpiipi_t)
 
 #endif // __wrappedlibresolvTYPES32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index ef540162..74871de6 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -1428,6 +1428,7 @@ typedef int32_t (*iEEiippi_t)(x64emu_t*, int32_t, int32_t, void*, void*, int32_t
 typedef int32_t (*iEEipiup_t)(x64emu_t*, int32_t, void*, int32_t, uint32_t, void*);
 typedef int32_t (*iEEuppLp_t)(x64emu_t*, uint32_t, void*, void*, uintptr_t, void*);
 typedef int32_t (*iEEpiipi_t)(x64emu_t*, void*, int32_t, int32_t, void*, int32_t);
+typedef int32_t (*iFEpiipi_t)(x64emu_t*, void*, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iEEpiipV_t)(x64emu_t*, void*, int32_t, int32_t, void*, void*);
 typedef int32_t (*iFEpiuuu_t)(x64emu_t*, void*, int32_t, uint32_t, uint32_t, uint32_t);
 typedef int32_t (*iEEpiLpp_t)(x64emu_t*, void*, int32_t, uintptr_t, void*, void*);
@@ -3145,6 +3146,7 @@ void iEEiippi_32(x64emu_t *emu, uintptr_t fcn) { iEEiippi_t fn = (iEEiippi_t)fcn
 void iEEipiup_32(x64emu_t *emu, uintptr_t fcn) { iEEipiup_t fn = (iEEipiup_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); emu->libc_err = errno; }
 void iEEuppLp_32(x64emu_t *emu, uintptr_t fcn) { iEEuppLp_t fn = (iEEuppLp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20)); emu->libc_err = errno; }
 void iEEpiipi_32(x64emu_t *emu, uintptr_t fcn) { iEEpiipi_t fn = (iEEpiipi_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); emu->libc_err = errno; }
+void iFEpiipi_32(x64emu_t *emu, uintptr_t fcn) { iFEpiipi_t fn = (iFEpiipi_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void iEEpiipV_32(x64emu_t *emu, uintptr_t fcn) { iEEpiipV_t fn = (iEEpiipV_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptrv(R_ESP + 20)); emu->libc_err = errno; }
 void iFEpiuuu_32(x64emu_t *emu, uintptr_t fcn) { iFEpiuuu_t fn = (iFEpiuuu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); }
 void iEEpiLpp_32(x64emu_t *emu, uintptr_t fcn) { iEEpiLpp_t fn = (iEEpiLpp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); emu->libc_err = errno; }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 749ffb60..8a49f4ae 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -1378,6 +1378,7 @@ void iEEiippi_32(x64emu_t *emu, uintptr_t fnc);
 void iEEipiup_32(x64emu_t *emu, uintptr_t fnc);
 void iEEuppLp_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpiipi_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpiipi_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpiipV_32(x64emu_t *emu, uintptr_t fnc);
 void iFEpiuuu_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpiLpp_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index f528642b..4766b578 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -1128,7 +1128,7 @@ GO(mkstemp64, iEp)
 //GO(mktemp, pEp)
 GO(mktime, LEbiiiiiiiiilt_)
 GO(mlock, iEpL)
-//GO(mlockall, iEi)
+GO(mlockall, iEi)
 GOM(mmap, pEEpLiiil)    //%%
 GOM(mmap64, pEEpLiiiI)  //%%
 // modf // Weak
@@ -1151,7 +1151,7 @@ GOWM(mremap, pEEpLLiN)	//%% 5th hidden paramerer "void* new_addr" if flags is MR
 GOW(msync, iEpLi)
 // mtrace
 GO(munlock, iEpL)
-//GO(munlockall, iEv)
+GO(munlockall, iEv)
 GOM(munmap, iEEpL)       //%%
 // muntrace
 GOWM(nanosleep, iErLL_BLL_)	 //%%,noE
@@ -1260,14 +1260,14 @@ GO(posix_fallocate64, iEiII)
 GOW(posix_memalign, iEBp_LL)
 // posix_openpt // Weak
 GOM(posix_spawn, iEEpppppp)
-// posix_spawnattr_destroy
+GO(posix_spawnattr_destroy, iFp)
 // posix_spawnattr_getflags
 // posix_spawnattr_getpgroup
 // posix_spawnattr_getschedparam
 // posix_spawnattr_getschedpolicy
 // posix_spawnattr_getsigdefault
 // posix_spawnattr_getsigmask
-// posix_spawnattr_init
+GO(posix_spawnattr_init, iFp)
 // posix_spawnattr_setflags
 // posix_spawnattr_setpgroup
 // posix_spawnattr_setschedparam
@@ -1449,8 +1449,8 @@ GO(__sched_cpucount, iEup)
 //GO(__sched_cpufree, vEp)
 GO(sched_getaffinity, iEiup)
 GO(sched_getcpu, iEv)
-//GO(__sched_getparam, iEip)
-//GOW(sched_getparam, iEip)
+GO(__sched_getparam, iEip)
+GOW(sched_getparam, iEip)
 GO(__sched_get_priority_max, iEi)
 GOW(sched_get_priority_max, iEi)
 GO(__sched_get_priority_min, iEi)
@@ -1918,7 +1918,7 @@ GOWM(__vsnprintf, iEEpLpp)       //%%
 GOM(__vsnprintf_chk, iEEpLiipp)  //%%
 GOWM(vsprintf, iEEppp)            //%%
 GOM(__vsprintf_chk, iEEpiLpp)     //%% 
-//GOM(vsscanf, iEEppp) //%%
+GOM(vsscanf, iEEppp) //%%
 // __vsscanf    // Weak
 GOWM(vswprintf, iEEpLpp)         //%%
 GOWM(__vswprintf, iEEpLpp)         //%%
diff --git a/src/wrapped32/wrappedlibresolv.c b/src/wrapped32/wrappedlibresolv.c
index 7f7bf0e1..c314592e 100644
--- a/src/wrapped32/wrappedlibresolv.c
+++ b/src/wrapped32/wrappedlibresolv.c
@@ -37,4 +37,12 @@ EXPORT int my32_res_query(x64emu_t* emu, void* dname, int class, int type, void*
     return ret;
 }
 
+EXPORT int my32_res_search(x64emu_t* emu, void* dname, int class, int type, void* answer, int anslen)
+{
+    convert_res_state_to_64(emu->res_state_64, emu->res_state_32);
+    int ret = my->__res_search(dname, class, type, answer, anslen);
+    emu->libc_herr = h_errno;
+    return ret;
+}
+
 #include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibresolv_private.h b/src/wrapped32/wrappedlibresolv_private.h
index a546082c..40448c05 100644
--- a/src/wrapped32/wrappedlibresolv_private.h
+++ b/src/wrapped32/wrappedlibresolv_private.h
@@ -96,8 +96,8 @@ GO2(__res_query, iEEpiipi, my32_res_query)
 GOWM(res_query, iEEpiipi)
 //GO2(__res_querydomain, iFppiipi, res_querydomain)
 //GOW(res_querydomain, iFppiipi)
-//GO2(__res_search, iFpiipi, res_search)
-//GOW(res_search, iFpiipi)
+GO2(__res_search, iFEpiipi, my32_res_search)
+GOWM(res_search, iEEpiipi)
 //GO(__res_send, iFpipi)
 //GO(res_send_setqhook, 
 //GO(res_send_setrhook,