diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-19 20:33:07 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-19 20:33:07 +0200 |
| commit | 6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc (patch) | |
| tree | 237446c994ba3265a498dd9369d86f7d75b9b6b0 /src | |
| parent | c9d756eeea29a822c890db692884d2622b94be77 (diff) | |
| download | box64-6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc.tar.gz box64-6ccac8ab5a5bfea6ad8ef7b8dfc1ba4fd1b722dc.zip | |
[BOX32][WRAPPER] Added 32bits wrapped ftime function
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped32/generated/converter32.c | 15 | ||||
| -rw-r--r-- | src/wrapped32/generated/converter32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 1 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 2 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 1 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc_private.h | 2 |
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) |