diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-07-30 11:50:51 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-07-30 11:50:51 +0200 |
| commit | 0fe835e0871b42104218c9440f599d7a9e2b1f2f (patch) | |
| tree | 073f25f96ae9e865ea288bd0a91a02288161af72 /src | |
| parent | e8ed41c76330ba837b5a27314cb038ed3bdbfc6b (diff) | |
| download | box64-0fe835e0871b42104218c9440f599d7a9e2b1f2f.tar.gz box64-0fe835e0871b42104218c9440f599d7a9e2b1f2f.zip | |
Improve obstack support (for #352)
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 5 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibctypes.h | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 8 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 6 |
6 files changed, 20 insertions, 7 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index e5486dd3..b5c488d9 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1173,6 +1173,7 @@ #() iFplluu #() iFpLiLi #() iFpLlpp +#() iFpLLpp #() iFpLppi #() iFppiiu #() iFppiip @@ -2862,6 +2863,8 @@ wrappedlibc: - _ITM_registerTMCloneTable - vFpp: - __register_frame_info + - _obstack_free + - obstack_free - tdestroy - vFpV: - warn @@ -3038,6 +3041,8 @@ wrappedlibc: - __sprintf_chk - iFpuppp: - __vswprintf_chk +- iFpLLpp: + - _obstack_begin - pFpLLiN: - mremap - pFppLLp: diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h index 2de2464a..452c2515 100644 --- a/src/wrapped/generated/wrappedlibctypes.h +++ b/src/wrapped/generated/wrappedlibctypes.h @@ -76,6 +76,7 @@ typedef int64_t (*iFipiip_t)(int64_t, void*, int64_t, int64_t, void*); typedef int64_t (*iFipppp_t)(int64_t, void*, void*, void*, void*); typedef int64_t (*iFpilpV_t)(void*, int64_t, intptr_t, void*, ...); typedef int64_t (*iFpuppp_t)(void*, uint64_t, void*, void*, void*); +typedef int64_t (*iFpLLpp_t)(void*, uintptr_t, uintptr_t, void*, void*); typedef void* (*pFpLLiN_t)(void*, uintptr_t, uintptr_t, int64_t, ...); typedef void* (*pFppLLp_t)(void*, void*, uintptr_t, uintptr_t, void*); typedef void* (*pFpppLp_t)(void*, void*, void*, uintptr_t, void*); @@ -115,6 +116,8 @@ typedef int64_t (*iFppipppp_t)(void*, void*, int64_t, void*, void*, void*, void* GO(siglongjmp, vFpi_t) \ GO(_ITM_registerTMCloneTable, vFpu_t) \ GO(__register_frame_info, vFpp_t) \ + GO(_obstack_free, vFpp_t) \ + GO(obstack_free, vFpp_t) \ GO(tdestroy, vFpp_t) \ GO(warn, vFpV_t) \ GO(warnx, vFpV_t) \ @@ -239,6 +242,7 @@ typedef int64_t (*iFppipppp_t)(void*, void*, int64_t, void*, void*, void*, void* GO(scandirat, iFipppp_t) \ GO(__sprintf_chk, iFpilpV_t) \ GO(__vswprintf_chk, iFpuppp_t) \ + GO(_obstack_begin, iFpLLpp_t) \ GO(mremap, pFpLLiN_t) \ GO(bsearch, pFppLLp_t) \ GO(lfind, pFpppLp_t) \ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 561d36f0..13b6fc80 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -1207,6 +1207,7 @@ typedef int64_t (*iFpUupp_t)(void*, uint64_t, uint64_t, void*, void*); typedef int64_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint64_t, uint64_t); typedef int64_t (*iFpLiLi_t)(void*, uintptr_t, int64_t, uintptr_t, int64_t); typedef int64_t (*iFpLlpp_t)(void*, uintptr_t, intptr_t, void*, void*); +typedef int64_t (*iFpLLpp_t)(void*, uintptr_t, uintptr_t, void*, void*); typedef int64_t (*iFpLppi_t)(void*, uintptr_t, void*, void*, int64_t); typedef int64_t (*iFppiiu_t)(void*, void*, int64_t, int64_t, uint64_t); typedef int64_t (*iFppiip_t)(void*, void*, int64_t, int64_t, void*); @@ -3368,6 +3369,7 @@ void iFpUupp(x64emu_t *emu, uintptr_t fcn) { iFpUupp_t fn = (iFpUupp_t)fcn; R_RA void iFplluu(x64emu_t *emu, uintptr_t fcn) { iFplluu_t fn = (iFplluu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); } void iFpLiLi(x64emu_t *emu, uintptr_t fcn) { iFpLiLi_t fn = (iFpLiLi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (int64_t)R_R8); } void iFpLlpp(x64emu_t *emu, uintptr_t fcn) { iFpLlpp_t fn = (iFpLlpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); } +void iFpLLpp(x64emu_t *emu, uintptr_t fcn) { iFpLLpp_t fn = (iFpLLpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void iFpLppi(x64emu_t *emu, uintptr_t fcn) { iFpLppi_t fn = (iFpLppi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8); } void iFppiiu(x64emu_t *emu, uintptr_t fcn) { iFppiiu_t fn = (iFppiiu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); } void iFppiip(x64emu_t *emu, uintptr_t fcn) { iFppiip_t fn = (iFppiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8); } @@ -5358,6 +5360,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFplluu) return 1; if (fun == &iFpLiLi) return 1; if (fun == &iFpLlpp) return 1; + if (fun == &iFpLLpp) return 1; if (fun == &iFpLppi) return 1; if (fun == &iFppiiu) return 1; if (fun == &iFppiip) return 1; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index a7bd83f3..9be2d94d 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -1206,6 +1206,7 @@ void iFpUupp(x64emu_t *emu, uintptr_t fnc); void iFplluu(x64emu_t *emu, uintptr_t fnc); void iFpLiLi(x64emu_t *emu, uintptr_t fnc); void iFpLlpp(x64emu_t *emu, uintptr_t fnc); +void iFpLLpp(x64emu_t *emu, uintptr_t fnc); void iFpLppi(x64emu_t *emu, uintptr_t fnc); void iFppiiu(x64emu_t *emu, uintptr_t fnc); void iFppiip(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 6d5cab3e..e5fcad01 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2487,9 +2487,6 @@ EXPORT void* my___libc_dlsym(x64emu_t* emu, void* handle, void* name) return my_dlsym(emu, handle, name); } -// all obstack function defined in obstack.c file -void obstackSetup(); - EXPORT int my_nanosleep(const struct timespec *req, struct timespec *rem) { if(!req) @@ -2498,6 +2495,9 @@ EXPORT int my_nanosleep(const struct timespec *req, struct timespec *rem) } #endif +// all obstack function defined in obstack.c file +void obstackSetup(); + EXPORT void* my_malloc(unsigned long size) { return calloc(1, size); @@ -2860,7 +2860,7 @@ EXPORT char my___libc_single_threaded = 0; /*InitCpuModel();*/ \ ctSetup(); \ stSetup(box64); \ - /*obstackSetup();*/ \ + obstackSetup(); \ my_environ = my__environ = my___environ = box64->envv; \ my___progname_full = my_program_invocation_name = box64->argv[0]; \ my___progname = my_program_invocation_short_name = \ diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index cd2b728e..b9b9452e 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -1262,11 +1262,11 @@ GOW(ntp_adjtime, iFp) //DATAB(_obstack, //GO(_obstack_allocated_p, //DATA(obstack_alloc_failed_handler, -//GO(_obstack_begin, +GOM(_obstack_begin, iFpLLpp) //GO(_obstack_begin_1, //DATA(obstack_exit_failure, -//GO(_obstack_free, -//GO(obstack_free, +GOM(_obstack_free, vFpp) +GOM(obstack_free, vFpp) //GO(_obstack_memory_used, GOM(_obstack_newchunk, vFEpi) //GOW(obstack_printf, iFppV) |