diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-29 20:19:37 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-29 20:19:37 +0200 |
| commit | 6dbc4d44a8b02619a0edaf33800fcd6e0f0fecbb (patch) | |
| tree | 50772cfa9d7eded5e833352cdc23c6993be6be41 /src/wrapped | |
| parent | 397eff97122677eb72ccce5d808765cbc79b8ee5 (diff) | |
| download | box64-6dbc4d44a8b02619a0edaf33800fcd6e0f0fecbb.tar.gz box64-6dbc4d44a8b02619a0edaf33800fcd6e0f0fecbb.zip | |
Added wrapped libbz2 and liblzma
Diffstat (limited to 'src/wrapped')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 16 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 8 | ||||
| -rwxr-xr-x | src/wrapped/wrappedbz2.c | 230 | ||||
| -rwxr-xr-x | src/wrapped/wrappedbz2_private.h | 37 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlzma.c | 60 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlzma_private.h | 102 |
7 files changed, 461 insertions, 0 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 6e46e5a8..800b6dca 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -254,6 +254,7 @@ #() iFpuU #() iFpuL #() iFpup +#() iFpUi #() iFpUU #() iFpfu #() iFpff @@ -417,6 +418,7 @@ #() iFEipp #() iFEipV #() iFEupp +#() iFEpii #() iFEpip #() iFEpLi #() iFEppi @@ -604,11 +606,13 @@ #() vFpliil #() vFppiii #() vFppiip +#() vFppipp #() vFppWui #() vFpppii #() vFppppi #() vFppppp #() iFEippp +#() iFEpiii #() iFEpipi #() iFEpipp #() iFEpipV @@ -698,6 +702,7 @@ #() pFpuWWW #() pFpuuWW #() pFpuuup +#() pFppiii #() pFppipi #() pFppipp #() pFppuuu @@ -794,6 +799,7 @@ #() iFpppiuu #() iFpppipi #() iFpppipp +#() iFpppuii #() iFppppii #() iFppppip #() iFppppup @@ -864,6 +870,7 @@ #() vFpipipii #() vFpddiidd #() vFppiiipi +#() vFppipppp #() vFpppiiii #() vFpppuuuu #() vFppppipi @@ -892,6 +899,7 @@ #() iFpppiiup #() iFpppiipi #() iFpppiuwu +#() iFpppuiii #() iFppppiii #() iFppppdpi #() iFppppppp diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 85ac2046..57990bce 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -287,6 +287,7 @@ typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t); typedef int32_t (*iFpuU_t)(void*, uint32_t, uint64_t); typedef int32_t (*iFpuL_t)(void*, uint32_t, uintptr_t); typedef int32_t (*iFpup_t)(void*, uint32_t, void*); +typedef int32_t (*iFpUi_t)(void*, uint64_t, int32_t); typedef int32_t (*iFpUU_t)(void*, uint64_t, uint64_t); typedef int32_t (*iFpfu_t)(void*, float, uint32_t); typedef int32_t (*iFpff_t)(void*, float, float); @@ -450,6 +451,7 @@ typedef int32_t (*iFEiiN_t)(x64emu_t*, int32_t, int32_t, ...); typedef int32_t (*iFEipp_t)(x64emu_t*, int32_t, void*, void*); typedef int32_t (*iFEipV_t)(x64emu_t*, int32_t, void*, void*); typedef int32_t (*iFEupp_t)(x64emu_t*, uint32_t, void*, void*); +typedef int32_t (*iFEpii_t)(x64emu_t*, void*, int32_t, int32_t); typedef int32_t (*iFEpip_t)(x64emu_t*, void*, int32_t, void*); typedef int32_t (*iFEpLi_t)(x64emu_t*, void*, uintptr_t, int32_t); typedef int32_t (*iFEppi_t)(x64emu_t*, void*, void*, int32_t); @@ -637,11 +639,13 @@ typedef void (*vFpddii_t)(void*, double, double, int32_t, int32_t); typedef void (*vFpliil_t)(void*, intptr_t, int32_t, int32_t, intptr_t); typedef void (*vFppiii_t)(void*, void*, int32_t, int32_t, int32_t); typedef void (*vFppiip_t)(void*, void*, int32_t, int32_t, void*); +typedef void (*vFppipp_t)(void*, void*, int32_t, void*, void*); typedef void (*vFppWui_t)(void*, void*, uint16_t, uint32_t, int32_t); typedef void (*vFpppii_t)(void*, void*, void*, int32_t, int32_t); typedef void (*vFppppi_t)(void*, void*, void*, void*, int32_t); typedef void (*vFppppp_t)(void*, void*, void*, void*, void*); typedef int32_t (*iFEippp_t)(x64emu_t*, int32_t, void*, void*, void*); +typedef int32_t (*iFEpiii_t)(x64emu_t*, void*, int32_t, int32_t, int32_t); typedef int32_t (*iFEpipi_t)(x64emu_t*, void*, int32_t, void*, int32_t); typedef int32_t (*iFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*); typedef int32_t (*iFEpipV_t)(x64emu_t*, void*, int32_t, void*, void*); @@ -731,6 +735,7 @@ typedef void* (*pFpuiip_t)(void*, uint32_t, int32_t, int32_t, void*); typedef void* (*pFpuWWW_t)(void*, uint32_t, uint16_t, uint16_t, uint16_t); typedef void* (*pFpuuWW_t)(void*, uint32_t, uint32_t, uint16_t, uint16_t); typedef void* (*pFpuuup_t)(void*, uint32_t, uint32_t, uint32_t, void*); +typedef void* (*pFppiii_t)(void*, void*, int32_t, int32_t, int32_t); typedef void* (*pFppipi_t)(void*, void*, int32_t, void*, int32_t); typedef void* (*pFppipp_t)(void*, void*, int32_t, void*, void*); typedef void* (*pFppuuu_t)(void*, void*, uint32_t, uint32_t, uint32_t); @@ -827,6 +832,7 @@ typedef int32_t (*iFppLupp_t)(void*, void*, uintptr_t, uint32_t, void*, void*); typedef int32_t (*iFpppiuu_t)(void*, void*, void*, int32_t, uint32_t, uint32_t); typedef int32_t (*iFpppipi_t)(void*, void*, void*, int32_t, void*, int32_t); typedef int32_t (*iFpppipp_t)(void*, void*, void*, int32_t, void*, void*); +typedef int32_t (*iFpppuii_t)(void*, void*, void*, uint32_t, int32_t, int32_t); typedef int32_t (*iFppppii_t)(void*, void*, void*, void*, int32_t, int32_t); typedef int32_t (*iFppppip_t)(void*, void*, void*, void*, int32_t, void*); typedef int32_t (*iFppppup_t)(void*, void*, void*, void*, uint32_t, void*); @@ -897,6 +903,7 @@ typedef void (*vFpiiliip_t)(void*, int32_t, int32_t, intptr_t, int32_t, int32_t, typedef void (*vFpipipii_t)(void*, int32_t, void*, int32_t, void*, int32_t, int32_t); typedef void (*vFpddiidd_t)(void*, double, double, int32_t, int32_t, double, double); typedef void (*vFppiiipi_t)(void*, void*, int32_t, int32_t, int32_t, void*, int32_t); +typedef void (*vFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void*); typedef void (*vFpppiiii_t)(void*, void*, void*, int32_t, int32_t, int32_t, int32_t); typedef void (*vFpppuuuu_t)(void*, void*, void*, uint32_t, uint32_t, uint32_t, uint32_t); typedef void (*vFppppipi_t)(void*, void*, void*, void*, int32_t, void*, int32_t); @@ -925,6 +932,7 @@ typedef int32_t (*iFpppiiuu_t)(void*, void*, void*, int32_t, int32_t, uint32_t, typedef int32_t (*iFpppiiup_t)(void*, void*, void*, int32_t, int32_t, uint32_t, void*); typedef int32_t (*iFpppiipi_t)(void*, void*, void*, int32_t, int32_t, void*, int32_t); typedef int32_t (*iFpppiuwu_t)(void*, void*, void*, int32_t, uint32_t, int16_t, uint32_t); +typedef int32_t (*iFpppuiii_t)(void*, void*, void*, uint32_t, int32_t, int32_t, int32_t); typedef int32_t (*iFppppiii_t)(void*, void*, void*, void*, int32_t, int32_t, int32_t); typedef int32_t (*iFppppdpi_t)(void*, void*, void*, void*, double, void*, int32_t); typedef int32_t (*iFppppppp_t)(void*, void*, void*, void*, void*, void*, void*); @@ -1370,6 +1378,7 @@ void iFpuu(x64emu_t *emu, uintptr_t fcn) { iFpuu_t fn = (iFpuu_t)fcn; R_RAX=fn(( void iFpuU(x64emu_t *emu, uintptr_t fcn) { iFpuU_t fn = (iFpuU_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint64_t)R_RDX); } void iFpuL(x64emu_t *emu, uintptr_t fcn) { iFpuL_t fn = (iFpuL_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX); } void iFpup(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); } +void iFpUi(x64emu_t *emu, uintptr_t fcn) { iFpUi_t fn = (iFpUi_t)fcn; R_RAX=fn((void*)R_RDI, (uint64_t)R_RSI, (int32_t)R_RDX); } void iFpUU(x64emu_t *emu, uintptr_t fcn) { iFpUU_t fn = (iFpUU_t)fcn; R_RAX=fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); } void iFpfu(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].f[0], (uint32_t)R_RSI); } void iFpff(x64emu_t *emu, uintptr_t fcn) { iFpff_t fn = (iFpff_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); } @@ -1533,6 +1542,7 @@ void iFEiiN(x64emu_t *emu, uintptr_t fcn) { iFEiiN_t fn = (iFEiiN_t)fcn; R_RAX=f void iFEipp(x64emu_t *emu, uintptr_t fcn) { iFEipp_t fn = (iFEipp_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); } void iFEipV(x64emu_t *emu, uintptr_t fcn) { iFEipV_t fn = (iFEipV_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); } void iFEupp(x64emu_t *emu, uintptr_t fcn) { iFEupp_t fn = (iFEupp_t)fcn; R_RAX=fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); } +void iFEpii(x64emu_t *emu, uintptr_t fcn) { iFEpii_t fn = (iFEpii_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); } void iFEpip(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); } void iFEpLi(x64emu_t *emu, uintptr_t fcn) { iFEpLi_t fn = (iFEpLi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX); } void iFEppi(x64emu_t *emu, uintptr_t fcn) { iFEppi_t fn = (iFEppi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); } @@ -1720,11 +1730,13 @@ void vFpddii(x64emu_t *emu, uintptr_t fcn) { vFpddii_t fn = (vFpddii_t)fcn; fn(( void vFpliil(x64emu_t *emu, uintptr_t fcn) { vFpliil_t fn = (vFpliil_t)fcn; fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (intptr_t)R_R8); } void vFppiii(x64emu_t *emu, uintptr_t fcn) { vFppiii_t fn = (vFppiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); } void vFppiip(x64emu_t *emu, uintptr_t fcn) { vFppiip_t fn = (vFppiip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); } +void vFppipp(x64emu_t *emu, uintptr_t fcn) { vFppipp_t fn = (vFppipp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFppWui(x64emu_t *emu, uintptr_t fcn) { vFppWui_t fn = (vFppWui_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint16_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); } void vFpppii(x64emu_t *emu, uintptr_t fcn) { vFpppii_t fn = (vFpppii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); } void vFppppi(x64emu_t *emu, uintptr_t fcn) { vFppppi_t fn = (vFppppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); } void vFppppp(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void iFEippp(x64emu_t *emu, uintptr_t fcn) { iFEippp_t fn = (iFEippp_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } +void iFEpiii(x64emu_t *emu, uintptr_t fcn) { iFEpiii_t fn = (iFEpiii_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); } void iFEpipi(x64emu_t *emu, uintptr_t fcn) { iFEpipi_t fn = (iFEpipi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); } void iFEpipp(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFEpipV(x64emu_t *emu, uintptr_t fcn) { iFEpipV_t fn = (iFEpipV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } @@ -1814,6 +1826,7 @@ void pFpuiip(x64emu_t *emu, uintptr_t fcn) { pFpuiip_t fn = (pFpuiip_t)fcn; R_RA void pFpuWWW(x64emu_t *emu, uintptr_t fcn) { pFpuWWW_t fn = (pFpuWWW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint16_t)R_RDX, (uint16_t)R_RCX, (uint16_t)R_R8); } void pFpuuWW(x64emu_t *emu, uintptr_t fcn) { pFpuuWW_t fn = (pFpuuWW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint16_t)R_RCX, (uint16_t)R_R8); } void pFpuuup(x64emu_t *emu, uintptr_t fcn) { pFpuuup_t fn = (pFpuuup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); } +void pFppiii(x64emu_t *emu, uintptr_t fcn) { pFppiii_t fn = (pFppiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); } void pFppipi(x64emu_t *emu, uintptr_t fcn) { pFppipi_t fn = (pFppipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); } void pFppipp(x64emu_t *emu, uintptr_t fcn) { pFppipp_t fn = (pFppipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void pFppuuu(x64emu_t *emu, uintptr_t fcn) { pFppuuu_t fn = (pFppuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); } @@ -1910,6 +1923,7 @@ void iFppLupp(x64emu_t *emu, uintptr_t fcn) { iFppLupp_t fn = (iFppLupp_t)fcn; R void iFpppiuu(x64emu_t *emu, uintptr_t fcn) { iFpppiuu_t fn = (iFpppiuu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); } void iFpppipi(x64emu_t *emu, uintptr_t fcn) { iFpppipi_t fn = (iFpppipi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); } void iFpppipp(x64emu_t *emu, uintptr_t fcn) { iFpppipp_t fn = (iFpppipp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); } +void iFpppuii(x64emu_t *emu, uintptr_t fcn) { iFpppuii_t fn = (iFpppuii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); } void iFppppii(x64emu_t *emu, uintptr_t fcn) { iFppppii_t fn = (iFppppii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9); } void iFppppip(x64emu_t *emu, uintptr_t fcn) { iFppppip_t fn = (iFppppip_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); } void iFppppup(x64emu_t *emu, uintptr_t fcn) { iFppppup_t fn = (iFppppup_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (void*)R_R9); } @@ -1980,6 +1994,7 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fcn) { vFpiiliip_t fn = (vFpiiliip_t)fcn void vFpipipii(x64emu_t *emu, uintptr_t fcn) { vFpipipii_t fn = (vFpipipii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void vFpddiidd(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0]); } void vFppiiipi(x64emu_t *emu, uintptr_t fcn) { vFppiiipi_t fn = (vFppiiipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8)); } +void vFppipppp(x64emu_t *emu, uintptr_t fcn) { vFppipppp_t fn = (vFppipppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void vFpppiiii(x64emu_t *emu, uintptr_t fcn) { vFpppiiii_t fn = (vFpppiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void vFpppuuuu(x64emu_t *emu, uintptr_t fcn) { vFpppuuuu_t fn = (vFpppuuuu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); } void vFppppipi(x64emu_t *emu, uintptr_t fcn) { vFppppipi_t fn = (vFppppipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8)); } @@ -2008,6 +2023,7 @@ void iFpppiiuu(x64emu_t *emu, uintptr_t fcn) { iFpppiiuu_t fn = (iFpppiiuu_t)fcn void iFpppiiup(x64emu_t *emu, uintptr_t fcn) { iFpppiiup_t fn = (iFpppiiup_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); } void iFpppiipi(x64emu_t *emu, uintptr_t fcn) { iFpppiipi_t fn = (iFpppiipi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8)); } void iFpppiuwu(x64emu_t *emu, uintptr_t fcn) { iFpppiuwu_t fn = (iFpppiuwu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int16_t)R_R9, *(uint32_t*)(R_RSP + 8)); } +void iFpppuiii(x64emu_t *emu, uintptr_t fcn) { iFpppuiii_t fn = (iFpppuiii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void iFppppiii(x64emu_t *emu, uintptr_t fcn) { iFppppiii_t fn = (iFppppiii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } void iFppppdpi(x64emu_t *emu, uintptr_t fcn) { iFppppdpi_t fn = (iFppppdpi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, emu->xmm[0].d[0], (void*)R_R8, (int32_t)R_R9); } void iFppppppp(x64emu_t *emu, uintptr_t fcn) { iFppppppp_t fn = (iFppppppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 174b2928..6dc17259 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -284,6 +284,7 @@ void iFpuu(x64emu_t *emu, uintptr_t fnc); void iFpuU(x64emu_t *emu, uintptr_t fnc); void iFpuL(x64emu_t *emu, uintptr_t fnc); void iFpup(x64emu_t *emu, uintptr_t fnc); +void iFpUi(x64emu_t *emu, uintptr_t fnc); void iFpUU(x64emu_t *emu, uintptr_t fnc); void iFpfu(x64emu_t *emu, uintptr_t fnc); void iFpff(x64emu_t *emu, uintptr_t fnc); @@ -447,6 +448,7 @@ void iFEiiN(x64emu_t *emu, uintptr_t fnc); void iFEipp(x64emu_t *emu, uintptr_t fnc); void iFEipV(x64emu_t *emu, uintptr_t fnc); void iFEupp(x64emu_t *emu, uintptr_t fnc); +void iFEpii(x64emu_t *emu, uintptr_t fnc); void iFEpip(x64emu_t *emu, uintptr_t fnc); void iFEpLi(x64emu_t *emu, uintptr_t fnc); void iFEppi(x64emu_t *emu, uintptr_t fnc); @@ -634,11 +636,13 @@ void vFpddii(x64emu_t *emu, uintptr_t fnc); void vFpliil(x64emu_t *emu, uintptr_t fnc); void vFppiii(x64emu_t *emu, uintptr_t fnc); void vFppiip(x64emu_t *emu, uintptr_t fnc); +void vFppipp(x64emu_t *emu, uintptr_t fnc); void vFppWui(x64emu_t *emu, uintptr_t fnc); void vFpppii(x64emu_t *emu, uintptr_t fnc); void vFppppi(x64emu_t *emu, uintptr_t fnc); void vFppppp(x64emu_t *emu, uintptr_t fnc); void iFEippp(x64emu_t *emu, uintptr_t fnc); +void iFEpiii(x64emu_t *emu, uintptr_t fnc); void iFEpipi(x64emu_t *emu, uintptr_t fnc); void iFEpipp(x64emu_t *emu, uintptr_t fnc); void iFEpipV(x64emu_t *emu, uintptr_t fnc); @@ -728,6 +732,7 @@ void pFpuiip(x64emu_t *emu, uintptr_t fnc); void pFpuWWW(x64emu_t *emu, uintptr_t fnc); void pFpuuWW(x64emu_t *emu, uintptr_t fnc); void pFpuuup(x64emu_t *emu, uintptr_t fnc); +void pFppiii(x64emu_t *emu, uintptr_t fnc); void pFppipi(x64emu_t *emu, uintptr_t fnc); void pFppipp(x64emu_t *emu, uintptr_t fnc); void pFppuuu(x64emu_t *emu, uintptr_t fnc); @@ -824,6 +829,7 @@ void iFppLupp(x64emu_t *emu, uintptr_t fnc); void iFpppiuu(x64emu_t *emu, uintptr_t fnc); void iFpppipi(x64emu_t *emu, uintptr_t fnc); void iFpppipp(x64emu_t *emu, uintptr_t fnc); +void iFpppuii(x64emu_t *emu, uintptr_t fnc); void iFppppii(x64emu_t *emu, uintptr_t fnc); void iFppppip(x64emu_t *emu, uintptr_t fnc); void iFppppup(x64emu_t *emu, uintptr_t fnc); @@ -894,6 +900,7 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fnc); void vFpipipii(x64emu_t *emu, uintptr_t fnc); void vFpddiidd(x64emu_t *emu, uintptr_t fnc); void vFppiiipi(x64emu_t *emu, uintptr_t fnc); +void vFppipppp(x64emu_t *emu, uintptr_t fnc); void vFpppiiii(x64emu_t *emu, uintptr_t fnc); void vFpppuuuu(x64emu_t *emu, uintptr_t fnc); void vFppppipi(x64emu_t *emu, uintptr_t fnc); @@ -922,6 +929,7 @@ void iFpppiiuu(x64emu_t *emu, uintptr_t fnc); void iFpppiiup(x64emu_t *emu, uintptr_t fnc); void iFpppiipi(x64emu_t *emu, uintptr_t fnc); void iFpppiuwu(x64emu_t *emu, uintptr_t fnc); +void iFpppuiii(x64emu_t *emu, uintptr_t fnc); void iFppppiii(x64emu_t *emu, uintptr_t fnc); void iFppppdpi(x64emu_t *emu, uintptr_t fnc); void iFppppppp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedbz2.c b/src/wrapped/wrappedbz2.c new file mode 100755 index 00000000..0f4b76b8 --- /dev/null +++ b/src/wrapped/wrappedbz2.c @@ -0,0 +1,230 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box64context.h" +#include "emu/x64emu_private.h" +#include "myalign.h" + +const char* bz2Name = "libbz2.so.1"; +#define LIBNAME bz2 +static library_t* my_lib = NULL; + +typedef int (*iFp_t)(void*); +typedef int (*iFpi_t)(void*, int); +typedef int (*iFpii_t)(void*, int, int); +typedef int (*iFpiii_t)(void*, int, int, int); + +#define SUPER() \ + GO(BZ2_bzCompressInit, iFpiii_t) \ + GO(BZ2_bzCompress, iFpi_t) \ + GO(BZ2_bzCompressEnd, iFp_t) \ + GO(BZ2_bzDecompressInit, iFpii_t) \ + GO(BZ2_bzDecompress, iFp_t) \ + GO(BZ2_bzDecompressEnd, iFp_t) + +typedef struct bz2_my_s { + // functions + #define GO(A, B) B A; + SUPER() + #undef GO +} bz2_my_t; + +void* getBz2My(library_t* lib) +{ + bz2_my_t* my = (bz2_my_t*)calloc(1, sizeof(bz2_my_t)); + #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + SUPER() + #undef GO + return my; +} +#undef SUPER + +void freeBz2My(void* lib) +{ + //bz2_my_t *my = (bz2_my_t *)lib; +} + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) \ +GO(4) + +// alloc ... +#define GO(A) \ +static uintptr_t my_alloc_fct_##A = 0; \ +static void* my_alloc_##A(void* opaque, int m, int n) \ +{ \ + return (void*)RunFunction(my_context, my_alloc_fct_##A, 3, opaque, m, n); \ +} +SUPER() +#undef GO +static void* find_alloc_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_alloc_fct_##A == (uintptr_t)fct) return my_alloc_##A; + SUPER() + #undef GO + #define GO(A) if(my_alloc_fct_##A == 0) {my_alloc_fct_##A = (uintptr_t)fct; return my_alloc_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for bz2 alloc callback\n"); + return NULL; +} +static void* reverse_alloc_Fct(void* fct) +{ + if(!fct) return fct; + if(CheckBridged(my_lib->priv.w.bridge, fct)) + return (void*)CheckBridged(my_lib->priv.w.bridge, fct); + #define GO(A) if(my_alloc_##A == fct) return (void*)my_alloc_fct_##A; + SUPER() + #undef GO + return (void*)AddBridge(my_lib->priv.w.bridge, pFpii, fct, 0, NULL); +} +// free ... +#define GO(A) \ +static uintptr_t my_free_fct_##A = 0; \ +static void my_free_##A(void* opaque, void* p) \ +{ \ + RunFunction(my_context, my_free_fct_##A, 2, opaque, p); \ +} +SUPER() +#undef GO +static void* find_free_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_free_fct_##A == (uintptr_t)fct) return my_free_##A; + SUPER() + #undef GO + #define GO(A) if(my_free_fct_##A == 0) {my_free_fct_##A = (uintptr_t)fct; return my_free_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for bz2 free callback\n"); + return NULL; +} +static void* reverse_free_Fct(void* fct) +{ + if(!fct) return fct; + if(CheckBridged(my_lib->priv.w.bridge, fct)) + return (void*)CheckBridged(my_lib->priv.w.bridge, fct); + #define GO(A) if(my_free_##A == fct) return (void*)my_free_fct_##A; + SUPER() + #undef GO + return (void*)AddBridge(my_lib->priv.w.bridge, vFpp, fct, 0, NULL); +} +#undef SUPER + +typedef struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; +} my_bz_stream_t; + + +#define WRAP_BZ(A) \ + A->bzalloc = find_alloc_Fct(A->bzalloc); \ + A->bzfree = find_free_Fct(A->bzfree); + +#define UNWRAP_BZ(A) if(A->bzalloc || A->bzfree) \ + A->bzalloc = reverse_alloc_Fct(A->bzalloc); \ + A->bzfree = reverse_free_Fct(A->bzfree); + +EXPORT int my_BZ2_bzCompressInit(x64emu_t* emu, my_bz_stream_t* strm, int blocksize, int verbosity, int work) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzCompressInit(strm, blocksize, verbosity, work); + UNWRAP_BZ(strm); + return ret; +} + +EXPORT int my_BZ2_bzCompress(x64emu_t* emu, my_bz_stream_t* strm, int action) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzCompress(strm, action); + UNWRAP_BZ(strm); + return ret; +} + +EXPORT int my_BZ2_bzCompressEnd(x64emu_t* emu, my_bz_stream_t* strm) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzCompressEnd(strm); + UNWRAP_BZ(strm); + return ret; +} + +EXPORT int my_BZ2_bzDecompressInit(x64emu_t* emu, my_bz_stream_t* strm, int verbosity, int small) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzDecompressInit(strm, verbosity, small); + UNWRAP_BZ(strm); + return ret; +} + +EXPORT int my_BZ2_bzDecompress(x64emu_t* emu, my_bz_stream_t* strm) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzDecompress(strm); + UNWRAP_BZ(strm); + return ret; +} + +EXPORT int my_BZ2_bzDecompressEnd(x64emu_t* emu, my_bz_stream_t* strm) +{ + library_t * lib = GetLibInternal(bz2Name); + bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; + WRAP_BZ(strm); + int ret = my->BZ2_bzDecompressEnd(strm); + UNWRAP_BZ(strm); + return ret; +} + +#define CUSTOM_INIT \ + lib->priv.w.p2 = getBz2My(lib); \ + my_lib = lib; + +#define CUSTOM_FINI \ + freeBz2My(lib->priv.w.p2); \ + free(lib->priv.w.p2); \ + my_lib = NULL; + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedbz2_private.h b/src/wrapped/wrappedbz2_private.h new file mode 100755 index 00000000..f05e42f8 --- /dev/null +++ b/src/wrapped/wrappedbz2_private.h @@ -0,0 +1,37 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error meh! +#endif + +//GO(BZ2_blockSort, +//GO(BZ2_bsInitWrite, +//GO(BZ2_bz__AssertH__fail, +GO(BZ2_bzBuffToBuffCompress, iFpppuiii) +GO(BZ2_bzBuffToBuffDecompress, iFpppuii) +GO(BZ2_bzclose, iFp) +GOM(BZ2_bzCompress, iFEpi) +GOM(BZ2_bzCompressEnd, iFEp) +GOM(BZ2_bzCompressInit, iFEpiii) +GOM(BZ2_bzDecompress, iFEp) +GOM(BZ2_bzDecompressEnd, iFEp) +GOM(BZ2_bzDecompressInit, iFEpii) +GO(BZ2_bzdopen, pFip) +GO(BZ2_bzerror, pFpp) +GO(BZ2_bzflush, iFp) +GO(BZ2_bzlibVersion, pFv) +GO(BZ2_bzopen, pFpp) +GO(BZ2_bzread, iFppi) +GO(BZ2_bzRead, iFpppi) +GO(BZ2_bzReadClose, vFpp) +GO(BZ2_bzReadGetUnused, vFpppp) +GO(BZ2_bzReadOpen, pFppipi) +GO(BZ2_bzwrite, iFppi) +GO(BZ2_bzWrite, vFpppi) +GO(BZ2_bzWriteClose, vFppipp) +GO(BZ2_bzWriteClose64, vFppipppp) +GO(BZ2_bzWriteOpen, pFppiii) +//GO(BZ2_compressBlock, +//GO(BZ2_decompress, +//GO(BZ2_hbAssignCodes, +//GO(BZ2_hbCreateDecodeTables, +//GO(BZ2_hbMakeCodeLengths, +//GO(BZ2_indexIntoF, diff --git a/src/wrapped/wrappedlzma.c b/src/wrapped/wrappedlzma.c new file mode 100755 index 00000000..8bfb5707 --- /dev/null +++ b/src/wrapped/wrappedlzma.c @@ -0,0 +1,60 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box64context.h" +#include "emu/x64emu_private.h" +#include "myalign.h" + +const char* lzmaName = "liblzma.so.5"; +#define LIBNAME lzma +static library_t* my_lib = NULL; + + +#define SUPER() \ + +typedef struct lzma_my_s { + // functions + #define GO(A, B) B A; + SUPER() + #undef GO +} lzma_my_t; + +void* getLzmaMy(library_t* lib) +{ + lzma_my_t* my = (lzma_my_t*)calloc(1, sizeof(lzma_my_t)); + #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + SUPER() + #undef GO + return my; +} +#undef SUPER + +void freeLzmaMy(void* lib) +{ + //lzma_my_t *my = (lzma_my_t *)lib; +} + +#define CUSTOM_INIT \ + lib->priv.w.p2 = getLzmaMy(lib); \ + my_lib = lib; + +#define CUSTOM_FINI \ + freeLzmaMy(lib->priv.w.p2); \ + free(lib->priv.w.p2); \ + my_lib = NULL; + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedlzma_private.h b/src/wrapped/wrappedlzma_private.h new file mode 100755 index 00000000..a4e9fae8 --- /dev/null +++ b/src/wrapped/wrappedlzma_private.h @@ -0,0 +1,102 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error meh! +#endif + +//GO(lzma_alone_decoder, +//GO(lzma_alone_encoder, +//GO(lzma_auto_decoder, +//GO(lzma_block_buffer_bound, +//GO(lzma_block_buffer_decode, +//GO(lzma_block_buffer_encode, +//GO(lzma_block_compressed_size, +//GO(lzma_block_decoder, +//GO(lzma_block_encoder, +//GO(lzma_block_header_decode, +//GO(lzma_block_header_encode, +//GO(lzma_block_header_size, +//GO(lzma_block_total_size, +//GO(lzma_block_uncomp_encode, +//GO(lzma_block_unpadded_size, +//GO(lzma_check_is_supported, +//GO(lzma_check_size, +GO(lzma_code, iFpi) +//GO(lzma_cputhreads, +//GO(lzma_crc32, +//GO(lzma_crc64, +//GO(lzma_easy_buffer_encode, +//GO(lzma_easy_decoder_memusage, +//GO(lzma_easy_encoder, +//GO(lzma_easy_encoder_memusage, +GO(lzma_end, vFp) +//GO(lzma_filter_decoder_is_supported, +//GO(lzma_filter_encoder_is_supported, +//GO(lzma_filter_flags_decode, +//GO(lzma_filter_flags_encode, +//GO(lzma_filter_flags_size, +//GO(lzma_filters_copy, +//GO(lzma_filters_update, +//GO(lzma_get_check, +//GO(lzma_get_progress, +//GO(lzma_index_append, +//GO(lzma_index_block_count, +//GO(lzma_index_buffer_decode, +//GO(lzma_index_buffer_encode, +//GO(lzma_index_cat, +//GO(lzma_index_checks, +//GO(lzma_index_decoder, +//GO(lzma_index_dup, +//GO(lzma_index_encoder, +//GO(lzma_index_end, +//GO(lzma_index_file_size, +//GO(lzma_index_hash_append, +//GO(lzma_index_hash_decode, +//GO(lzma_index_hash_end, +//GO(lzma_index_hash_init, +//GO(lzma_index_hash_size, +//GO(lzma_index_init, +//GO(lzma_index_iter_init, +//GO(lzma_index_iter_locate, +//GO(lzma_index_iter_next, +//GO(lzma_index_iter_rewind, +//GO(lzma_index_memusage, +//GO(lzma_index_memused, +//GO(lzma_index_size, +//GO(lzma_index_stream_count, +//GO(lzma_index_stream_flags, +//GO(lzma_index_stream_padding, +//GO(lzma_index_stream_size, +//GO(lzma_index_total_size, +//GO(lzma_index_uncompressed_size, +//GO(lzma_lzma_preset, +//GO(lzma_memlimit_get, +//GO(lzma_memlimit_set, +//GO(lzma_memusage, +//GO(lzma_mf_is_supported, +//GO(lzma_mode_is_supported, +//GO(lzma_physmem, +//GO(lzma_properties_decode, +//GO(lzma_properties_encode, +//GO(lzma_properties_size, +//GO(lzma_raw_buffer_decode, +//GO(lzma_raw_buffer_encode, +//GO(lzma_raw_decoder, +//GO(lzma_raw_decoder_memusage, +//GO(lzma_raw_encoder, +//GO(lzma_raw_encoder_memusage, +//GO(lzma_stream_buffer_bound, +//GO(lzma_stream_buffer_decode, +//GO(lzma_stream_buffer_encode, +GO(lzma_stream_decoder, iFpUi) +//GO(lzma_stream_encoder, +//GO(lzma_stream_encoder_mt, +//GO(lzma_stream_encoder_mt_memusage, +//GO(lzma_stream_flags_compare, +//GO(lzma_stream_footer_decode, +//GO(lzma_stream_footer_encode, +//GO(lzma_stream_header_decode, +//GO(lzma_stream_header_encode, +//GO(lzma_version_number, +//GO(lzma_version_string, +//GO(lzma_vli_decode, +//GO(lzma_vli_encode, +//GO(lzma_vli_size, |