diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-02 19:27:32 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-04-02 19:27:32 +0200 |
| commit | 555f4e132fbcb87a5ee5ccf6776aafba922223b2 (patch) | |
| tree | f453702f2b2a78015115934f7cf10f0e5d87bf78 | |
| parent | c3209a273630eadc79f060c1f295ef3174c62e4d (diff) | |
| download | box64-555f4e132fbcb87a5ee5ccf6776aafba922223b2.tar.gz box64-555f4e132fbcb87a5ee5ccf6776aafba922223b2.zip | |
Added a few more libc wrapped function and fixed munmap wrapping
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 1 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 10 |
4 files changed, 9 insertions, 5 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 43601059..599a9bca 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -53,6 +53,7 @@ #() pFv #() pFi #() pFu +#() pFl #() pFL #() pFp #() HFi diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 9447d075..9c525227 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -86,6 +86,7 @@ typedef void* (*pFE_t)(x64emu_t*); typedef void* (*pFv_t)(void); typedef void* (*pFi_t)(int32_t); typedef void* (*pFu_t)(uint32_t); +typedef void* (*pFl_t)(intptr_t); typedef void* (*pFL_t)(uintptr_t); typedef void* (*pFp_t)(void*); typedef unsigned __int128 (*HFi_t)(int32_t); @@ -1182,6 +1183,7 @@ void pFE(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_t void pFv(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_RAX=(uintptr_t)fn(); } void pFi(x64emu_t *emu, uintptr_t fcn) { pFi_t fn = (pFi_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI); } void pFu(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI); } +void pFl(x64emu_t *emu, uintptr_t fcn) { pFl_t fn = (pFl_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI); } void pFL(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); } void pFp(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); } void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int64_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 2757063c..642f68a4 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -83,6 +83,7 @@ void pFE(x64emu_t *emu, uintptr_t fnc); void pFv(x64emu_t *emu, uintptr_t fnc); void pFi(x64emu_t *emu, uintptr_t fnc); void pFu(x64emu_t *emu, uintptr_t fnc); +void pFl(x64emu_t *emu, uintptr_t fnc); void pFL(x64emu_t *emu, uintptr_t fnc); void pFp(x64emu_t *emu, uintptr_t fnc); void HFi(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index a7707b3f..ea4edf32 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -1194,7 +1194,7 @@ GO(msync, iFpLi) //GO(munlock, //GO(munlockall, //GO(__munmap, -GOW(munmap, iFEpL) +GOM(munmap, iFEpL) //weak //GO(muntrace, GO(name_to_handle_at, iFipppi) GO(__nanosleep, iFpp) @@ -1547,8 +1547,8 @@ GOW(rmdir, iFp) //GO(ruserok, //GO(ruserok_af, //GO(ruserpass, -//GO(__sbrk, -//GOW(sbrk, +GO(__sbrk, pFl) +GOW(sbrk, pFl) //GOW(scalbn, //GOW(scalbnf, //GOW(scalbnl, @@ -1772,8 +1772,8 @@ GO(__strdup, pFp) GOW(strdup, pFp) GO(strerror, pFi) GO(strerror_l, pFip) -//GO(__strerror_r, -//GOW(strerror_r, +GO(__strerror_r, pFipL) +GOW(strerror_r, pFipL) //GO(strfmon, //GO(__strfmon_l, //GOW(strfmon_l, |