diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-05 11:16:17 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-05 11:16:17 +0100 |
| commit | 4d02ba25f10830205ac161338e8473f80240ac66 (patch) | |
| tree | c0c11ccb70f074dce98f77db61934e7002aa234c /src | |
| parent | 386479f408e4e9c0b103e511c1d23c32ae9cf4be (diff) | |
| download | box64-4d02ba25f10830205ac161338e8473f80240ac66.tar.gz box64-4d02ba25f10830205ac161338e8473f80240ac66.zip | |
Added calloc and free wrapped functions
Diffstat (limited to 'src')
| -rwxr-xr-x | src/elfs/elfloader.c | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 4 |
5 files changed, 11 insertions, 3 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index b9aa83bd..2f48e15d 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -382,7 +382,7 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn uint64_t *p = (uint64_t*)(rel[i].r_offset + head->delta); uintptr_t offs = 0; uintptr_t end = 0; - uintptr_t tmp = 0; + //uintptr_t tmp = 0; if(bind==STB_LOCAL) { offs = sym->st_value + head->delta; end = offs + sym->st_size; diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 7674cf90..39799541 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1,5 +1,6 @@ #() vFE #() vFv +#() vFp #() iFE #() iFu #() iFp @@ -12,6 +13,7 @@ #() iFip #() iFup #() pFEp +#() pFLL #() vFEpu #() iFEpp #() iFEpV diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index f7aa3fea..eda14bda 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -71,6 +71,7 @@ void VulkanTox86(void* src, void* save); int of_convert(int); typedef void (*vFE_t)(x64emu_t*); typedef void (*vFv_t)(void); +typedef void (*vFp_t)(void*); typedef int32_t (*iFE_t)(x64emu_t*); typedef int32_t (*iFu_t)(uint32_t); typedef int32_t (*iFp_t)(void*); @@ -83,6 +84,7 @@ typedef int32_t (*iFEp_t)(x64emu_t*, void*); typedef int32_t (*iFip_t)(int32_t, void*); typedef int32_t (*iFup_t)(uint32_t, void*); typedef void* (*pFEp_t)(x64emu_t*, void*); +typedef void* (*pFLL_t)(uintptr_t, uintptr_t); typedef void (*vFEpu_t)(x64emu_t*, void*, uint32_t); typedef int32_t (*iFEpp_t)(x64emu_t*, void*, void*); typedef int32_t (*iFEpV_t)(x64emu_t*, void*, void*); @@ -101,6 +103,7 @@ typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void vFE(x64emu_t *emu, uintptr_t fcn) { vFE_t fn = (vFE_t)fcn; fn(emu); } void vFv(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); } +void vFp(x64emu_t *emu, uintptr_t fcn) { vFp_t fn = (vFp_t)fcn; fn((void*)R_RDI); } void iFE(x64emu_t *emu, uintptr_t fcn) { iFE_t fn = (iFE_t)fcn; R_RAX=fn(emu); } void iFu(x64emu_t *emu, uintptr_t fcn) { iFu_t fn = (iFu_t)fcn; R_RAX=fn((uint32_t)R_RDI); } void iFp(x64emu_t *emu, uintptr_t fcn) { iFp_t fn = (iFp_t)fcn; R_RAX=fn((void*)R_RDI); } @@ -113,6 +116,7 @@ void iFEp(x64emu_t *emu, uintptr_t fcn) { iFEp_t fn = (iFEp_t)fcn; R_RAX=fn(emu, void iFip(x64emu_t *emu, uintptr_t fcn) { iFip_t fn = (iFip_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI); } void iFup(x64emu_t *emu, uintptr_t fcn) { iFup_t fn = (iFup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (void*)R_RSI); } void pFEp(x64emu_t *emu, uintptr_t fcn) { pFEp_t fn = (pFEp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI); } +void pFLL(x64emu_t *emu, uintptr_t fcn) { pFLL_t fn = (pFLL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (uintptr_t)R_RSI); } void vFEpu(x64emu_t *emu, uintptr_t fcn) { vFEpu_t fn = (vFEpu_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI); } void iFEpp(x64emu_t *emu, uintptr_t fcn) { iFEpp_t fn = (iFEpp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI); } void iFEpV(x64emu_t *emu, uintptr_t fcn) { iFEpV_t fn = (iFEpV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)(R_RSP + 16)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index ddc3d411..fd9a2084 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -32,6 +32,7 @@ typedef void (*wrapper_t)(x64emu_t* emu, uintptr_t fnc); void vFE(x64emu_t *emu, uintptr_t fnc); void vFv(x64emu_t *emu, uintptr_t fnc); +void vFp(x64emu_t *emu, uintptr_t fnc); void iFE(x64emu_t *emu, uintptr_t fnc); void iFu(x64emu_t *emu, uintptr_t fnc); void iFp(x64emu_t *emu, uintptr_t fnc); @@ -44,6 +45,7 @@ void iFEp(x64emu_t *emu, uintptr_t fnc); void iFip(x64emu_t *emu, uintptr_t fnc); void iFup(x64emu_t *emu, uintptr_t fnc); void pFEp(x64emu_t *emu, uintptr_t fnc); +void pFLL(x64emu_t *emu, uintptr_t fnc); void vFEpu(x64emu_t *emu, uintptr_t fnc); void iFEpp(x64emu_t *emu, uintptr_t fnc); void iFEpV(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index 20945388..e0f35ae2 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -88,7 +88,7 @@ //GOW(bzero, //GO(c16rtomb, //GOW(c32rtomb, -//GOW(calloc, +GOW(calloc, pFLL) //GO(callrpc, //GO(__call_tls_dtors, //GOW(canonicalize_file_name, @@ -392,7 +392,7 @@ GOM(__cxa_finalize, vFEp) //GO(__freading, //GOW(fread_unlocked, //GO(__fread_unlocked_chk, -//GO(free, +GO(free, vFp) //GO(freeaddrinfo, //GOW(freeifaddrs, //GO(__freelocale, |