diff options
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 15 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibctypes32.h | 6 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 18 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 9 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc.c | 7 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc_private.h | 38 |
6 files changed, 70 insertions, 23 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 01f97b17..f511cd8b 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -20,6 +20,8 @@ #() uFv -> uFv #() uFu -> uFu #() uFU -> uFU +#() uFp -> uFp +#() UFp -> UFp #() UFs -> UFs #() fFf -> fFf #() dFv -> dFv @@ -108,6 +110,7 @@ #() vFEpu -> vFEpu #() vFfpp -> vFfpp #() vFdpp -> vFdpp +#() vFppu -> vFppu #() iFEip -> iFEip #() iFEpi -> iFEpi #() iFEpL -> iFEpL @@ -117,6 +120,7 @@ #() iFiii -> iFiii #() iFiiI -> iFiiI #() iFiiu -> iFiiu +#() iFiip -> iFiip #() iFiiO -> iFiiO #() iFiII -> iFiII #() iFiuu -> iFiuu @@ -135,6 +139,7 @@ #() iFpuu -> iFpuu #() iFpLi -> iFpLi #() iFpLL -> iFpLL +#() iFppi -> iFppi #() iFppu -> iFppu #() iFppL -> iFppL #() iFppp -> iFppp @@ -165,10 +170,13 @@ #() hFppH -> hFppH #() aFipa -> aFipa #() tFipu -> tFipu +#() iFpBp_i -> iFpBi #() IFpBp_i -> IFpBi #() UFpBp_i -> UFpBi #() lFpBp_i -> lFpBi +#() LFpBp_i -> LFpBi #() vFEipV -> vFEipV +#() vFEpup -> vFEpup #() vFEppp -> vFEppp #() iFEiip -> iFEiip #() iFEiiN -> iFEiiN @@ -218,6 +226,7 @@ #() iFEpippp -> iFEpippp #() iFEpuppp -> iFEpuppp #() iFEpLppp -> iFEpLppp +#() pFEpLLiN -> pFEpLLiN #() iFEpLiipV -> iFEpLiipV #() pFEpLiiii -> pFEpLiiii #() pFEpLiiiI -> pFEpLiiiI @@ -257,7 +266,9 @@ wrappedlibc: - getwc - iFO: - uFu: +- uFp: - uFV: +- UFp: - LFL: - pFv: - __ctype_b_loc @@ -295,6 +306,9 @@ wrappedlibc: - localtime_r - hFpp: - vFipV: +- vFpup: + - _ITM_addUserCommitAction +- vFppu: - iFvpV: - iFiip: - iFiiN: @@ -328,6 +342,7 @@ wrappedlibc: - iFpippp: - iFpuppp: - iFpLppp: +- pFpLLiN: - iFpLiipV: - pFpLiiii: - pFpLiiiI: diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h index f9eb31aa..02226b11 100644 --- a/src/wrapped32/generated/wrappedlibctypes32.h +++ b/src/wrapped32/generated/wrappedlibctypes32.h @@ -20,7 +20,9 @@ typedef int32_t (*iFp_t)(void*); typedef int32_t (*iFh_t)(uintptr_t); typedef int32_t (*iFO_t)(int32_t); typedef uint32_t (*uFu_t)(uint32_t); +typedef uint32_t (*uFp_t)(void*); typedef uint32_t (*uFV_t)(...); +typedef uint64_t (*UFp_t)(void*); typedef uintptr_t (*LFL_t)(uintptr_t); typedef void* (*pFv_t)(void); typedef void* (*pFL_t)(uintptr_t); @@ -41,6 +43,8 @@ typedef void* (*pFpi_t)(void*, int32_t); typedef void* (*pFpp_t)(void*, void*); typedef uintptr_t (*hFpp_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); typedef int32_t (*iFvpV_t)(void, void*, ...); typedef int32_t (*iFiip_t)(int32_t, int32_t, void*); typedef int32_t (*iFiiN_t)(int32_t, int32_t, ...); @@ -67,6 +71,7 @@ typedef int32_t (*iFpvvpV_t)(void*, void, void, void*, ...); typedef int32_t (*iFpippp_t)(void*, int32_t, void*, void*, void*); typedef int32_t (*iFpuppp_t)(void*, uint32_t, void*, void*, void*); typedef int32_t (*iFpLppp_t)(void*, uintptr_t, void*, void*, void*); +typedef void* (*pFpLLiN_t)(void*, uintptr_t, uintptr_t, int32_t, ...); typedef int32_t (*iFpLiipV_t)(void*, uintptr_t, int32_t, int32_t, void*, ...); typedef void* (*pFpLiiii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t); typedef void* (*pFpLiiiI_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int64_t); @@ -94,6 +99,7 @@ typedef int32_t (*iFpuvvppp_t)(void*, uint32_t, void, void, void*, void*, void*) GO(backtrace_symbols, pFpi_t) \ GO(gmtime_r, pFpp_t) \ GO(localtime_r, pFpp_t) \ + GO(_ITM_addUserCommitAction, vFpup_t) \ GO(vswscanf, iFppp_t) \ GO(swscanf, iFppV_t) \ GO(__strtold_l, KFppa_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 70b1047f..8dfe55ff 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -94,6 +94,8 @@ typedef int64_t (*IFh_t)(uintptr_t); typedef uint32_t (*uFv_t)(void); typedef uint32_t (*uFu_t)(uint32_t); typedef uint32_t (*uFU_t)(uint64_t); +typedef uint32_t (*uFp_t)(void*); +typedef uint64_t (*UFp_t)(void*); typedef uint64_t (*UFs_t)(void*); typedef float (*fFf_t)(float); typedef double (*dFv_t)(void); @@ -182,6 +184,7 @@ typedef void (*vFEpi_t)(x64emu_t*, void*, int32_t); typedef void (*vFEpu_t)(x64emu_t*, void*, uint32_t); typedef void (*vFfpp_t)(float, void*, void*); typedef void (*vFdpp_t)(double, void*, void*); +typedef void (*vFppu_t)(void*, void*, uint32_t); typedef int32_t (*iFEip_t)(x64emu_t*, int32_t, void*); typedef int32_t (*iFEpi_t)(x64emu_t*, void*, int32_t); typedef int32_t (*iFEpL_t)(x64emu_t*, void*, uintptr_t); @@ -191,6 +194,7 @@ typedef int32_t (*iFEhp_t)(x64emu_t*, uintptr_t, void*); typedef int32_t (*iFiii_t)(int32_t, int32_t, int32_t); typedef int32_t (*iFiiI_t)(int32_t, int32_t, int64_t); typedef int32_t (*iFiiu_t)(int32_t, int32_t, uint32_t); +typedef int32_t (*iFiip_t)(int32_t, int32_t, void*); typedef int32_t (*iFiiO_t)(int32_t, int32_t, int32_t); typedef int32_t (*iFiII_t)(int32_t, int64_t, int64_t); typedef int32_t (*iFiuu_t)(int32_t, uint32_t, uint32_t); @@ -209,6 +213,7 @@ typedef int32_t (*iFpip_t)(void*, int32_t, void*); typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t); typedef int32_t (*iFpLi_t)(void*, uintptr_t, int32_t); typedef int32_t (*iFpLL_t)(void*, uintptr_t, uintptr_t); +typedef int32_t (*iFppi_t)(void*, void*, int32_t); typedef int32_t (*iFppu_t)(void*, void*, uint32_t); typedef int32_t (*iFppL_t)(void*, void*, uintptr_t); typedef int32_t (*iFppp_t)(void*, void*, void*); @@ -239,10 +244,13 @@ typedef uintptr_t (*hFEpp_t)(x64emu_t*, void*, void*); typedef uintptr_t (*hFppH_t)(void*, void*, uintptr_t); typedef void* (*aFipa_t)(int32_t, void*, void*); typedef char* (*tFipu_t)(int32_t, void*, uint32_t); +typedef int32_t (*iFpBp_i_t)(void*, struct_p_t*, int32_t); typedef int64_t (*IFpBp_i_t)(void*, struct_p_t*, int32_t); typedef uint64_t (*UFpBp_i_t)(void*, struct_p_t*, int32_t); 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 (*vFEipV_t)(x64emu_t*, int32_t, void*, void*); +typedef void (*vFEpup_t)(x64emu_t*, void*, uint32_t, void*); typedef void (*vFEppp_t)(x64emu_t*, void*, void*, void*); typedef int32_t (*iFEiip_t)(x64emu_t*, int32_t, int32_t, void*); typedef int32_t (*iFEiiN_t)(x64emu_t*, int32_t, int32_t, ...); @@ -292,6 +300,7 @@ typedef uintptr_t (*LFpLpriiiiiiiiilt_a_t)(void*, uintptr_t, void*, struct_iiiii typedef int32_t (*iFEpippp_t)(x64emu_t*, void*, int32_t, void*, void*, void*); typedef int32_t (*iFEpuppp_t)(x64emu_t*, void*, uint32_t, void*, void*, void*); typedef int32_t (*iFEpLppp_t)(x64emu_t*, void*, uintptr_t, void*, void*, void*); +typedef void* (*pFEpLLiN_t)(x64emu_t*, void*, uintptr_t, uintptr_t, int32_t, ...); typedef int32_t (*iFEpLiipV_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, void*, void*); typedef void* (*pFEpLiiii_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int32_t); typedef void* (*pFEpLiiiI_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int64_t); @@ -337,6 +346,8 @@ void IFh_32(x64emu_t *emu, uintptr_t fcn) { IFh_t fn = (IFh_t)fcn; ui64_t r; r.i void uFv_32(x64emu_t *emu, uintptr_t fcn) { uFv_t fn = (uFv_t)fcn; R_EAX = (uint32_t)fn(); } void uFu_32(x64emu_t *emu, uintptr_t fcn) { uFu_t fn = (uFu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4)); } void uFU_32(x64emu_t *emu, uintptr_t fcn) { uFU_t fn = (uFU_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint64_t, R_ESP + 4)); } +void uFp_32(x64emu_t *emu, uintptr_t fcn) { uFp_t fn = (uFp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4)); } +void UFp_32(x64emu_t *emu, uintptr_t fcn) { UFp_t fn = (UFp_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; } void UFs_32(x64emu_t *emu, uintptr_t fcn) { UFs_t fn = (UFs_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; } void fFf_32(x64emu_t *emu, uintptr_t fcn) { fFf_t fn = (fFf_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; } void dFv_32(x64emu_t *emu, uintptr_t fcn) { dFv_t fn = (dFv_t)fcn; double db = fn(); fpu_do_push(emu); ST0val = db; } @@ -425,6 +436,7 @@ void vFEpi_32(x64emu_t *emu, uintptr_t fcn) { vFEpi_t fn = (vFEpi_t)fcn; fn(emu, void vFEpu_32(x64emu_t *emu, uintptr_t fcn) { vFEpu_t fn = (vFEpu_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); } void vFfpp_32(x64emu_t *emu, uintptr_t fcn) { vFfpp_t fn = (vFfpp_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } void vFdpp_32(x64emu_t *emu, uintptr_t fcn) { vFdpp_t fn = (vFdpp_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } +void vFppu_32(x64emu_t *emu, uintptr_t fcn) { vFppu_t fn = (vFppu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void iFEip_32(x64emu_t *emu, uintptr_t fcn) { iFEip_t fn = (iFEip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); } void iFEpi_32(x64emu_t *emu, uintptr_t fcn) { iFEpi_t fn = (iFEpi_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); } void iFEpL_32(x64emu_t *emu, uintptr_t fcn) { iFEpL_t fn = (iFEpL_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8))); } @@ -434,6 +446,7 @@ void iFEhp_32(x64emu_t *emu, uintptr_t fcn) { iFEhp_t fn = (iFEhp_t)fcn; R_EAX = void iFiii_32(x64emu_t *emu, uintptr_t fcn) { iFiii_t fn = (iFiii_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void iFiiI_32(x64emu_t *emu, uintptr_t fcn) { iFiiI_t fn = (iFiiI_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12)); } void iFiiu_32(x64emu_t *emu, uintptr_t fcn) { iFiiu_t fn = (iFiiu_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } +void iFiip_32(x64emu_t *emu, uintptr_t fcn) { iFiip_t fn = (iFiip_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFiiO_32(x64emu_t *emu, uintptr_t fcn) { iFiiO_t fn = (iFiiO_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), of_convert32(from_ptri(int32_t, R_ESP + 12))); } void iFiII_32(x64emu_t *emu, uintptr_t fcn) { iFiII_t fn = (iFiII_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 16)); } void iFiuu_32(x64emu_t *emu, uintptr_t fcn) { iFiuu_t fn = (iFiuu_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } @@ -452,6 +465,7 @@ void iFpip_32(x64emu_t *emu, uintptr_t fcn) { iFpip_t fn = (iFpip_t)fcn; R_EAX = void iFpuu_32(x64emu_t *emu, uintptr_t fcn) { iFpuu_t fn = (iFpuu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void iFpLi_32(x64emu_t *emu, uintptr_t fcn) { iFpLi_t fn = (iFpLi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); } void iFpLL_32(x64emu_t *emu, uintptr_t fcn) { iFpLL_t fn = (iFpLL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12))); } +void iFppi_32(x64emu_t *emu, uintptr_t fcn) { iFppi_t fn = (iFppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void iFppu_32(x64emu_t *emu, uintptr_t fcn) { iFppu_t fn = (iFppu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void iFppL_32(x64emu_t *emu, uintptr_t fcn) { iFppL_t fn = (iFppL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12))); } void iFppp_32(x64emu_t *emu, uintptr_t fcn) { iFppp_t fn = (iFppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } @@ -482,10 +496,13 @@ void hFEpp_32(x64emu_t *emu, uintptr_t fcn) { hFEpp_t fn = (hFEpp_t)fcn; R_EAX = void hFppH_32(x64emu_t *emu, uintptr_t fcn) { hFppH_t fn = (hFppH_t)fcn; R_EAX = to_hash(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_hash_d(from_ptri(ptr_t, R_ESP + 12)))); } void aFipa_32(x64emu_t *emu, uintptr_t fcn) { aFipa_t fn = (aFipa_t)fcn; R_EAX = to_locale(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_locale(from_ptri(ptr_t, R_ESP + 12)))); } void tFipu_32(x64emu_t *emu, uintptr_t fcn) { tFipu_t fn = (tFipu_t)fcn; R_EAX = to_cstring(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); } +void iFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { iFpBp_i_t fn = (iFpBp_i_t)fcn; struct_p_t arg_8; R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void IFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { IFpBp_i_t fn = (IFpBp_i_t)fcn; struct_p_t arg_8; ui64_t r; r.i = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void UFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { UFpBp_i_t fn = (UFpBp_i_t)fcn; struct_p_t arg_8; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void lFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { lFpBp_i_t fn = (lFpBp_i_t)fcn; struct_p_t arg_8; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } +void LFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { LFpBp_i_t fn = (LFpBp_i_t)fcn; struct_p_t arg_8; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void vFEipV_32(x64emu_t *emu, uintptr_t fcn) { vFEipV_t fn = (vFEipV_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptrv(R_ESP + 12)); } +void vFEpup_32(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void vFEppp_32(x64emu_t *emu, uintptr_t fcn) { vFEppp_t fn = (vFEppp_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFEiip_32(x64emu_t *emu, uintptr_t fcn) { iFEiip_t fn = (iFEiip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFEiiN_32(x64emu_t *emu, uintptr_t fcn) { iFEiiN_t fn = (iFEiiN_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } @@ -535,6 +552,7 @@ void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt_a_ void iFEpippp_32(x64emu_t *emu, uintptr_t fcn) { iFEpippp_t fn = (iFEpippp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFEpuppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFEpLppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLppp_t fn = (iFEpLppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } +void pFEpLLiN_32(x64emu_t *emu, uintptr_t fcn) { pFEpLLiN_t fn = (pFEpLLiN_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } void iFEpLiipV_32(x64emu_t *emu, uintptr_t fcn) { iFEpLiipV_t fn = (iFEpLiipV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); } void pFEpLiiii_32(x64emu_t *emu, uintptr_t fcn) { pFEpLiiii_t fn = (pFEpLiiii_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24))); } void pFEpLiiiI_32(x64emu_t *emu, uintptr_t fcn) { pFEpLiiiI_t fn = (pFEpLiiiI_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 24))); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 170ca677..c1979829 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -60,6 +60,8 @@ void IFh_32(x64emu_t *emu, uintptr_t fnc); void uFv_32(x64emu_t *emu, uintptr_t fnc); void uFu_32(x64emu_t *emu, uintptr_t fnc); void uFU_32(x64emu_t *emu, uintptr_t fnc); +void uFp_32(x64emu_t *emu, uintptr_t fnc); +void UFp_32(x64emu_t *emu, uintptr_t fnc); void UFs_32(x64emu_t *emu, uintptr_t fnc); void fFf_32(x64emu_t *emu, uintptr_t fnc); void dFv_32(x64emu_t *emu, uintptr_t fnc); @@ -148,6 +150,7 @@ void vFEpi_32(x64emu_t *emu, uintptr_t fnc); void vFEpu_32(x64emu_t *emu, uintptr_t fnc); void vFfpp_32(x64emu_t *emu, uintptr_t fnc); void vFdpp_32(x64emu_t *emu, uintptr_t fnc); +void vFppu_32(x64emu_t *emu, uintptr_t fnc); void iFEip_32(x64emu_t *emu, uintptr_t fnc); void iFEpi_32(x64emu_t *emu, uintptr_t fnc); void iFEpL_32(x64emu_t *emu, uintptr_t fnc); @@ -157,6 +160,7 @@ void iFEhp_32(x64emu_t *emu, uintptr_t fnc); void iFiii_32(x64emu_t *emu, uintptr_t fnc); void iFiiI_32(x64emu_t *emu, uintptr_t fnc); void iFiiu_32(x64emu_t *emu, uintptr_t fnc); +void iFiip_32(x64emu_t *emu, uintptr_t fnc); void iFiiO_32(x64emu_t *emu, uintptr_t fnc); void iFiII_32(x64emu_t *emu, uintptr_t fnc); void iFiuu_32(x64emu_t *emu, uintptr_t fnc); @@ -175,6 +179,7 @@ void iFpip_32(x64emu_t *emu, uintptr_t fnc); void iFpuu_32(x64emu_t *emu, uintptr_t fnc); void iFpLi_32(x64emu_t *emu, uintptr_t fnc); void iFpLL_32(x64emu_t *emu, uintptr_t fnc); +void iFppi_32(x64emu_t *emu, uintptr_t fnc); void iFppu_32(x64emu_t *emu, uintptr_t fnc); void iFppL_32(x64emu_t *emu, uintptr_t fnc); void iFppp_32(x64emu_t *emu, uintptr_t fnc); @@ -205,10 +210,13 @@ void hFEpp_32(x64emu_t *emu, uintptr_t fnc); void hFppH_32(x64emu_t *emu, uintptr_t fnc); void aFipa_32(x64emu_t *emu, uintptr_t fnc); void tFipu_32(x64emu_t *emu, uintptr_t fnc); +void iFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void IFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void UFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void lFpBp_i_32(x64emu_t *emu, uintptr_t fnc); +void LFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void vFEipV_32(x64emu_t *emu, uintptr_t fnc); +void vFEpup_32(x64emu_t *emu, uintptr_t fnc); void vFEppp_32(x64emu_t *emu, uintptr_t fnc); void iFEiip_32(x64emu_t *emu, uintptr_t fnc); void iFEiiN_32(x64emu_t *emu, uintptr_t fnc); @@ -258,6 +266,7 @@ void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fnc); void iFEpippp_32(x64emu_t *emu, uintptr_t fnc); void iFEpuppp_32(x64emu_t *emu, uintptr_t fnc); void iFEpLppp_32(x64emu_t *emu, uintptr_t fnc); +void pFEpLLiN_32(x64emu_t *emu, uintptr_t fnc); void iFEpLiipV_32(x64emu_t *emu, uintptr_t fnc); void pFEpLiiii_32(x64emu_t *emu, uintptr_t fnc); void pFEpLiiiI_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c index 5100dd00..b1d70e70 100755 --- a/src/wrapped32/wrappedlibc.c +++ b/src/wrapped32/wrappedlibc.c @@ -655,7 +655,6 @@ int of_unconvert32(int a) } #undef SUPER -#if 0 EXPORT void* my32__ZGTtnaX (size_t a) { printf("warning _ZGTtnaX called\n"); return NULL; } EXPORT void my32__ZGTtdlPv (void* a) { printf("warning _ZGTtdlPv called\n"); } EXPORT uint8_t my32__ITM_RU1(const uint8_t * a) { printf("warning _ITM_RU1 called\n"); return 0; } @@ -663,7 +662,7 @@ EXPORT uint32_t my32__ITM_RU4(const uint32_t * a) { printf("warning _ITM_RU4 cal EXPORT uint64_t my32__ITM_RU8(const uint64_t * a) { printf("warning _ITM_RU8 called\n"); return 0; } EXPORT void my32__ITM_memcpyRtWn(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n"); } EXPORT void my32__ITM_memcpyRnWt(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n"); } -#endif + EXPORT void my32_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val); EXPORT void my32__longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my32_longjmp"))); EXPORT void my32_siglongjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my32_longjmp"))); @@ -1022,7 +1021,7 @@ EXPORT int my32_swprintf(x64emu_t* emu, void* s, uint32_t n, void* fmt, void *b) int r = vswprintf(s, n, fmt, VARARGS_32); return r; } -#if 0 + EXPORT void my32__ITM_addUserCommitAction(x64emu_t* emu, void* cb, uint32_t b, void* c) { // disabled for now... Are all this _ITM_ stuff really mendatory? @@ -1036,7 +1035,7 @@ EXPORT void my32__ITM_addUserCommitAction(x64emu_t* emu, void* cb, uint32_t b, v printf("warning _ITM_addUserCommitAction called\n"); #endif } -#endif + EXPORT void my32__ITM_registerTMCloneTable(x64emu_t* emu, void* p, uint32_t s) {} EXPORT void my32__ITM_deregisterTMCloneTable(x64emu_t* emu, void* p) {} diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h index 09ec3655..c51f87d3 100755 --- a/src/wrapped32/wrappedlibc_private.h +++ b/src/wrapped32/wrappedlibc_private.h @@ -311,7 +311,7 @@ GO(fdatasync, iFi) // fdetach //GO(fdopen, pFip) GOW(fdopendir, pFi) -//GOW(feof, iFp) +GOW(feof, iFh) //GO(feof_unlocked, iFp) //GOW(ferror, iFp) //GO(ferror_unlocked, iFp) @@ -343,7 +343,7 @@ GOW(fgets, pFpih) //GO(fgetws_unlocked, pFpip) // __fgetws_unlocked_chk //GO(fgetxattr, iFippu) -//GO(fileno, iFp) +GO(fileno, iFh) //GOW(fileno_unlocked, iFp) GOW(finite, iFd) GO(__finite, iFd) @@ -358,7 +358,7 @@ GOW(flock, iFii) GOW(_flushlbf, vFv) //GO(fmemopen, pFpup) // fmtmsg -//GO(fnmatch, iFppi) +GO(fnmatch, iFppi) GOM(fopen, hFEpp) //%% GOWM(fopen64, hFEpp) //%% //GOM(fopencookie, pFEpppppp) //%% last 4p are a struct with 4 callbacks... @@ -398,7 +398,7 @@ GO(freopen64, hFppH) // frexpf // Weak // frexpl // Weak //GO2(fscanf, iFppV, vfscanf) -//GO(fseek, iFpli) +GO(fseek, iFhli) GO(fseeko, iFhli) GO(fseeko64, iFhIi) //GO(__fsetlocking, iFpi) @@ -1108,7 +1108,7 @@ GO(mkfifo, iFpu) //GO(mkstemp, iFp) //GO(mkstemp64, iFp) //GO(mktemp, pFp) -//GO(mktime, LFp) +GO(mktime, LFriiiiiiiiilt_) //GO(mlock, iFpL) //GO(mlockall, iFi) GOM(mmap, pFEpLiiii) //%% @@ -1125,7 +1125,7 @@ GOW(mount, iFpppup) GOM(mprotect, iFEpLi) //%% // mrand48 // mrand48_r -//GOWM(mremap, pFEpLLiN) //%% 5th hidden paramerer "void* new_addr" if flags is MREMAP_FIXED +GOWM(mremap, pFEpLLiN) //%% 5th hidden paramerer "void* new_addr" if flags is MREMAP_FIXED //GO(msgctl, iFiip) //GOW(msgget, iFpi) //GOW(msgrcv, lFipLli) @@ -1375,7 +1375,7 @@ GO(recv, lFipLi) // remap_file_pages // Weak //GOW(re_match, iFppiip) // re_match_2 // Weak -//GO(remove, iFp) +GO(remove, iFp) //GO(removexattr, iFpp) // remque GO(rename, iFpp) @@ -1470,7 +1470,7 @@ GOW(send, lFipLi) GOM(setcontext, iFEp) //%% // setdomainname GO(setegid, iFu) -//GOW(setenv, iFppi) +GOW(setenv, iFppi) // _seterr_reply GO(seteuid, iFu) // setfsent @@ -1705,7 +1705,7 @@ GO(strtoll, IFpBp_i) //GO(__strtoll_l, IFppip) //GOW(strtoll_l, IFppip) //GOW(strtoq, IFppi) // is that ok? -//GO(strtoul, LFppi) +GO(strtoul, LFpBp_i) //GO(__strtoul_internal, LFppii) GO(strtoull, UFpBp_i) //GO(__strtoul_l, uFppip) @@ -1782,11 +1782,11 @@ GOW(system, iFp) // Need to wrap to use box86 if needed? GOW(tcdrain, iFi) GO(tcflow, iFii) GO(tcflush, iFii) -//GOW(tcgetattr, iFip) +GOW(tcgetattr, iFip) GO(tcgetpgrp, iFi) // tcgetsid GO(tcsendbreak, iFii) -//GO(tcsetattr, iFiip) +GO(tcsetattr, iFiip) GO(tcsetpgrp, iFii) // tdelete // Weak // tdestroy // Weak @@ -1926,7 +1926,7 @@ GOW(__waitpid, lFlpi) // __wcpncpy_chk GOW(wcrtomb, LFpip) // __wcrtomb_chk -//GOW(wcscasecmp, iFpp) +GOW(wcscasecmp, iFpp) // __wcscasecmp_l //GOW(wcscasecmp_l, iFppp) //GOW(wcscat, pFpp) @@ -1972,7 +1972,7 @@ GOW(wcsnrtombs, LFpBp_LLp) // wcstof_l // Weak // wcstoimax //GO(wcstok, pFppp) -//GO(wcstol, iFppi) +GO(wcstol, iFpBp_i) //GO(wcstold, DFpp) // __wcstold_internal // __wcstold_l @@ -2136,12 +2136,12 @@ GO2(__close_nocancel, iFi, close) // not found (libitm???), but it seems OK to declare dummies: -//GOM(_ITM_RU1, uFp) //%%,noE -//GOM(_ITM_RU4, uFp) //%%,noE -//GOM(_ITM_RU8, UFp) -//GOM(_ITM_memcpyRtWn, vFppu) //%%,noE register(2) -//GOM(_ITM_memcpyRnWt, vFppu) //%%,noE register(2) -//GOM(_ITM_addUserCommitAction, vFEpup) +GOM(_ITM_RU1, uFp) //%%,noE +GOM(_ITM_RU4, uFp) //%%,noE +GOM(_ITM_RU8, UFp) //%%,noE +GOM(_ITM_memcpyRtWn, vFppu) //%%,noE register(2) +GOM(_ITM_memcpyRnWt, vFppu) //%%,noE register(2) +GOM(_ITM_addUserCommitAction, vFEpup) GOM(_ITM_registerTMCloneTable, vFEpu) //%% GOM(_ITM_deregisterTMCloneTable, vFEp) //%% |