about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-13 16:42:21 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-13 16:42:21 +0100
commit5bf154195d7be2db877f55a3ee541c9a64ebe4e9 (patch)
tree75a66292a44a45d703ae0353e9f5f795f57134e8 /src
parent0239305f69dbafc701eb8f9ec63723dc70abf9b5 (diff)
downloadbox64-5bf154195d7be2db877f55a3ee541c9a64ebe4e9.tar.gz
box64-5bf154195d7be2db877f55a3ee541c9a64ebe4e9.zip
[BOX32][WRAPPER] Added a few more 32bits wrapped libc functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped32/generated/functions_list.txt7
-rw-r--r--src/wrapped32/generated/wrappedlibctypes32.h6
-rw-r--r--src/wrapped32/generated/wrapper32.c2
-rw-r--r--src/wrapped32/generated/wrapper32.h1
-rwxr-xr-xsrc/wrapped32/wrappedlibc.c17
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h6
6 files changed, 32 insertions, 7 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index 7905325b..c610718c 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -920,6 +920,7 @@
 #() iFpppi -> iFpppi
 #() iFpppu -> iFpppu
 #() iEpppL -> iEpppL
+#() iEpppp -> iEpppp
 #() iFpppp -> iFpppp
 #() iESpiL -> iESpiL
 #() iFXiii -> iFXiii
@@ -1930,13 +1931,14 @@ wrappedlibc:
 - pFL:
   - _ZGTtnaX
   - _ZGTtnam
-- pFp:
-  - gethostbyname
 - pEp:
+  - getgrnam
   - getprotobyname
   - getpwnam
   - gmtime
   - localtime
+- pFp:
+  - gethostbyname
 - pES:
   - getmntent
 - iEbp_:
@@ -1995,6 +1997,7 @@ wrappedlibc:
 - vEipp:
   - vsyslog
 - vEipV:
+  - syslog
 - vEpuu:
 - vEpup:
   - _ITM_addUserCommitAction
diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h
index c5b6db2d..25ad6055 100644
--- a/src/wrapped32/generated/wrappedlibctypes32.h
+++ b/src/wrapped32/generated/wrappedlibctypes32.h
@@ -32,8 +32,8 @@ typedef void* (*pEu_t)(uint32_t);
 typedef void* (*pFu_t)(uint32_t);
 typedef void* (*pEL_t)(uintptr_t);
 typedef void* (*pFL_t)(uintptr_t);
-typedef void* (*pFp_t)(void*);
 typedef void* (*pEp_t)(void*);
+typedef void* (*pFp_t)(void*);
 typedef void* (*pES_t)(void*);
 typedef int32_t (*iEbp__t)(struct_p_t*);
 typedef void* (*pErl__t)(struct_l_t*);
