about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-26 22:40:12 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-26 22:40:12 +0100
commit886999bc5b24d90fa609e514566279a870d71de0 (patch)
tree2df59a3d7215f42e2db736951ce788a1250afa1a /src
parent1a750182d625a80d4f89fa9f046a447f0cd50aed (diff)
downloadbox64-886999bc5b24d90fa609e514566279a870d71de0.tar.gz
box64-886999bc5b24d90fa609e514566279a870d71de0.zip
Added more libc wrapped functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt5
-rw-r--r--src/wrapped/generated/wrapper.c10
-rw-r--r--src/wrapped/generated/wrapper.h5
-rwxr-xr-xsrc/wrapped/wrappedlibc.c7
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h47
-rwxr-xr-xsrc/wrapped/wrappedlibpthread_private.h2
6 files changed, 51 insertions, 25 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index a435142a..a0cd077a 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -89,6 +89,7 @@
 #() iFiI
 #() iFiu
 #() iFiU
+#() iFil
 #() iFip
 #() iFIi
 #() iFui
@@ -231,6 +232,7 @@
 #() iFiuu
 #() iFiLN
 #() iFipu
+#() iFipL
 #() iFipp
 #() iFuuu
 #() iFuup
@@ -238,6 +240,7 @@
 #() iFuLL
 #() iFfff
 #() iFLip
+#() iFLLp
 #() iFLpp
 #() iFpii
 #() iFpiu
@@ -419,10 +422,12 @@
 #() iFiiii
 #() iFiiiu
 #() iFiiip
+#() iFiiiN
 #() iFiipp
 #() iFiuii
 #() iFipii
 #() iFipui
+#() iFipLp
 #() iFippi
 #() iFippu
 #() iFippL
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 976ac700..f54215dc 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -122,6 +122,7 @@ typedef int32_t (*iFii_t)(int32_t, int32_t);
 typedef int32_t (*iFiI_t)(int32_t, int64_t);
 typedef int32_t (*iFiu_t)(int32_t, uint32_t);
 typedef int32_t (*iFiU_t)(int32_t, uint64_t);
+typedef int32_t (*iFil_t)(int32_t, intptr_t);
 typedef int32_t (*iFip_t)(int32_t, void*);
 typedef int32_t (*iFIi_t)(int64_t, int32_t);
 typedef int32_t (*iFui_t)(uint32_t, int32_t);
@@ -264,6 +265,7 @@ typedef int32_t (*iFiiO_t)(int32_t, int32_t, int32_t);
 typedef int32_t (*iFiuu_t)(int32_t, uint32_t, uint32_t);
 typedef int32_t (*iFiLN_t)(int32_t, uintptr_t, ...);
 typedef int32_t (*iFipu_t)(int32_t, void*, uint32_t);
+typedef int32_t (*iFipL_t)(int32_t, void*, uintptr_t);
 typedef int32_t (*iFipp_t)(int32_t, void*, void*);
 typedef int32_t (*iFuuu_t)(uint32_t, uint32_t, uint32_t);
 typedef int32_t (*iFuup_t)(uint32_t, uint32_t, void*);
@@ -271,6 +273,7 @@ typedef int32_t (*iFuff_t)(uint32_t, float, float);
 typedef int32_t (*iFuLL_t)(uint32_t, uintptr_t, uintptr_t);
 typedef int32_t (*iFfff_t)(float, float, float);
 typedef int32_t (*iFLip_t)(uintptr_t, int32_t, void*);
+typedef int32_t (*iFLLp_t)(uintptr_t, uintptr_t, void*);
 typedef int32_t (*iFLpp_t)(uintptr_t, void*, void*);
 typedef int32_t (*iFpii_t)(void*, int32_t, int32_t);
 typedef int32_t (*iFpiu_t)(void*, int32_t, uint32_t);
