diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-08 17:38:01 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-08 17:38:01 +0200 |
| commit | 7ae36b8667f9ff213c3461a3c7d49978d8d71e4d (patch) | |
| tree | 80a7aa54043ebbc631560bd373c67a5dd701d90a /src | |
| parent | 591e2db7128b8d5d618ee58037777eb64d91c953 (diff) | |
| download | box64-7ae36b8667f9ff213c3461a3c7d49978d8d71e4d.tar.gz box64-7ae36b8667f9ff213c3461a3c7d49978d8d71e4d.zip | |
[BOX32] More 32bits wrapped functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 9 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibctypes32.h | 4 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedsdl2types32.h | 1 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 4 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc.c | 15 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc_private.h | 22 | ||||
| -rw-r--r-- | src/wrapped32/wrappedsdl2.c | 56 | ||||
| -rw-r--r-- | src/wrapped32/wrappedsdl2_private.h | 4 |
9 files changed, 106 insertions, 17 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 1e503a94..7a0c8a40 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -522,6 +522,7 @@ #() pFpII -> pFpII #() pFpuu -> pFpuu #() pFpup -> pFpup +#() pFppi -> pFppi #() pFppu -> pFppu #() pFppL -> pFppL #() pFppp -> pFppp @@ -730,6 +731,7 @@ #() iFipON -> iFipON #() iFuiup -> iFuiup #() iFuupi -> iFuupi +#() iFuppp -> iFuppp #() iFpiii -> iFpiii #() iFpiiL -> iFpiiL #() iFpiip -> iFpiip @@ -789,6 +791,7 @@ #() lFipLi -> lFipLi #() lFipLI -> lFipLI #() lFipLl -> lFipLl +#() lFipLL -> lFipLL #() lFpuip -> lFpuip #() LFEpLp -> LFEpLp #() LFEXii -> LFEXii @@ -864,6 +867,7 @@ #() iFpruuipWCCp_buuipWCCp_i -> iFpBBi #() iFXpLbiLLLiiiiiiiLLiiLiiiiLic_ -> iFXpLB #() pFXLLbiLLLiiiiiiiLLiiLiiiiLic_ -> pFXLLB +#() vFEiipV -> vFEiipV #() vFEuipu -> vFEuipu #() vFEuipp -> vFEuipp #() vFEpLLp -> vFEpLLp @@ -1647,6 +1651,8 @@ wrappedlibc: - localtime_r - SFpp: - iFrLL_BLL_: +- vFipp: + - vsyslog - vFipV: - vFpup: - _ITM_addUserCommitAction @@ -1682,6 +1688,8 @@ wrappedlibc: - wcstol - LFpBp_i: - wcstoul +- vFiipV: + - __syslog_chk - vFpLLp: - vFppiV: - iFivpV: @@ -2257,6 +2265,7 @@ wrappedsdl2: - SDL_GetWindowWMInfo - SDL_OpenAudio - SDL_SetWindowDisplayMode + - SDL_ShowMessageBox - pFpi: - SDL_LoadBMP_RW - SDL_notreal diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h index fd4c086c..28395822 100644 --- a/src/wrapped32/generated/wrappedlibctypes32.h +++ b/src/wrapped32/generated/wrappedlibctypes32.h @@ -50,6 +50,7 @@ typedef void* (*pFpi_t)(void*, int32_t); typedef void* (*pFpp_t)(void*, void*); typedef void* (*SFpp_t)(void*, void*); typedef int32_t (*iFrLL_BLL__t)(struct_LL_t*, struct_LL_t*); +typedef void (*vFipp_t)(int32_t, void*, void*); typedef void (*vFipV_t)(int32_t, void*, ...); typedef void (*vFpup_t)(void*, uint32_t, void*); typedef void (*vFppu_t)(void*, void*, uint32_t); @@ -73,6 +74,7 @@ typedef void* (*pFppv_t)(void*, void*, void); typedef double (*KFpBp_a_t)(void*, struct_p_t*, void*); typedef intptr_t (*lFpBp_i_t)(void*, struct_p_t*, int32_t); typedef uintptr_t (*LFpBp_i_t)(void*, struct_p_t*, int32_t); +typedef void (*vFiipV_t)(int32_t, int32_t, void*, ...); typedef void (*vFpLLp_t)(void*, uintptr_t, uintptr_t, void*); typedef void (*vFppiV_t)(void*, void*, int32_t, ...); typedef int32_t (*iFivpV_t)(int32_t, void, void*, ...); @@ -145,6 +147,7 @@ typedef int32_t (*iFpLiLppp_t)(void*, uintptr_t, int32_t, uintptr_t, void*, void GO(__cmsg_nxthdr, pFpp_t) \ GO(gmtime_r, pFpp_t) \ GO(localtime_r, pFpp_t) \ + GO(vsyslog, vFipp_t) \ GO(_ITM_addUserCommitAction, vFpup_t) \ GO(vswscanf, iFppp_t) \ GO(swscanf, iFppV_t) \ @@ -157,6 +160,7 @@ typedef int32_t (*iFpLiLppp_t)(void*, uintptr_t, int32_t, uintptr_t, void*, void GO(strtold_l, KFpBp_a_t) \ GO(wcstol, lFpBp_i_t) \ GO(wcstoul, LFpBp_i_t) \ + GO(__syslog_chk, vFiipV_t) \ GO(utimensat, iFippi_t) \ GO(readlinkat, iFippL_t) \ GO(getaddrinfo, iFpppp_t) \ diff --git a/src/wrapped32/generated/wrappedsdl2types32.h b/src/wrapped32/generated/wrappedsdl2types32.h index af89dbf0..10e83607 100644 --- a/src/wrapped32/generated/wrappedsdl2types32.h +++ b/src/wrapped32/generated/wrappedsdl2types32.h @@ -63,6 +63,7 @@ typedef void* (*pFuiiiuuuu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uin GO(SDL_GetWindowWMInfo, iFpp_t) \ GO(SDL_OpenAudio, iFpp_t) \ GO(SDL_SetWindowDisplayMode, iFpp_t) \ + GO(SDL_ShowMessageBox, iFpp_t) \ GO(SDL_LoadBMP_RW, pFpi_t) \ GO(SDL_notreal, pFpi_t) \ GO(SDL_CreateTextureFromSurface, pFpp_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 3e2962d5..8d79bb7f 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -612,6 +612,7 @@ typedef void* (*pFpiS_t)(void*, int32_t, void*); typedef void* (*pFpII_t)(void*, int64_t, int64_t); typedef void* (*pFpuu_t)(void*, uint32_t, uint32_t); typedef void* (*pFpup_t)(void*, uint32_t, void*); +typedef void* (*pFppi_t)(void*, void*, int32_t); typedef void* (*pFppu_t)(void*, void*, uint32_t); typedef void* (*pFppL_t)(void*, void*, uintptr_t); typedef void* (*pFppp_t)(void*, void*, void*); @@ -820,6 +821,7 @@ typedef int32_t (*iFippL_t)(int32_t, void*, void*, uintptr_t); typedef int32_t (*iFipON_t)(int32_t, void*, int32_t, ...); typedef int32_t (*iFuiup_t)(uint32_t, int32_t, uint32_t, void*); typedef int32_t (*iFuupi_t)(uint32_t, uint32_t, void*, int32_t); +typedef int32_t (*iFuppp_t)(uint32_t, void*, void*, void*); typedef int32_t (*iFpiii_t)(void*, int32_t, int32_t, int32_t); typedef int32_t (*iFpiiL_t)(void*, int32_t, int32_t, uintptr_t); typedef int32_t (*iFpiip_t)(void*, int32_t, int32_t, void*); @@ -879,6 +881,7 @@ typedef intptr_t (*lFiipL_t)(int32_t, int32_t, void*, uintptr_t); typedef intptr_t (*lFipLi_t)(int32_t, void*, uintptr_t, int32_t); typedef intptr_t (*lFipLI_t)(int32_t, void*, uintptr_t, int64_t); typedef intptr_t (*lFipLl_t)(int32_t, void*, uintptr_t, intptr_t); +typedef intptr_t (*lFipLL_t)(int32_t, void*, uintptr_t, uintptr_t); typedef intptr_t (*lFpuip_t)(void*, uint32_t, int32_t, void*); typedef uintptr_t (*LFEpLp_t)(x64emu_t*, void*, uintptr_t, void*); typedef uintptr_t (*LFEXii_t)(x64emu_t*, void*, int32_t, int32_t); @@ -954,6 +957,7 @@ typedef int32_t (*iFXLLbLLLLiiiLLilliLL__t)(void*, uintptr_t, uintptr_t, struct_ typedef int32_t (*iFpruuipWCCp_buuipWCCp_i_t)(void*, struct_uuipWCCp_t*, struct_uuipWCCp_t*, int32_t); typedef int32_t (*iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t)(void*, void*, uintptr_t, struct_iLLLiiiiiiiLLiiLiiiiLic_t*); typedef void* (*pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t)(void*, uintptr_t, uintptr_t, struct_iLLLiiiiiiiLLiiLiiiiLic_t*); +typedef void (*vFEiipV_t)(x64emu_t*, int32_t, int32_t, void*, void*); typedef void (*vFEuipu_t)(x64emu_t*, uint32_t, int32_t, void*, uint32_t); typedef void (*vFEuipp_t)(x64emu_t*, uint32_t, int32_t, void*, void*); typedef void (*vFEpLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*); @@ -2091,6 +2095,7 @@ void pFpiS_32(x64emu_t *emu, uintptr_t fcn) { pFpiS_t fn = (pFpiS_t)fcn; R_EAX = void pFpII_32(x64emu_t *emu, uintptr_t fcn) { pFpII_t fn = (pFpII_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 16))); } void pFpuu_32(x64emu_t *emu, uintptr_t fcn) { pFpuu_t fn = (pFpuu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); } void pFpup_32(x64emu_t *emu, uintptr_t fcn) { pFpup_t fn = (pFpup_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12))); } +void pFppi_32(x64emu_t *emu, uintptr_t fcn) { pFppi_t fn = (pFppi_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } void pFppu_32(x64emu_t *emu, uintptr_t fcn) { pFppu_t fn = (pFppu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); } void pFppL_32(x64emu_t *emu, uintptr_t fcn) { pFppL_t fn = (pFppL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); } void pFppp_32(x64emu_t *emu, uintptr_t fcn) { pFppp_t fn = (pFppp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); } @@ -2299,6 +2304,7 @@ void iFippL_32(x64emu_t *emu, uintptr_t fcn) { iFippL_t fn = (iFippL_t)fcn; R_EA void iFipON_32(x64emu_t *emu, uintptr_t fcn) { iFipON_t fn = (iFipON_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), of_convert32(from_ptri(int32_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } void iFuiup_32(x64emu_t *emu, uintptr_t fcn) { iFuiup_t fn = (iFuiup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFuupi_32(x64emu_t *emu, uintptr_t fcn) { iFuupi_t fn = (iFuupi_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } +void iFuppp_32(x64emu_t *emu, uintptr_t fcn) { iFuppp_t fn = (iFuppp_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFpiii_32(x64emu_t *emu, uintptr_t fcn) { iFpiii_t fn = (iFpiii_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFpiiL_32(x64emu_t *emu, uintptr_t fcn) { iFpiiL_t fn = (iFpiiL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); } void iFpiip_32(x64emu_t *emu, uintptr_t fcn) { iFpiip_t fn = (iFpiip_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } @@ -2358,6 +2364,7 @@ void lFiipL_32(x64emu_t *emu, uintptr_t fcn) { lFiipL_t fn = (lFiipL_t)fcn; R_EA void lFipLi_32(x64emu_t *emu, uintptr_t fcn) { lFipLi_t fn = (lFipLi_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16))); } void lFipLI_32(x64emu_t *emu, uintptr_t fcn) { lFipLI_t fn = (lFipLI_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int64_t, R_ESP + 16))); } void lFipLl_32(x64emu_t *emu, uintptr_t fcn) { lFipLl_t fn = (lFipLl_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_long(from_ptri(long_t, R_ESP + 16)))); } +void lFipLL_32(x64emu_t *emu, uintptr_t fcn) { lFipLL_t fn = (lFipLL_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)))); } void lFpuip_32(x64emu_t *emu, uintptr_t fcn) { lFpuip_t fn = (lFpuip_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); } void LFEpLp_32(x64emu_t *emu, uintptr_t fcn) { LFEpLp_t fn = (LFEpLp_t)fcn; R_EAX = to_ulong(fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12))); } void LFEXii_32(x64emu_t *emu, uintptr_t fcn) { LFEXii_t fn = (LFEXii_t)fcn; R_EAX = to_ulong(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } @@ -2433,6 +2440,7 @@ void iFXLLbLLLLiiiLLilliLL__32(x64emu_t *emu, uintptr_t fcn) { iFXLLbLLLLiiiLLil void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fcn) { iFpruuipWCCp_buuipWCCp_i_t fn = (iFpruuipWCCp_buuipWCCp_i_t)fcn; struct_uuipWCCp_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_uuipWCCp(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_uuipWCCp_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_uuipWCCp(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFXpLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fcn) { iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t fn = (iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t)fcn; struct_iLLLiiiiiiiLLiiLiiiiLic_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iLLLiiiiiiiLLiiLiiiiLic(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_iLLLiiiiiiiLLiiLiiiiLic(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void pFXLLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fcn) { pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t fn = (pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t)fcn; struct_iLLLiiiiiiiLLiiLiiiiLic_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iLLLiiiiiiiLLiiLiiiiLic(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_iLLLiiiiiiiLLiiLiiiiLic(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } +void vFEiipV_32(x64emu_t *emu, uintptr_t fcn) { vFEiipV_t fn = (vFEiipV_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptrv(R_ESP + 16)); } void vFEuipu_32(x64emu_t *emu, uintptr_t fcn) { vFEuipu_t fn = (vFEuipu_t)fcn; fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void vFEuipp_32(x64emu_t *emu, uintptr_t fcn) { vFEuipp_t fn = (vFEuipp_t)fcn; fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFEpLLp_32(x64emu_t *emu, uintptr_t fcn) { vFEpLLp_t fn = (vFEpLLp_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 7b29d9a8..102e3b9f 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -563,6 +563,7 @@ void pFpiS_32(x64emu_t *emu, uintptr_t fnc); void pFpII_32(x64emu_t *emu, uintptr_t fnc); void pFpuu_32(x64emu_t *emu, uintptr_t fnc); void pFpup_32(x64emu_t *emu, uintptr_t fnc); +void pFppi_32(x64emu_t *emu, uintptr_t fnc); void pFppu_32(x64emu_t *emu, uintptr_t fnc); void pFppL_32(x64emu_t *emu, uintptr_t fnc); void pFppp_32(x64emu_t *emu, uintptr_t fnc); @@ -771,6 +772,7 @@ void iFippL_32(x64emu_t *emu, uintptr_t fnc); void iFipON_32(x64emu_t *emu, uintptr_t fnc); void iFuiup_32(x64emu_t *emu, uintptr_t fnc); void iFuupi_32(x64emu_t *emu, uintptr_t fnc); +void iFuppp_32(x64emu_t *emu, uintptr_t fnc); void iFpiii_32(x64emu_t *emu, uintptr_t fnc); void iFpiiL_32(x64emu_t *emu, uintptr_t fnc); void iFpiip_32(x64emu_t *emu, uintptr_t fnc); @@ -830,6 +832,7 @@ void lFiipL_32(x64emu_t *emu, uintptr_t fnc); void lFipLi_32(x64emu_t *emu, uintptr_t fnc); void lFipLI_32(x64emu_t *emu, uintptr_t fnc); void lFipLl_32(x64emu_t *emu, uintptr_t fnc); +void lFipLL_32(x64emu_t *emu, uintptr_t fnc); void lFpuip_32(x64emu_t *emu, uintptr_t fnc); void LFEpLp_32(x64emu_t *emu, uintptr_t fnc); void LFEXii_32(x64emu_t *emu, uintptr_t fnc); @@ -905,6 +908,7 @@ void iFXLLbLLLLiiiLLilliLL__32(x64emu_t *emu, uintptr_t fnc); void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fnc); void iFXpLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fnc); void pFXLLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fnc); +void vFEiipV_32(x64emu_t *emu, uintptr_t fnc); void vFEuipu_32(x64emu_t *emu, uintptr_t fnc); void vFEuipp_32(x64emu_t *emu, uintptr_t fnc); void vFEpLLp_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c index 90fe756f..418430d9 100755 --- a/src/wrapped32/wrappedlibc.c +++ b/src/wrapped32/wrappedlibc.c @@ -690,10 +690,17 @@ EXPORT void my32_exit(x64emu_t *emu, int32_t status) EXPORT void my32__exit(x64emu_t *emu, int32_t status) __attribute__((alias("my32_exit"))); EXPORT void my32__Exit(x64emu_t *emu, int32_t status) __attribute__((alias("my32_exit"))); #endif -void myStackAlign32(const char* fmt, uint32_t* st, uint64_t* mystack); // align st into mystack according to fmt (for v(f)printf(...)) -typedef int (*iFpp_t)(void*, void*); -typedef int (*iFppp_t)(void*, void*, void*); -typedef int (*iFpupp_t)(void*, uint32_t, void*, void*); +extern int vsyslog(int, const char*, va_list); +EXPORT int my32_vsyslog(x64emu_t* emu, int priority, void* fmt, void* b) { + myStackAlign32((const char*)fmt, b, emu->scratch); + PREPARE_VALIST_32; + return vsyslog(priority, (const char*)fmt, VARARGS_32); +} +EXPORT int my32___syslog_chk(x64emu_t* emu, int priority, int flags, void* fmt, void* b) { + myStackAlign32((const char*)fmt, b, emu->scratch); + PREPARE_VALIST_32; + return vsyslog(priority, (const char*)fmt, VARARGS_32); +} EXPORT int my32_printf(x64emu_t *emu, void* fmt, void* b) { myStackAlign32((const char*)fmt, b, emu->scratch); PREPARE_VALIST_32; diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h index 785ad1d4..d3700b9d 100755 --- a/src/wrapped32/wrappedlibc_private.h +++ b/src/wrapped32/wrappedlibc_private.h @@ -139,7 +139,7 @@ GOW(chdir, iFp) GOW(chmod, iFpu) GOW(chown, iFpuu) //GO(chroot, iFp) -//GOW(clearenv, iFv) +GOW(clearenv, iFv) GO(clearerr, vFS) //GO(clearerr_unlocked, vFp) // clnt_broadcast @@ -173,7 +173,7 @@ GOW(__connect, iFipu) //GOW(creat, iFpu) //GO(creat64, iFpu) // create_module // Weak -//GO(ctermid, pFp) +GO(ctermid, pFp) GO(ctime, pFrl_) GO(ctime_r, pFrl_p) DATAM(__ctype_b, 4) @@ -195,8 +195,8 @@ GOM(__cxa_thread_atexit_impl, iFEppp) //%% // daemon DATAV(daylight, 4) // __daylight // type B -//GOW(dcgettext, pFppi) -//GO(__dcgettext, pFppi) +GOW(dcgettext, pFppi) +GO(__dcgettext, pFppi) //GOW(dcngettext, pFpppui) // __default_morecore // __default_rt_sa_restorer_v1 @@ -491,7 +491,7 @@ GOW(getgid, uFv) GOM(getgrgid_r, iFEuppLp) //GO(getgrnam, pFp) GOM(getgrnam_r, iFEpppLp) -//GO(getgrouplist, iFpipp) +GO(getgrouplist, iFpipp) GOW(getgroups, iFip) // __getgroups_chk //GO(gethostbyaddr, pFpui) @@ -563,7 +563,7 @@ GOM(getpwnam, pFEp) GOM(getpwnam_r, iFEpppLp) GOM(getpwuid, pFEu) GOM(getpwuid_r, iFEuppLp) -//GOW(getresgid, iFppp) +GOW(getresgid, iFppp) GOW(getresuid, iFppp) GOM(getrlimit, iFEup) GO(getrlimit64, iFup) @@ -1339,15 +1339,15 @@ GO(rand, iFv) GOW(random, lFv) //GOW(random_r, iFpp) //GO(rand_r, iFp) -//GOW(rawmemchr, pFpi) -//GO(__rawmemchr, pFpi) +GOW(rawmemchr, pFpi) +GO(__rawmemchr, pFpi) // rcmd // rcmd_af // __rcmd_errstr // type B GOM(read, lFipL) //%%,noE //GOW(__read, lFipL) // readahead // Weak -//GO(__read_chk, lFipLL) +GO(__read_chk, lFipLL) GOWM(readdir, pFEp) //%% GO(readdir64, pFp) // check if alignement is correct //GOM(readdir_r, iFEppp) //%% should also be weak @@ -1776,7 +1776,7 @@ GO2(__sysconf, lFEi, my_sysconf) //DATA(sys_errlist, 4) GOM(sysinfo, iFp) //%noE //GO2(syslog, vFipV, vsyslog) -//GO2(__syslog_chk, vFiipV, __vsyslog_chk) +GOM(__syslog_chk, vFEiipV) //DATA(_sys_nerr, 4) // type R //DATA(sys_nerr, 4) // type R //DATA(sys_sigabbrev, 4) @@ -1910,7 +1910,7 @@ GOWM(vswprintf, iFEpLpp) //%% GOWM(__vswprintf, iFEpLpp) //%% GOWM(__vswprintf_chk, iFEpLiLppp) //%% GOM(vswscanf, iFEppp) -//GO(vsyslog, vFipp) +GOM(vsyslog, vFEipp) //GO(__vsyslog_chk, vFiipp) // vtimes //GOM(vwarn, vFEppp) //%% diff --git a/src/wrapped32/wrappedsdl2.c b/src/wrapped32/wrappedsdl2.c index 3198260b..5508a228 100644 --- a/src/wrapped32/wrappedsdl2.c +++ b/src/wrapped32/wrappedsdl2.c @@ -559,6 +559,62 @@ EXPORT int my32_2_SDL_GetWindowWMInfo(void* w, SDL_SysWMinfo_32_t* i) return ret; } +typedef struct my_SDL_MessageBoxButtonData_s +{ + uint32_t flags; + int buttonid; + const char* text; +} my_SDL_MessageBoxButtonData_t; + +typedef struct my_SDL_MessageBoxData_s +{ + uint32_t flags; + void* window; //SDL_Window* + const char* title; + const char* message; + int numbuttons; + my_SDL_MessageBoxButtonData_t* buttons; + void* colorScheme; //const SDL_MessageBoxColorScheme +} my_SDL_MessageBoxData_t; + +typedef struct my_SDL_MessageBoxButtonData_32_s +{ + uint32_t flags; + int buttonid; + ptr_t text; //const char* +} my_SDL_MessageBoxButtonData_32_t; + +typedef struct my_SDL_MessageBoxData_32_s +{ + uint32_t flags; + ptr_t window; //SDL_Window* + ptr_t title; //const char* + ptr_t message; //const char* + int numbuttons; + ptr_t buttons; //my_SDL_MessageBoxButtonData_t* + ptr_t colorScheme; //const SDL_MessageBoxColorScheme +} my_SDL_MessageBoxData_32_t; + +EXPORT int my32_2_SDL_ShowMessageBox(my_SDL_MessageBoxData_32_t* msgbox, int* btn) +{ + my_SDL_MessageBoxData_t msgbox_l; + my_SDL_MessageBoxButtonData_t btns_l[msgbox->numbuttons]; + msgbox_l.flags = msgbox->flags; + msgbox_l.window = from_ptrv(msgbox->window); + msgbox_l.title = from_ptrv(msgbox->title); + msgbox_l.message = from_ptrv(msgbox->message); + msgbox_l.numbuttons = msgbox->numbuttons; + msgbox_l.buttons = btns_l; + msgbox_l.colorScheme = from_ptrv(msgbox->colorScheme); + my_SDL_MessageBoxButtonData_32_t* src = from_ptrv(msgbox->buttons); + for(int i=0; i<msgbox_l.numbuttons; ++i) { + btns_l[i].flags = src[i].buttonid; + btns_l[i].buttonid = src[i].buttonid; + btns_l[i].text = from_ptrv(src[i].buttonid); + } + return my->SDL_ShowMessageBox(&msgbox_l, btn); +} + #define ALTMY my32_2_ #define CUSTOM_INIT \ diff --git a/src/wrapped32/wrappedsdl2_private.h b/src/wrapped32/wrappedsdl2_private.h index 80f29e56..5049c7f6 100644 --- a/src/wrapped32/wrappedsdl2_private.h +++ b/src/wrapped32/wrappedsdl2_private.h @@ -636,8 +636,8 @@ GO(SDL_SetWindowSize, vFpii) GO(SDL_SetWindowTitle, vFpp) // SDL_SetYUVConversionMode GO(SDL_ShowCursor, iFi) -//GO(SDL_ShowMessageBox, iFpp) -//GO(SDL_ShowSimpleMessageBox, iFuppp) +GOM(SDL_ShowMessageBox, iFpp) //%noE +GO(SDL_ShowSimpleMessageBox, iFuppp) GO(SDL_ShowWindow, vFp) //GO(SDL_SIMDAlloc, pFL) //GO(SDL_SIMDGetAlignment, LFv) |