about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYip Coekjan <69834864+Coekjan@users.noreply.github.com>2024-07-04 22:31:26 +0800
committerGitHub <noreply@github.com>2024-07-04 16:31:26 +0200
commita69368e8556e968f32d6a0b2ee2b7d80c6c9c586 (patch)
tree82bb157bec503d703599d986e3f04fb11c0d9e67 /src
parent84b0e2f113a36fb364a7389eb03b08d99d61f3d1 (diff)
downloadbox64-a69368e8556e968f32d6a0b2ee2b7d80c6c9c586.tar.gz
box64-a69368e8556e968f32d6a0b2ee2b7d80c6c9c586.zip
Wrap some functions for libc (#1635)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt4
-rw-r--r--src/wrapped/generated/wrapper.c11
-rw-r--r--src/wrapped/generated/wrapper.h4
-rw-r--r--src/wrapped/wrappedlibc_private.h10
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)