diff options
| author | Yip Coekjan <69834864+Coekjan@users.noreply.github.com> | 2024-07-04 22:31:26 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-04 16:31:26 +0200 |
| commit | a69368e8556e968f32d6a0b2ee2b7d80c6c9c586 (patch) | |
| tree | 82bb157bec503d703599d986e3f04fb11c0d9e67 /src | |
| parent | 84b0e2f113a36fb364a7389eb03b08d99d61f3d1 (diff) | |
| download | box64-a69368e8556e968f32d6a0b2ee2b7d80c6c9c586.tar.gz box64-a69368e8556e968f32d6a0b2ee2b7d80c6c9c586.zip | |
Wrap some functions for libc (#1635)
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 11 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 4 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibc_private.h | 10 |
4 files changed, 25 insertions, 4 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 8bed3675..ee5df648 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -787,6 +787,7 @@ #() vFiiip #() vFiiCp #() vFiill +#() vFiipV #() vFiuip #() vFiuuu #() vFiulp @@ -1170,6 +1171,7 @@ #() LFippp #() LFuipL #() LFpCii +#() LFpupL #() LFpLCL #() LFpLLp #() LFpLpL @@ -1677,6 +1679,7 @@ #() lFpuipC #() lFpuuLL #() lFppupp +#() lFppllp #() lFppLpL #() lFppLpp #() LFELppi @@ -2122,6 +2125,7 @@ #() lFipLpLL #() lFpipill #() lFpuuLLp +#() lFpplllp #() lFppLipp #() lFpppLpp #() LFEupppp diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 4e3fc14e..51e63c19 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -825,6 +825,7 @@ typedef void (*vFiiii_t)(int32_t, int32_t, int32_t, int32_t); typedef void (*vFiiip_t)(int32_t, int32_t, int32_t, void*); typedef void (*vFiiCp_t)(int32_t, int32_t, uint8_t, void*); typedef void (*vFiill_t)(int32_t, int32_t, intptr_t, intptr_t); +typedef void (*vFiipV_t)(int32_t, int32_t, void*, void*); typedef void (*vFiuip_t)(int32_t, uint32_t, int32_t, void*); typedef void (*vFiuuu_t)(int32_t, uint32_t, uint32_t, uint32_t); typedef void (*vFiulp_t)(int32_t, uint32_t, intptr_t, void*); @@ -1208,6 +1209,7 @@ typedef uintptr_t (*LFippL_t)(int32_t, void*, void*, uintptr_t); typedef uintptr_t (*LFippp_t)(int32_t, void*, void*, void*); typedef uintptr_t (*LFuipL_t)(uint32_t, int32_t, void*, uintptr_t); typedef uintptr_t (*LFpCii_t)(void*, uint8_t, int32_t, int32_t); +typedef uintptr_t (*LFpupL_t)(void*, uint32_t, void*, uintptr_t); typedef uintptr_t (*LFpLCL_t)(void*, uintptr_t, uint8_t, uintptr_t); typedef uintptr_t (*LFpLLp_t)(void*, uintptr_t, uintptr_t, void*); typedef uintptr_t (*LFpLpL_t)(void*, uintptr_t, void*, uintptr_t); @@ -1715,6 +1717,7 @@ typedef intptr_t (*lFipLpp_t)(int32_t, void*, uintptr_t, void*, void*); typedef intptr_t (*lFpuipC_t)(void*, uint32_t, int32_t, void*, uint8_t); typedef intptr_t (*lFpuuLL_t)(void*, uint32_t, uint32_t, uintptr_t, uintptr_t); typedef intptr_t (*lFppupp_t)(void*, void*, uint32_t, void*, void*); +typedef intptr_t (*lFppllp_t)(void*, void*, intptr_t, intptr_t, void*); typedef intptr_t (*lFppLpL_t)(void*, void*, uintptr_t, void*, uintptr_t); typedef intptr_t (*lFppLpp_t)(void*, void*, uintptr_t, void*, void*); typedef uintptr_t (*LFELppi_t)(x64emu_t*, uintptr_t, void*, void*, int32_t); @@ -2160,6 +2163,7 @@ typedef intptr_t (*lFipLipp_t)(int32_t, void*, uintptr_t, int32_t, void*, void*) typedef intptr_t (*lFipLpLL_t)(int32_t, void*, uintptr_t, void*, uintptr_t, uintptr_t); typedef intptr_t (*lFpipill_t)(void*, int32_t, void*, int32_t, intptr_t, intptr_t); typedef intptr_t (*lFpuuLLp_t)(void*, uint32_t, uint32_t, uintptr_t, uintptr_t, void*); +typedef intptr_t (*lFpplllp_t)(void*, void*, intptr_t, intptr_t, intptr_t, void*); typedef intptr_t (*lFppLipp_t)(void*, void*, uintptr_t, int32_t, void*, void*); typedef intptr_t (*lFpppLpp_t)(void*, void*, void*, uintptr_t, void*, void*); typedef uintptr_t (*LFEupppp_t)(x64emu_t*, uint32_t, void*, void*, void*, void*); @@ -3924,6 +3928,7 @@ void vFiiii(x64emu_t *emu, uintptr_t fcn) { vFiiii_t fn = (vFiiii_t)fcn; fn((int void vFiiip(x64emu_t *emu, uintptr_t fcn) { vFiiip_t fn = (vFiiip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); } void vFiiCp(x64emu_t *emu, uintptr_t fcn) { vFiiCp_t fn = (vFiiCp_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (uint8_t)R_RDX, (void*)R_RCX); } void vFiill(x64emu_t *emu, uintptr_t fcn) { vFiill_t fn = (vFiill_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX); } +void vFiipV(x64emu_t *emu, uintptr_t fcn) { vFiipV_t fn = (vFiipV_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } void vFiuip(x64emu_t *emu, uintptr_t fcn) { vFiuip_t fn = (vFiuip_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); } void vFiuuu(x64emu_t *emu, uintptr_t fcn) { vFiuuu_t fn = (vFiuuu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); } void vFiulp(x64emu_t *emu, uintptr_t fcn) { vFiulp_t fn = (vFiulp_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX); } @@ -4307,6 +4312,7 @@ void LFippL(x64emu_t *emu, uintptr_t fcn) { LFippL_t fn = (LFippL_t)fcn; R_RAX=( void LFippp(x64emu_t *emu, uintptr_t fcn) { LFippp_t fn = (LFippp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } void LFuipL(x64emu_t *emu, uintptr_t fcn) { LFuipL_t fn = (LFuipL_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); } void LFpCii(x64emu_t *emu, uintptr_t fcn) { LFpCii_t fn = (LFpCii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); } +void LFpupL(x64emu_t *emu, uintptr_t fcn) { LFpupL_t fn = (LFpupL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); } void LFpLCL(x64emu_t *emu, uintptr_t fcn) { LFpLCL_t fn = (LFpLCL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint8_t)R_RDX, (uintptr_t)R_RCX); } void LFpLLp(x64emu_t *emu, uintptr_t fcn) { LFpLLp_t fn = (LFpLLp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); } void LFpLpL(x64emu_t *emu, uintptr_t fcn) { LFpLpL_t fn = (LFpLpL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); } @@ -4814,6 +4820,7 @@ void lFipLpp(x64emu_t *emu, uintptr_t fcn) { lFipLpp_t fn = (lFipLpp_t)fcn; R_RA void lFpuipC(x64emu_t *emu, uintptr_t fcn) { lFpuipC_t fn = (lFpuipC_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uint8_t)R_R8); } void lFpuuLL(x64emu_t *emu, uintptr_t fcn) { lFpuuLL_t fn = (lFpuuLL_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); } void lFppupp(x64emu_t *emu, uintptr_t fcn) { lFppupp_t fn = (lFppupp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); } +void lFppllp(x64emu_t *emu, uintptr_t fcn) { lFppllp_t fn = (lFppllp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (void*)R_R8); } void lFppLpL(x64emu_t *emu, uintptr_t fcn) { lFppLpL_t fn = (lFppLpL_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); } void lFppLpp(x64emu_t *emu, uintptr_t fcn) { lFppLpp_t fn = (lFppLpp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void LFELppi(x64emu_t *emu, uintptr_t fcn) { LFELppi_t fn = (LFELppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); } @@ -5259,6 +5266,7 @@ void lFipLipp(x64emu_t *emu, uintptr_t fcn) { lFipLipp_t fn = (lFipLipp_t)fcn; R void lFipLpLL(x64emu_t *emu, uintptr_t fcn) { lFipLpLL_t fn = (lFipLpLL_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9); } void lFpipill(x64emu_t *emu, uintptr_t fcn) { lFpipill_t fn = (lFpipill_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9); } void lFpuuLLp(x64emu_t *emu, uintptr_t fcn) { lFpuuLLp_t fn = (lFpuuLLp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (void*)R_R9); } +void lFpplllp(x64emu_t *emu, uintptr_t fcn) { lFpplllp_t fn = (lFpplllp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (void*)R_R9); } void lFppLipp(x64emu_t *emu, uintptr_t fcn) { lFppLipp_t fn = (lFppLipp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); } void lFpppLpp(x64emu_t *emu, uintptr_t fcn) { lFpppLpp_t fn = (lFpppLpp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9); } void LFEupppp(x64emu_t *emu, uintptr_t fcn) { LFEupppp_t fn = (LFEupppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } @@ -7195,6 +7203,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &LFippp) return 1; if (fun == &LFuipL) return 1; if (fun == &LFpCii) return 1; + if (fun == &LFpupL) return 1; if (fun == &LFpLCL) return 1; if (fun == &LFpLLp) return 1; if (fun == &LFpLpL) return 1; @@ -7610,6 +7619,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &lFpuipC) return 1; if (fun == &lFpuuLL) return 1; if (fun == &lFppupp) return 1; + if (fun == &lFppllp) return 1; if (fun == &lFppLpL) return 1; if (fun == &lFppLpp) return 1; if (fun == &LFuiCiu) return 1; @@ -7977,6 +7987,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &lFipLpLL) return 1; if (fun == &lFpipill) return 1; if (fun == &lFpuuLLp) return 1; + if (fun == &lFpplllp) return 1; if (fun == &lFppLipp) return 1; if (fun == &lFpppLpp) return 1; if (fun == &LFpipipi) return 1; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 81024d37..3c6ad602 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -825,6 +825,7 @@ void vFiiii(x64emu_t *emu, uintptr_t fnc); void vFiiip(x64emu_t *emu, uintptr_t fnc); void vFiiCp(x64emu_t *emu, uintptr_t fnc); void vFiill(x64emu_t *emu, uintptr_t fnc); +void vFiipV(x64emu_t *emu, uintptr_t fnc); void vFiuip(x64emu_t *emu, uintptr_t fnc); void vFiuuu(x64emu_t *emu, uintptr_t fnc); void vFiulp(x64emu_t *emu, uintptr_t fnc); @@ -1208,6 +1209,7 @@ void LFippL(x64emu_t *emu, uintptr_t fnc); void LFippp(x64emu_t *emu, uintptr_t fnc); void LFuipL(x64emu_t *emu, uintptr_t fnc); void LFpCii(x64emu_t *emu, uintptr_t fnc); +void LFpupL(x64emu_t *emu, uintptr_t fnc); void LFpLCL(x64emu_t *emu, uintptr_t fnc); void LFpLLp(x64emu_t *emu, uintptr_t fnc); void LFpLpL(x64emu_t *emu, uintptr_t fnc); @@ -1715,6 +1717,7 @@ void lFipLpp(x64emu_t *emu, uintptr_t fnc); void lFpuipC(x64emu_t *emu, uintptr_t fnc); void lFpuuLL(x64emu_t *emu, uintptr_t fnc); void lFppupp(x64emu_t *emu, uintptr_t fnc); +void lFppllp(x64emu_t *emu, uintptr_t fnc); void lFppLpL(x64emu_t *emu, uintptr_t fnc); void lFppLpp(x64emu_t *emu, uintptr_t fnc); void LFELppi(x64emu_t *emu, uintptr_t fnc); @@ -2160,6 +2163,7 @@ void lFipLipp(x64emu_t *emu, uintptr_t fnc); void lFipLpLL(x64emu_t *emu, uintptr_t fnc); void lFpipill(x64emu_t *emu, uintptr_t fnc); void lFpuuLLp(x64emu_t *emu, uintptr_t fnc); +void lFpplllp(x64emu_t *emu, uintptr_t fnc); void lFppLipp(x64emu_t *emu, uintptr_t fnc); void lFpppLpp(x64emu_t *emu, uintptr_t fnc); void LFEupppp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index 52eebf0a..76a7a9a4 100644 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -297,7 +297,7 @@ GOW(erand48_r, iFppp) GOM(err, vFEipV) //DATAB(errno, GO(__errno_location, pFv) -//GOW(error, vFiipV) +GOW(error, vFiipV) //GOW(error_at_line, vFiipupV) //DATAB(error_message_count, //DATAB(error_one_per_line, @@ -980,6 +980,7 @@ GO2(__isoc23_strtol, lFppi, strtol) GO2(__isoc23_strtoll, IFppi, strtoll) GO2(__isoc23_strtoul, LFppi, strtoul) GO2(__isoc23_strtoull, UFppi, strtoull) +GO2(__isoc23_wcstol, LFppi, wcstol) GOM(__isoc99_fscanf, iFEppV) //GO(__isoc99_fwscanf, iFppV) GOM(__isoc99_scanf, iFEpV) @@ -1560,7 +1561,7 @@ GOWM(register_printf_specifier, iFEipp) GOWM(register_printf_type, iFEp) //GO(registerrpc, // Deprecated? GO(remap_file_pages, iFpLiLi) -//GOW(re_match, iFppii!) +GOW(re_match, lFppllp) //GOW(re_match_2, iFppipii!i) //DATA(re_max_failures, GO(remove, iFp) @@ -1570,7 +1571,7 @@ GO(rename, iFpp) GOW(renameat, iFipip) GOW(renameat2, iFipipu) //DATAB(_res, -//GOW(re_search, iFppiii!) +GOW(re_search, lFpplllp) //GOW(re_search_2, iFppipiii!i) //GOW(re_set_registers, vFp!upp) GOW(re_set_syntax, LFL) @@ -1579,6 +1580,7 @@ GO(__res_iclose, vFpi) GO(__res_init, iFv) GO(__res_nclose, vFp) GO(__res_ninit, iFp) +GO(res_nsearch, iFppiipi) //GO(__resolv_context_get, //GO(__resolv_context_get_override, //GO(__resolv_context_get_preinit, @@ -2209,7 +2211,7 @@ GOW(wcpcpy, pFpp) GO(wcpncpy, pFppL) //GO(__wcpncpy_chk, GO(wcrtomb, LFpup) -//GO(__wcrtomb_chk, +GO(__wcrtomb_chk, LFpupL) GOW(wcscasecmp, iFpp) GO(__wcscasecmp_l, iFppp) GOW(wcscasecmp_l, iFppp) |