diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 22:40:12 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 22:40:12 +0100 |
| commit | 886999bc5b24d90fa609e514566279a870d71de0 (patch) | |
| tree | 2df59a3d7215f42e2db736951ce788a1250afa1a /src | |
| parent | 1a750182d625a80d4f89fa9f046a447f0cd50aed (diff) | |
| download | box64-886999bc5b24d90fa609e514566279a870d71de0.tar.gz box64-886999bc5b24d90fa609e514566279a870d71de0.zip | |
Added more libc wrapped functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 5 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 10 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 5 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 7 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 47 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibpthread_private.h | 2 |
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) |