@@ -452,10 +455,12 @@ typedef int32_t (*iFEpOu_t)(x64emu_t*, void*, int32_t, uint32_t);
 typedef int32_t (*iFiiii_t)(int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFiiiu_t)(int32_t, int32_t, int32_t, uint32_t);
 typedef int32_t (*iFiiip_t)(int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFiiiN_t)(int32_t, int32_t, int32_t, ...);
 typedef int32_t (*iFiipp_t)(int32_t, int32_t, void*, void*);
 typedef int32_t (*iFiuii_t)(int32_t, uint32_t, int32_t, int32_t);
 typedef int32_t (*iFipii_t)(int32_t, void*, int32_t, int32_t);
 typedef int32_t (*iFipui_t)(int32_t, void*, uint32_t, int32_t);
+typedef int32_t (*iFipLp_t)(int32_t, void*, uintptr_t, void*);
 typedef int32_t (*iFippi_t)(int32_t, void*, void*, int32_t);
 typedef int32_t (*iFippu_t)(int32_t, void*, void*, uint32_t);
 typedef int32_t (*iFippL_t)(int32_t, void*, void*, uintptr_t);
@@ -1194,6 +1199,7 @@ void iFii(x64emu_t *emu, uintptr_t fcn) { iFii_t fn = (iFii_t)fcn; R_RAX=fn((int
 void iFiI(x64emu_t *emu, uintptr_t fcn) { iFiI_t fn = (iFiI_t)fcn; R_RAX=fn((int32_t)R_RDI, (int64_t)R_RSI); }
 void iFiu(x64emu_t *emu, uintptr_t fcn) { iFiu_t fn = (iFiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI); }
 void iFiU(x64emu_t *emu, uintptr_t fcn) { iFiU_t fn = (iFiU_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint64_t)R_RSI); }
+void iFil(x64emu_t *emu, uintptr_t fcn) { iFil_t fn = (iFil_t)fcn; R_RAX=fn((int32_t)R_RDI, (intptr_t)R_RSI); }
 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 iFIi(x64emu_t *emu, uintptr_t fcn) { iFIi_t fn = (iFIi_t)fcn; R_RAX=fn((int64_t)R_RDI, (int32_t)R_RSI); }
 void iFui(x64emu_t *emu, uintptr_t fcn) { iFui_t fn = (iFui_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI); }
@@ -1336,6 +1342,7 @@ void iFiiO(x64emu_t *emu, uintptr_t fcn) { iFiiO_t fn = (iFiiO_t)fcn; R_RAX=fn((
 void iFiuu(x64emu_t *emu, uintptr_t fcn) { iFiuu_t fn = (iFiuu_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void iFiLN(x64emu_t *emu, uintptr_t fcn) { iFiLN_t fn = (iFiLN_t)fcn; R_RAX=fn((int32_t)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
 void iFipu(x64emu_t *emu, uintptr_t fcn) { iFipu_t fn = (iFipu_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void iFipL(x64emu_t *emu, uintptr_t fcn) { iFipL_t fn = (iFipL_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
 void iFipp(x64emu_t *emu, uintptr_t fcn) { iFipp_t fn = (iFipp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFuuu(x64emu_t *emu, uintptr_t fcn) { iFuuu_t fn = (iFuuu_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void iFuup(x64emu_t *emu, uintptr_t fcn) { iFuup_t fn = (iFuup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
@@ -1343,6 +1350,7 @@ void iFuff(x64emu_t *emu, uintptr_t fcn) { iFuff_t fn = (iFuff_t)fcn; R_RAX=fn((
 void iFuLL(x64emu_t *emu, uintptr_t fcn) { iFuLL_t fn = (iFuLL_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX); }
 void iFfff(x64emu_t *emu, uintptr_t fcn) { iFfff_t fn = (iFfff_t)fcn; R_RAX=fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
 void iFLip(x64emu_t *emu, uintptr_t fcn) { iFLip_t fn = (iFLip_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void iFLLp(x64emu_t *emu, uintptr_t fcn) { iFLLp_t fn = (iFLLp_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
 void iFLpp(x64emu_t *emu, uintptr_t fcn) { iFLpp_t fn = (iFLpp_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFpii(x64emu_t *emu, uintptr_t fcn) { iFpii_t fn = (iFpii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void iFpiu(x64emu_t *emu, uintptr_t fcn) { iFpiu_t fn = (iFpiu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
@@ -1524,10 +1532,12 @@ void iFEpOu(x64emu_t *emu, uintptr_t fcn) { iFEpOu_t fn = (iFEpOu_t)fcn; R_RAX=f
 void iFiiii(x64emu_t *emu, uintptr_t fcn) { iFiiii_t fn = (iFiiii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFiiiu(x64emu_t *emu, uintptr_t fcn) { iFiiiu_t fn = (iFiiiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
 void iFiiip(x64emu_t *emu, uintptr_t fcn) { iFiiip_t fn = (iFiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void iFiiiN(x64emu_t *emu, uintptr_t fcn) { iFiiiN_t fn = (iFiiiN_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void iFiipp(x64emu_t *emu, uintptr_t fcn) { iFiipp_t fn = (iFiipp_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFiuii(x64emu_t *emu, uintptr_t fcn) { iFiuii_t fn = (iFiuii_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFipii(x64emu_t *emu, uintptr_t fcn) { iFipii_t fn = (iFipii_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFipui(x64emu_t *emu, uintptr_t fcn) { iFipui_t fn = (iFipui_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
+void iFipLp(x64emu_t *emu, uintptr_t fcn) { iFipLp_t fn = (iFipLp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
 void iFippi(x64emu_t *emu, uintptr_t fcn) { iFippi_t fn = (iFippi_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void iFippu(x64emu_t *emu, uintptr_t fcn) { iFippu_t fn = (iFippu_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
 void iFippL(x64emu_t *emu, uintptr_t fcn) { iFippL_t fn = (iFippL_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index d523dae8..246d949a 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -119,6 +119,7 @@ void iFii(x64emu_t *emu, uintptr_t fnc);
 void iFiI(x64emu_t *emu, uintptr_t fnc);
 void iFiu(x64emu_t *emu, uintptr_t fnc);
 void iFiU(x64emu_t *emu, uintptr_t fnc);
+void iFil(x64emu_t *emu, uintptr_t fnc);
 void iFip(x64emu_t *emu, uintptr_t fnc);
 void iFIi(x64emu_t *emu, uintptr_t fnc);
 void iFui(x64emu_t *emu, uintptr_t fnc);
@@ -261,6 +262,7 @@ void iFiiO(x64emu_t *emu, uintptr_t fnc);
 void iFiuu(x64emu_t *emu, uintptr_t fnc);
 void iFiLN(x64emu_t *emu, uintptr_t fnc);
 void iFipu(x64emu_t *emu, uintptr_t fnc);
+void iFipL(x64emu_t *emu, uintptr_t fnc);
 void iFipp(x64emu_t *emu, uintptr_t fnc);
 void iFuuu(x64emu_t *emu, uintptr_t fnc);
 void iFuup(x64emu_t *emu, uintptr_t fnc);
@@ -268,6 +270,7 @@ void iFuff(x64emu_t *emu, uintptr_t fnc);
 void iFuLL(x64emu_t *emu, uintptr_t fnc);
 void iFfff(x64emu_t *emu, uintptr_t fnc);
 void iFLip(x64emu_t *emu, uintptr_t fnc);
+void iFLLp(x64emu_t *emu, uintptr_t fnc);
 void iFLpp(x64emu_t *emu, uintptr_t fnc);
 void iFpii(x64emu_t *emu, uintptr_t fnc);
 void iFpiu(x64emu_t *emu, uintptr_t fnc);
@@ -449,10 +452,12 @@ void iFEpOu(x64emu_t *emu, uintptr_t fnc);
 void iFiiii(x64emu_t *emu, uintptr_t fnc);
 void iFiiiu(x64emu_t *emu, uintptr_t fnc);
 void iFiiip(x64emu_t *emu, uintptr_t fnc);
+void iFiiiN(x64emu_t *emu, uintptr_t fnc);
 void iFiipp(x64emu_t *emu, uintptr_t fnc);
 void iFiuii(x64emu_t *emu, uintptr_t fnc);
 void iFipii(x64emu_t *emu, uintptr_t fnc);
 void iFipui(x64emu_t *emu, uintptr_t fnc);
+void iFipLp(x64emu_t *emu, uintptr_t fnc);
 void iFippi(x64emu_t *emu, uintptr_t fnc);
 void iFippu(x64emu_t *emu, uintptr_t fnc);
 void iFippL(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index aec74599..dd97a144 100755
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -530,6 +530,7 @@ int EXPORT my_uname(struct utsname *buf)
     GO(O_NOFOLLOW)  \
     GO(O_NOATIME)   \
     GO(O_CLOEXEC)   \
+    GO(O_TMPFILE)   \
 
 // x86->arm
 int of_convert(int a)
@@ -721,6 +722,12 @@ EXPORT int my_asprintf(x64emu_t* emu, void** buff, void * fmt, void * b, va_list
 EXPORT int my___asprintf(x64emu_t* emu, void** buff, void * fmt, void * b, va_list V) __attribute__((alias("my_asprintf")));
 #endif
 
+EXPORT int my_vasprintf(x64emu_t* emu, char** buff, void* fmt, x64_va_list_t b) {
+    CONVERT_VALIST(b);
+
+    return vasprintf(buff, fmt, VARARGS);
+}
+
 EXPORT int my_vsprintf(x64emu_t* emu, void* buff,  void * fmt, x64_va_list_t b) {
     CONVERT_VALIST(b);
 
diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h
index c93ac5bf..31566a19 100755
--- a/src/wrapped/wrappedlibc_private.h
+++ b/src/wrapped/wrappedlibc_private.h
@@ -4,6 +4,7 @@
 
 //socklen_t is u32
 // typedef unsigned long int nfds_t;
+// key_t is S32
 
 //GO(a64l, 
 GO(abort, vFv)
@@ -427,8 +428,8 @@ GOW(ftello, lFp)
 GO(__ftello64, IFp)
 GOW(ftello64, IFp)
 //GO(ftime, 
-//GO(ftok, 
-//GOW(ftruncate, 
+GO(ftok, iFpi)
+GOW(ftruncate, iFil)
 GOW(ftruncate64, iFiI)
 //GOW(ftrylockfile, 
 //GOW(fts64_children, 
@@ -518,7 +519,7 @@ GO(getgrent, pFv)
 //GO(gethostent, 
 //GO(gethostent_r, 
 //GO(gethostid, 
-//GOW(gethostname, 
+GOW(gethostname, iFpL)
 //GO(__gethostname_chk, 
 //GOW(getifaddrs, 
 //GO(getipv4sourcefilter, 
@@ -1018,9 +1019,9 @@ GOM(lfind, pFEpppLp)
 //GO(__libc_alloc_buffer_create_failure, 
 //GO(__libc_calloc, 
 //GO(__libc_clntudp_bufcreate, 
-//GO(__libc_current_sigrtmax, 
+GO(__libc_current_sigrtmax, iFv)
 //GO(__libc_current_sigrtmax_private, 
-//GO(__libc_current_sigrtmin, 
+GO(__libc_current_sigrtmin, iFv)
 //GO(__libc_current_sigrtmin_private, 
 //GO(__libc_dlclose, 
 //GO(__libc_dlopen_mode, 
@@ -1558,22 +1559,20 @@ GOM(scandir64, iFEpppp) //weak
 //GO(scandirat64, 
 //GO(scanf, 
 //GO(__sched_cpualloc, 
-//GOI(__sched_cpucount, 
+GO(__sched_cpucount, iFLp)
 //GO(__sched_cpufree, 
-//GO(sched_getaffinity, 
-//GO(sched_getaffinity, 
+GO(sched_getaffinity, iFLLp)
 //GO(sched_getcpu, 
-//GO(__sched_getparam, 
-//GOW(sched_getparam, 
-//GO(__sched_get_priority_max, 
-//GOW(sched_get_priority_max, 
-//GO(__sched_get_priority_min, 
-//GOW(sched_get_priority_min, 
+GO(__sched_getparam, iFLp)
+GOW(sched_getparam, iFLp)
+GO(__sched_get_priority_max, iFi)
+GOW(sched_get_priority_max, iFi)
+GO(__sched_get_priority_min, iFi)
+GOW(sched_get_priority_min, iFi)
 //GO(__sched_getscheduler, 
 //GOW(sched_getscheduler, 
 //GOW(sched_rr_get_interval, 
-//GO(sched_setaffinity, 
-//GO(sched_setaffinity, 
+GO(sched_setaffinity, iFLLp)
 //GOW(sched_setparam, 
 //GO(__sched_setscheduler, 
 //GOW(sched_setscheduler, 
@@ -1586,10 +1585,10 @@ GOW(secure_getenv, pFp)
 GO(seekdir, vFpi)
 GO(__select, iFipppp)
 GOW(select, iFipppp)
-//GO(semctl, 
-//GO(semget, 
-//GO(semop, 
-//GO(semtimedop, 
+GO(semctl, iFiiiN)
+GO(semget, iFiii)
+GO(semop, iFipL)
+GO(semtimedop, iFipLp)
 GO(__send, lFipLi)
 GOW(send, lFipLi)
 GO(sendfile, lFiipL)
@@ -1615,7 +1614,7 @@ GOW(setenv, iFppi)
 //GO(setgroups, 
 //GO(sethostent, 
 //GO(sethostid, 
-//GO(sethostname, 
+GO(sethostname, iFpL)
 //GO(setipv4sourcefilter, 
 //GOW(setitimer, 
 GOM(_setjmp, iFEp)
@@ -1688,8 +1687,8 @@ GO(sigismember, iFpi)
 //GOW(siglongjmp, 
 GOM(signal, pFEip)  //Weak
 //GO(signalfd, 
-//GO(__signbit, 
-//GO(__signbitf, 
+GO(__signbit, iFd)
+GO(__signbitf, iFf)
 //GO(__signbitl, 
 //GO(sigorset, 
 //GO(__sigpause, 
@@ -2036,7 +2035,7 @@ GO(usleep, iFu)
 //GOW(utmpname, 
 //GO(utmpxname, 
 GOW(valloc, pFL)
-//GOW(vasprintf, 
+GOM(vasprintf, iFEppp)   //weak
 //GO(__vasprintf_chk, 
 //GOW(vdprintf, 
 //GO(__vdprintf_chk, 
diff --git a/src/wrapped/wrappedlibpthread_private.h b/src/wrapped/wrappedlibpthread_private.h
index 56e341b1..f80d3e15 100755
--- a/src/wrapped/wrappedlibpthread_private.h
+++ b/src/wrapped/wrappedlibpthread_private.h
@@ -74,7 +74,7 @@ GO(pthread_detach, iFL)
 GO(pthread_equal, iFLL)
 //GOM(pthread_exit, vFEp)
 //GOM(pthread_getaffinity_np, iFEpup)
-//GO(pthread_getattr_np, iFup)
+GO(pthread_getattr_np, iFLp)
 //GO(pthread_getconcurrency, iFv)
 //GO(pthread_getcpuclockid, iFup)
 GO(pthread_getschedparam, iFLpp)