about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-19 20:33:07 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-19 20:33:07 +0200
commit6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc (patch)
tree237446c994ba3265a498dd9369d86f7d75b9b6b0 /src
parentc9d756eeea29a822c890db692884d2622b94be77 (diff)
downloadbox64-6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc.tar.gz
box64-6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc.zip
[BOX32][WRAPPER] Added 32bits wrapped ftime function
Diffstat (limited to 'src')
-rw-r--r--src/wrapped32/generated/converter32.c15
-rw-r--r--src/wrapped32/generated/converter32.h8
-rw-r--r--src/wrapped32/generated/functions_list.txt1
-rw-r--r--src/wrapped32/generated/wrapper32.c2
-rw-r--r--src/wrapped32/generated/wrapper32.h1
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h2
6 files changed, 28 insertions, 1 deletions
diff --git a/src/wrapped32/generated/converter32.c b/src/wrapped32/generated/converter32.c
index 4fee1097..2631af12 100644
--- a/src/wrapped32/generated/converter32.c
+++ b/src/wrapped32/generated/converter32.c
@@ -985,3 +985,18 @@ void to_struct_pppiiip(ptr_t d, const struct_pppiiip_t *src) {
 	*(ptr_t*)dest = to_ptrv(src->p6); dest += 4;
 }
 
+void from_struct_LWww(struct_LWww_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->L0 = from_ulong(*(uint32_t*)src); src += 4;
+	dest->W1 = *(uint16_t*)src; src += 2;
+	dest->W2 = *(int16_t*)src; src += 2;
+	dest->W3 = *(int16_t*)src; src += 2;
+}
+void to_struct_LWww(ptr_t d, const struct_LWww_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(uint32_t*)dest = to_ulong(src->L0); dest += 4;
+	*(uint16_t*)dest = src->W1; dest += 2;
+	*(int16_t*)dest = src->W2; dest += 2;
+	*(int16_t*)dest = src->W3; dest += 2;
+}
diff --git a/src/wrapped32/generated/converter32.h b/src/wrapped32/generated/converter32.h
index ea7b9f02..864fc8ee 100644
--- a/src/wrapped32/generated/converter32.h
+++ b/src/wrapped32/generated/converter32.h
@@ -496,5 +496,13 @@ typedef struct struct_pppiiip_s {
 } struct_pppiiip_t;
 void from_struct_pppiiip(struct_pppiiip_t *dest, ptr_t src);
 void to_struct_pppiiip(ptr_t dest, const struct_pppiiip_t *src);
+typedef struct struct_LWww_s {
+	unsigned long L0;
+	unsigned short W1;
+	short W2;
+	short W3;
+} struct_LWww_t;
+void from_struct_LWww(struct_LWww_t *dest, ptr_t src);
+void to_struct_LWww(ptr_t dest, const struct_LWww_t *src);
 
 #endif // __CONVERTER_H_
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index 3d827b5c..823ac6e2 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -142,6 +142,7 @@
 #() vFbpii_ -> vFB
 #() vFbLdd_ -> vFB
 #() vFbupi_ -> vFB
+#() iErLWww_ -> iEB
 #() iEBllll_ -> iEB
 #() vFbuuipWCCp_ -> vFB
 #() vFbWWpWpWpWp_ -> vFB
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 8298064f..ceb9cbab 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -236,6 +236,7 @@ typedef intptr_t (*lFrll__t)(struct_ll_t*);
 typedef void (*vFbpii__t)(struct_pii_t*);
 typedef void (*vFbLdd__t)(struct_Ldd_t*);
 typedef void (*vFbupi__t)(struct_upi_t*);
+typedef int32_t (*iErLWww__t)(struct_LWww_t*);
 typedef int32_t (*iEBllll__t)(struct_llll_t*);
 typedef void (*vFbuuipWCCp__t)(struct_uuipWCCp_t*);
 typedef void (*vFbWWpWpWpWp__t)(struct_WWpWpWpWp_t*);
@@ -2336,6 +2337,7 @@ void lFrll__32(x64emu_t *emu, uintptr_t fcn) { lFrll__t fn = (lFrll__t)fcn; stru
 void vFbpii__32(x64emu_t *emu, uintptr_t fcn) { vFbpii__t fn = (vFbpii__t)fcn; struct_pii_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_pii(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_pii(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void vFbLdd__32(x64emu_t *emu, uintptr_t fcn) { vFbLdd__t fn = (vFbLdd__t)fcn; struct_Ldd_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_Ldd(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_Ldd(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void vFbupi__32(x64emu_t *emu, uintptr_t fcn) { vFbupi__t fn = (vFbupi__t)fcn; struct_upi_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_upi(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_upi(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
+void iErLWww__32(x64emu_t *emu, uintptr_t fcn) { iErLWww__t fn = (iErLWww__t)fcn; errno = emu->libc_err; struct_LWww_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_LWww(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); emu->libc_err = errno; }
 void iEBllll__32(x64emu_t *emu, uintptr_t fcn) { iEBllll__t fn = (iEBllll__t)fcn; errno = emu->libc_err; struct_llll_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_llll(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); emu->libc_err = errno; }
 void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fcn) { vFbuuipWCCp__t fn = (vFbuuipWCCp__t)fcn; struct_uuipWCCp_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_uuipWCCp(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void vFbWWpWpWpWp__32(x64emu_t *emu, uintptr_t fcn) { vFbWWpWpWpWp__t fn = (vFbWWpWpWpWp__t)fcn; struct_WWpWpWpWp_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_WWpWpWpWp(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_WWpWpWpWp(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index d5249296..f763f645 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -183,6 +183,7 @@ void lFrll__32(x64emu_t *emu, uintptr_t fnc);
 void vFbpii__32(x64emu_t *emu, uintptr_t fnc);
 void vFbLdd__32(x64emu_t *emu, uintptr_t fnc);
 void vFbupi__32(x64emu_t *emu, uintptr_t fnc);
+void iErLWww__32(x64emu_t *emu, uintptr_t fnc);
 void iEBllll__32(x64emu_t *emu, uintptr_t fnc);
 void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fnc);
 void vFbWWpWpWpWp__32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index b725b9b2..39678c98 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -428,7 +428,7 @@ GOW(fsync, iEi)
 GOWM(ftell, lEES)
 GO(ftello, lES)
 GO(ftello64, IES)
-//GO(ftime, iEp)
+GO(ftime, iErLWww_)
 GO(ftok, iEpi)
 GOW(ftruncate, iEil)
 GOW(ftruncate64, iEiI)