diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-21 14:55:42 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-21 14:55:42 +0200 |
| commit | e34afea34613a0e8d4e96069027324944b1d1116 (patch) | |
| tree | 9a103af397b660b9c81db5e4d2745385abe8fbc8 /src | |
| parent | 1ea71c89a817e6165e9fe2f4a2a743338b68c366 (diff) | |
| download | box64-e34afea34613a0e8d4e96069027324944b1d1116.tar.gz box64-e34afea34613a0e8d4e96069027324944b1d1116.zip | |
[BOX32] Added some more 32bits wrapped functions
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/myalign32.h | 11 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 3 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibctypes32.h | 1 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 4 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 2 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc.c | 27 | ||||
| -rwxr-xr-x | src/wrapped32/wrappedlibc_private.h | 10 |
7 files changed, 41 insertions, 17 deletions
diff --git a/src/include/myalign32.h b/src/include/myalign32.h index 515b0ff5..dbbb0c9a 100755 --- a/src/include/myalign32.h +++ b/src/include/myalign32.h @@ -500,5 +500,14 @@ void UnalignIOV_32(void* dest, void* source); // Native -> x86 void AlignMsgHdr_32(void* dest, void* dest_iov, void* source); // x86 -> Native //void UnalignMsgHdr_32(void* dest, void* source, void* source_iov); // Native -> x86 - +struct i386_passwd +{ + ptr_t pw_name; // char* + ptr_t pw_passwd; // char* + __uid_t pw_uid; + __gid_t pw_gid; + ptr_t pw_gecos; // char* + ptr_t pw_dir; // char* + ptr_t pw_shell; // char* +}; #endif//__MY_ALIGN32__H_ \ No newline at end of file diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 7b9ea79d..d615e4b8 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -98,6 +98,7 @@ #() vFlp -> vFlp #() vFpC -> vFpC #() vFpu -> vFpu +#() vFpL -> vFpL #() vFpp -> vFpp #() vFSp -> vFSp #() wFpi -> wFpi @@ -172,6 +173,7 @@ #() pFpu -> pFpu #() pFpL -> pFpL #() pFpp -> pFpp +#() SFip -> SFip #() SFpp -> SFpp #() tFip -> tFip #() tFpL -> tFpL @@ -928,6 +930,7 @@ wrappedlibc: - pFL: - pFp: - gethostbyname + - getpwnam - gmtime - localtime - pFS: diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h index 62d29a80..84db2acd 100644 --- a/src/wrapped32/generated/wrappedlibctypes32.h +++ b/src/wrapped32/generated/wrappedlibctypes32.h @@ -105,6 +105,7 @@ typedef void* (*pFiiiiiiiiilt_t)(int32_t, int32_t, int32_t, int32_t, int32_t, in GO(localeconv, pFv_t) \ GO(getpwuid, pFu_t) \ GO(gethostbyname, pFp_t) \ + GO(getpwnam, pFp_t) \ GO(gmtime, pFp_t) \ GO(localtime, pFp_t) \ GO(getmntent, pFS_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 42122443..62effb9f 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -185,6 +185,7 @@ typedef void (*vFlu_t)(intptr_t, uint32_t); typedef void (*vFlp_t)(intptr_t, void*); typedef void (*vFpC_t)(void*, uint8_t); typedef void (*vFpu_t)(void*, uint32_t); +typedef void (*vFpL_t)(void*, uintptr_t); typedef void (*vFpp_t)(void*, void*); typedef void (*vFSp_t)(void*, void*); typedef int16_t (*wFpi_t)(void*, int32_t); @@ -259,6 +260,7 @@ typedef void* (*pFpi_t)(void*, int32_t); typedef void* (*pFpu_t)(void*, uint32_t); typedef void* (*pFpL_t)(void*, uintptr_t); typedef void* (*pFpp_t)(void*, void*); +typedef void* (*SFip_t)(int32_t, void*); typedef void* (*SFpp_t)(void*, void*); typedef char* (*tFip_t)(int32_t, void*); typedef char* (*tFpL_t)(void*, uintptr_t); @@ -1077,6 +1079,7 @@ void vFlu_32(x64emu_t *emu, uintptr_t fcn) { vFlu_t fn = (vFlu_t)fcn; fn(to_long void vFlp_32(x64emu_t *emu, uintptr_t fcn) { vFlp_t fn = (vFlp_t)fcn; fn(to_long(from_ptri(long_t, R_ESP + 4)), from_ptriv(R_ESP + 8)); } void vFpC_32(x64emu_t *emu, uintptr_t fcn) { vFpC_t fn = (vFpC_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint8_t, R_ESP + 8)); } void vFpu_32(x64emu_t *emu, uintptr_t fcn) { vFpu_t fn = (vFpu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); } +void vFpL_32(x64emu_t *emu, uintptr_t fcn) { vFpL_t fn = (vFpL_t)fcn; fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8))); } void vFpp_32(x64emu_t *emu, uintptr_t fcn) { vFpp_t fn = (vFpp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); } void vFSp_32(x64emu_t *emu, uintptr_t fcn) { vFSp_t fn = (vFSp_t)fcn; fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); } void wFpi_32(x64emu_t *emu, uintptr_t fcn) { wFpi_t fn = (wFpi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); } @@ -1151,6 +1154,7 @@ void pFpi_32(x64emu_t *emu, uintptr_t fcn) { pFpi_t fn = (pFpi_t)fcn; R_EAX = to void pFpu_32(x64emu_t *emu, uintptr_t fcn) { pFpu_t fn = (pFpu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8))); } void pFpL_32(x64emu_t *emu, uintptr_t fcn) { pFpL_t fn = (pFpL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)))); } void pFpp_32(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); } +void SFip_32(x64emu_t *emu, uintptr_t fcn) { SFip_t fn = (SFip_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)))); } void SFpp_32(x64emu_t *emu, uintptr_t fcn) { SFpp_t fn = (SFpp_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)))); } void tFip_32(x64emu_t *emu, uintptr_t fcn) { tFip_t fn = (tFip_t)fcn; R_EAX = to_cstring(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8))); } void tFpL_32(x64emu_t *emu, uintptr_t fcn) { tFpL_t fn = (tFpL_t)fcn; R_EAX = to_cstring(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)))); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 0504cbf6..cfc9dfd3 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -138,6 +138,7 @@ void vFlu_32(x64emu_t *emu, uintptr_t fnc); void vFlp_32(x64emu_t *emu, uintptr_t fnc); void vFpC_32(x64emu_t *emu, uintptr_t fnc); void vFpu_32(x64emu_t *emu, uintptr_t fnc); +void vFpL_32(x64emu_t *emu, uintptr_t fnc); void vFpp_32(x64emu_t *emu, uintptr_t fnc); void vFSp_32(x64emu_t *emu, uintptr_t fnc); void wFpi_32(x64emu_t *emu, uintptr_t fnc); @@ -212,6 +213,7 @@ void pFpi_32(x64emu_t *emu, uintptr_t fnc); void pFpu_32(x64emu_t *emu, uintptr_t fnc); void pFpL_32(x64emu_t *emu, uintptr_t fnc); void pFpp_32(x64emu_t *emu, uintptr_t fnc); +void SFip_32(x64emu_t *emu, uintptr_t fnc); void SFpp_32(x64emu_t *emu, uintptr_t fnc); void tFip_32(x64emu_t *emu, uintptr_t fnc); void tFpL_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c index d1c392e0..e3c74200 100755 --- a/src/wrapped32/wrappedlibc.c +++ b/src/wrapped32/wrappedlibc.c @@ -2099,17 +2099,6 @@ EXPORT int32_t my32_getrandom(x64emu_t* emu, void* buf, uint32_t buflen, uint32_ } #endif -struct i386_passwd -{ - ptr_t pw_name; // char * - ptr_t pw_passwd; // char * - uint32_t pw_uid; - uint32_t pw_gid; - ptr_t pw_gecos; // char * - ptr_t pw_dir; // char * - ptr_t pw_shell; // char * -}; - EXPORT void* my32_getpwuid(x64emu_t* emu, uint32_t uid) { static struct i386_passwd ret; @@ -2579,6 +2568,22 @@ EXPORT void my32___explicit_bzero_chk(x64emu_t* emu, void* dst, uint32_t len, ui memset(dst, 0, len); } +EXPORT void* my32_getpwnam(x64emu_t* emu, const char* name) +{ + static struct i386_passwd ret; + struct passwd *r = getpwnam(name); + if(!r) + return NULL; + ret.pw_name = to_ptrv(r->pw_name); + ret.pw_passwd = to_ptrv(r->pw_passwd); + ret.pw_uid = r->pw_uid; + ret.pw_gid = r->pw_gid; + ret.pw_gecos = to_ptrv(r->pw_gecos); + ret.pw_dir = to_ptrv(r->pw_dir); + ret.pw_shell = to_ptrv(r->pw_shell); + return &ret; +} + EXPORT void* my32_realpath(x64emu_t* emu, void* path, void* resolved_path) { diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h index 30dd250f..1f474f61 100755 --- a/src/wrapped32/wrappedlibc_private.h +++ b/src/wrapped32/wrappedlibc_private.h @@ -110,8 +110,8 @@ GOW(bind_textdomain_codeset, pFpp) // bsd_signal // Weak //GOM(bsearch, pFEppLLp) //%% GOW(btowc, iFi) -//GOW(bzero, vFpL) -//GO(__bzero, vFpL) +GOW(bzero, vFpL) +GO(__bzero, vFpL) GOW(calloc, pFLL) // callrpc //GOW(canonicalize_file_name, pFp) @@ -312,7 +312,7 @@ GOM(fcntl64, iFEiiN) //%% //GO(fcvt_r, iFdipppL) GO(fdatasync, iFi) // fdetach -//GO(fdopen, pFip) +GO(fdopen, SFip) GOW(fdopendir, pFi) GOW(feof, iFS) //GO(feof_unlocked, iFp) @@ -555,7 +555,7 @@ GOW(getpt, iFv) // getpw // Weak //GO(getpwent, pFv) // getpwent_r -//GO(getpwnam, pFp) +GOM(getpwnam, pFEp) //GO(getpwnam_r, iFpppup) GOM(getpwuid, pFEu) //GO(getpwuid_r, iFuppup) @@ -1223,7 +1223,7 @@ GOW(opendir, pFp) GOW(pathconf, iFpi) GOW(pause, iFv) GO(pclose, iFS) -//GO(perror, vFp) +GO(perror, vFp) // personality // Weak GOW(pipe, iFp) // __pipe |