@@ -160,11 +160,12 @@ typedef int32_t (*iFpuippupp_t)(void*, uint32_t, int32_t, void*, void*, uint32_t
 	GO(_ZGTtnaj, pFu_t) \
 	GO(_ZGTtnaX, pFL_t) \
 	GO(_ZGTtnam, pFL_t) \
-	GO(gethostbyname, pFp_t) \
+	GO(getgrnam, pEp_t) \
 	GO(getprotobyname, pEp_t) \
 	GO(getpwnam, pEp_t) \
 	GO(gmtime, pEp_t) \
 	GO(localtime, pEp_t) \
+	GO(gethostbyname, pFp_t) \
 	GO(getmntent, pES_t) \
 	GO(getifaddrs, iEbp__t) \
 	GO(ctime, pErl__t) \
@@ -196,6 +197,7 @@ typedef int32_t (*iFpuippupp_t)(void*, uint32_t, int32_t, void*, void*, uint32_t
 	GO(gmtime_r, pEpp_t) \
 	GO(localtime_r, pEpp_t) \
 	GO(vsyslog, vEipp_t) \
+	GO(syslog, vEipV_t) \
 	GO(_ITM_addUserCommitAction, vEpup_t) \
 	GO(posix_spawn_file_actions_adddup2, iEpii_t) \
 	GO(regcomp, iEppi_t) \
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 8b6ba9c0..351d4b9b 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -1011,6 +1011,7 @@ typedef int32_t (*iFppLi_t)(void*, void*, uintptr_t, int32_t);
 typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t);
 typedef int32_t (*iFpppu_t)(void*, void*, void*, uint32_t);
 typedef int32_t (*iEpppL_t)(void*, void*, void*, uintptr_t);
+typedef int32_t (*iEpppp_t)(void*, void*, void*, void*);
 typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
 typedef int32_t (*iESpiL_t)(void*, void*, int32_t, uintptr_t);
 typedef int32_t (*iFXiii_t)(void*, int32_t, int32_t, int32_t);
@@ -2771,6 +2772,7 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fcn) { iFppLi_t fn = (iFppLi_t)fcn; R_EA
 void iFpppi_32(x64emu_t *emu, uintptr_t fcn) { iFpppi_t fn = (iFpppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iFpppu_32(x64emu_t *emu, uintptr_t fcn) { iFpppu_t fn = (iFpppu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); }
 void iEpppL_32(x64emu_t *emu, uintptr_t fcn) { iEpppL_t fn = (iEpppL_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); emu->libc_err = errno; }
+void iEpppp_32(x64emu_t *emu, uintptr_t fcn) { iEpppp_t fn = (iEpppp_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); emu->libc_err = errno; }
 void iFpppp_32(x64emu_t *emu, uintptr_t fcn) { iFpppp_t fn = (iFpppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void iESpiL_32(x64emu_t *emu, uintptr_t fcn) { iESpiL_t fn = (iESpiL_t)fcn; errno = emu->libc_err; R_EAX = fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); emu->libc_err = errno; }
 void iFXiii_32(x64emu_t *emu, uintptr_t fcn) { iFXiii_t fn = (iFXiii_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 51d50e4a..0ac3fc19 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -961,6 +961,7 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppi_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppu_32(x64emu_t *emu, uintptr_t fnc);
 void iEpppL_32(x64emu_t *emu, uintptr_t fnc);
+void iEpppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppp_32(x64emu_t *emu, uintptr_t fnc);
 void iESpiL_32(x64emu_t *emu, uintptr_t fnc);
 void iFXiii_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c
index 1456d4db..2aa9382a 100755
--- a/src/wrapped32/wrappedlibc.c
+++ b/src/wrapped32/wrappedlibc.c
@@ -728,6 +728,11 @@ EXPORT int my32_vsyslog(x64emu_t* emu, int priority, void* fmt, void* b) {
     PREPARE_VALIST_32;
     return vsyslog(priority, (const char*)fmt, VARARGS_32);
 }
+EXPORT int my32_syslog(x64emu_t* emu, int priority, void* fmt, void* b) {
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    return vsyslog(priority, (const char*)fmt, VARARGS_32);
+}
 EXPORT int my32___vsyslog_chk(x64emu_t* emu, int priority, int flag, void* fmt, void* b) {
     myStackAlign32((const char*)fmt, b, emu->scratch);
     PREPARE_VALIST_32;
@@ -2263,6 +2268,18 @@ EXPORT int my32_getgrnam_r(x64emu_t* emu, const char* name, struct i386_group *g
     return ret;
 }
 
+EXPORT void* my32_getgrnam(x64emu_t* emu, void* name)
+{
+    static struct i386_group ret;
+    struct group *grp = getgrnam(name);
+    if(!grp) return NULL;
+    ret.gr_name = to_ptrv(grp->gr_name);
+    ret.gr_passwd = to_ptrv(grp->gr_passwd);
+    ret.gr_gid = grp->gr_gid;
+    ret.gr_mem = to_ptrv(grp->gr_mem);
+    return &ret;
+}
+
 EXPORT int my32_getgrgid_r(x64emu_t* emu, gid_t gid, struct i386_group *grp, char *buf, size_t buflen, ptr_t* result)
 {
     struct group _result = {0};
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index 4766b578..b7c539e4 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -494,7 +494,7 @@ GOW(getgid, uEv)
 // getgrent_r
 //GO(getgrgid, pEu)
 GOM(getgrgid_r, iEEuppLp)
-//GO(getgrnam, pEp)
+GOM(getgrnam, pEEp)
 GOM(getgrnam_r, iEEpppLp)
 GO(getgrouplist, iEpipp)
 GOW(getgroups, iEip)
@@ -709,7 +709,7 @@ GO(inet_pton, iEipp)
 // initstate    // Weak
 //GOW(initstate_r, iEupup)
 // inl  // Weak
-// innetgr
+GO(innetgr, iEpppp)
 GO(inotify_add_watch, iEipu)
 GO(inotify_init, iEv)
 GO(inotify_init1, iEi)
@@ -1789,7 +1789,7 @@ GO2(__sysconf, lEEi, my_sysconf)
 //DATA(_sys_errlist, 4)
 //DATA(sys_errlist, 4)
 GOM(sysinfo, iEp)   //%noE
-//GO2(syslog, vEipV, vsyslog)
+GOM(syslog, vEEipV)
 GOM(__syslog_chk, vEEiipV)
 //DATA(_sys_nerr, 4)    // type R
 //DATA(sys_nerr, 4) // type R