diff options
| author | Yang Liu <numbksco@gmail.com> | 2023-05-15 19:08:19 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-15 13:08:19 +0200 |
| commit | 1d58879ae5fd508c140a03be842751419f264068 (patch) | |
| tree | b0b66329f4d98c51493c012764d14e8a03cda711 /src | |
| parent | f115fe331bb4cc7d3a65906fd8d48ffb6180629c (diff) | |
| download | box64-1d58879ae5fd508c140a03be842751419f264068.tar.gz box64-1d58879ae5fd508c140a03be842751419f264068.zip | |
[WRAPPER] Added 1 more symbol for libc (for #787) (#788)
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibctypes.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 22 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 2 |
4 files changed, 20 insertions, 8 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 288e55fb..dea4ebe7 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -3750,6 +3750,8 @@ wrappedlibc: - tdelete - tfind - tsearch +- pFppV: + - fopencookie - vFiipV: - __syslog_chk - vFiipA: diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h index 8c4ab887..5c123523 100644 --- a/src/wrapped/generated/wrappedlibctypes.h +++ b/src/wrapped/generated/wrappedlibctypes.h @@ -53,6 +53,7 @@ typedef intptr_t (*lFppL_t)(void*, void*, uintptr_t); typedef uintptr_t (*LFppL_t)(void*, void*, uintptr_t); typedef void* (*pFpip_t)(void*, int32_t, void*); typedef void* (*pFppp_t)(void*, void*, void*); +typedef void* (*pFppV_t)(void*, void*, ...); typedef void (*vFiipV_t)(int32_t, int32_t, void*, ...); typedef void (*vFiipA_t)(int32_t, int32_t, void*, va_list); typedef void (*vFpLLp_t)(void*, uintptr_t, uintptr_t, void*); @@ -214,6 +215,7 @@ typedef int32_t (*iFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void* GO(tdelete, pFppp_t) \ GO(tfind, pFppp_t) \ GO(tsearch, pFppp_t) \ + GO(fopencookie, pFppV_t) \ GO(__syslog_chk, vFiipV_t) \ GO(__vsyslog_chk, vFiipA_t) \ GO(qsort, vFpLLp_t) \ diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 29d00435..593eada1 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2702,7 +2702,13 @@ EXPORT int my_getopt_long_only(int argc, char* const argv[], const char* optstri return ret; } -#if 0 +typedef struct { + void *read; + void *write; + void *seek; + void *close; +} my_cookie_io_functions_t; + typedef struct my_cookie_s { uintptr_t r, w, s, c; void* cookie; @@ -2732,18 +2738,20 @@ static int my_cookie_close(void *p) box_free(cookie); return ret; } -EXPORT void* my_fopencookie(x64emu_t* emu, void* cookie, void* mode, void* read, void* write, void* seek, void* close) +EXPORT void* my_fopencookie(x64emu_t* emu, void* cookie, void* mode, my_cookie_io_functions_t *s) { - cookie_io_functions_t io_funcs = {read?my_cookie_read:NULL, write?my_cookie_write:NULL, seek?my_cookie_seek:NULL, my_cookie_close}; + cookie_io_functions_t io_funcs = {s->read?my_cookie_read:NULL, s->write?my_cookie_write:NULL, s->seek?my_cookie_seek:NULL, my_cookie_close}; my_cookie_t *cb = (my_cookie_t*)box_calloc(1, sizeof(my_cookie_t)); - cb->r = (uintptr_t)read; - cb->w = (uintptr_t)write; - cb->s = (uintptr_t)seek; - cb->c = (uintptr_t)close; + cb->r = (uintptr_t)s->read; + cb->w = (uintptr_t)s->write; + cb->s = (uintptr_t)s->seek; + cb->c = (uintptr_t)s->close; cb->cookie = cookie; return fopencookie(cb, mode, io_funcs); } +#if 0 + EXPORT long my_prlimit64(void* pid, uint32_t res, void* new_rlim, void* old_rlim) { return syscall(__NR_prlimit64, pid, res, new_rlim, old_rlim); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index b36c07bb..45ccdadd 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -384,7 +384,7 @@ GO(fmtmsg, iFlpippp) GO(fnmatch, iFppi) GOM(fopen, pFEpp) GOWM(fopen64, pFEpp) -//GO(fopencookie, pFpp?) +GOM(fopencookie, pFEppV) //GO(__fork, GOWM(fork, iFEv) //GO(__fortify_fail, |