diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-10 18:02:21 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-10 18:02:21 +0100 |
| commit | 02161dc4d761cf209095b614534db908a140384a (patch) | |
| tree | 5c1684fba444768e3a5ac528474529e69e03d18f /src/wrapped | |
| parent | a62f6860247b57b3a27500cd88c9d42e388a782b (diff) | |
| download | box64-02161dc4d761cf209095b614534db908a140384a.tar.gz box64-02161dc4d761cf209095b614534db908a140384a.zip | |
Better functions name resolving when using TRACE, and fixed some printf stuff again
Diffstat (limited to 'src/wrapped')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibasound.c | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 8 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibgl.c | 3 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibx11.c | 14 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxext.c | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedopenal.c | 6 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1.c | 9 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl2.c | 7 |
12 files changed, 35 insertions, 25 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 7c79e560..3b61e9b0 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -514,6 +514,7 @@ #() iFEippp #() iFEpipi #() iFEpipp +#() iFEpipV #() iFEpLpp #() iFEppiV #() iFEpppp @@ -894,6 +895,5 @@ #() pFppv -> pFpp #() iFEvpp -> iFEpp #() iFEpvpp -> iFEppp -#() iFEpvpV -> iFEppV #() iFEpLvvpp -> iFEpLpp #() iFEpuvvppp -> iFEpuppp diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 1d103fb8..05da770b 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -547,6 +547,7 @@ typedef void (*vFppppp_t)(void*, void*, void*, void*, void*); typedef int32_t (*iFEippp_t)(x64emu_t*, int32_t, void*, void*, void*); typedef int32_t (*iFEpipi_t)(x64emu_t*, void*, int32_t, void*, int32_t); typedef int32_t (*iFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*); +typedef int32_t (*iFEpipV_t)(x64emu_t*, void*, int32_t, void*, void*); typedef int32_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*); typedef int32_t (*iFEppiV_t)(x64emu_t*, void*, void*, int32_t, void*); typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*); @@ -1444,6 +1445,7 @@ void vFppppp(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; fn(( void iFEippp(x64emu_t *emu, uintptr_t fcn) { iFEippp_t fn = (iFEippp_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFEpipi(x64emu_t *emu, uintptr_t fcn) { iFEpipi_t fn = (iFEpipi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); } void iFEpipp(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } +void iFEpipV(x64emu_t *emu, uintptr_t fcn) { iFEpipV_t fn = (iFEpipV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } void iFEpLpp(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFEppiV(x64emu_t *emu, uintptr_t fcn) { iFEppiV_t fn = (iFEppiV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)(R_RSP + 8)); } void iFEpppp(x64emu_t *emu, uintptr_t fcn) { iFEpppp_t fn = (iFEpppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } @@ -1831,6 +1833,5 @@ void pFEv(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_ void pFppv(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI); } void iFEvpp(x64emu_t *emu, uintptr_t fcn) { iFEpp_t fn = (iFEpp_t)fcn; R_RAX=fn(emu, (void*)R_RSI, (void*)R_RDX); } void iFEpvpp(x64emu_t *emu, uintptr_t fcn) { iFEppp_t fn = (iFEppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RDX, (void*)R_RCX); } -void iFEpvpV(x64emu_t *emu, uintptr_t fcn) { iFEppV_t fn = (iFEppV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RDX, (void*)(R_RSP + 8)); } void iFEpLvvpp(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_R8, (void*)R_R9); } void iFEpuvvppp(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 1e9c7411..0573918b 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -544,6 +544,7 @@ void vFppppp(x64emu_t *emu, uintptr_t fnc); void iFEippp(x64emu_t *emu, uintptr_t fnc); void iFEpipi(x64emu_t *emu, uintptr_t fnc); void iFEpipp(x64emu_t *emu, uintptr_t fnc); +void iFEpipV(x64emu_t *emu, uintptr_t fnc); void iFEpLpp(x64emu_t *emu, uintptr_t fnc); void iFEppiV(x64emu_t *emu, uintptr_t fnc); void iFEpppp(x64emu_t *emu, uintptr_t fnc); @@ -931,7 +932,6 @@ void pFEv(x64emu_t *emu, uintptr_t fnc); void pFppv(x64emu_t *emu, uintptr_t fnc); void iFEvpp(x64emu_t *emu, uintptr_t fnc); void iFEpvpp(x64emu_t *emu, uintptr_t fnc); -void iFEpvpV(x64emu_t *emu, uintptr_t fnc); void iFEpLvvpp(x64emu_t *emu, uintptr_t fnc); void iFEpuvvppp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibasound.c b/src/wrapped/wrappedlibasound.c index a11b0fde..acb5f3de 100755 --- a/src/wrapped/wrappedlibasound.c +++ b/src/wrapped/wrappedlibasound.c @@ -52,7 +52,7 @@ void* getAsoundMy(library_t* lib) SUPER() #undef GO // setup custom error handler - my_snd_lib_error = AddCheckBridge(my_context->system, vFpipipV, default_error_handler, 0); + my_snd_lib_error = AddCheckBridge(my_context->system, vFpipipV, default_error_handler, 0, "ASoundCustomErrorHandler"); //all done return my; } diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index bba0a0ad..19e41805 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -604,11 +604,15 @@ EXPORT int my___vfprintf_chk(x64emu_t *emu, void* F, void* fmt, x64_va_list_t b) EXPORT int my__IO_vfprintf(x64emu_t *emu, void* F, void* fmt, x64_va_list_t b) __attribute__((alias("my_vfprintf"))); EXPORT int my_fprintf(x64emu_t *emu, void* F, void* fmt, void* b) { - myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 1); + myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2); + PREPARE_VALIST; + return vfprintf(F, fmt, VARARGS); +} +EXPORT int my___fprintf_chk(x64emu_t *emu, void* F, int flag, void* fmt, void* b) { + myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; return vfprintf(F, fmt, VARARGS); } -EXPORT int my___fprintf_chk(x64emu_t *emu, void* F, void* fmt, void* b) __attribute__((alias("my_fprintf"))); #if 0 EXPORT int my_wprintf(x64emu_t *emu, void* fmt, void* b, va_list V) { diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index 4aebcf85..be3b47e8 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -376,7 +376,7 @@ GOM(fork, lFEv) // Weak //GOW(fpathconf, //GO(__fpending, GOM(fprintf, iFEppV) -GOM(__fprintf_chk, iFEpvpV) +GOM(__fprintf_chk, iFEpipV) //DATA(__fpu_control, //GO(__fpurge, GO(fputc, iFip) diff --git a/src/wrapped/wrappedlibgl.c b/src/wrapped/wrappedlibgl.c index 2343506a..8f544a3c 100755 --- a/src/wrapped/wrappedlibgl.c +++ b/src/wrapped/wrappedlibgl.c @@ -75,8 +75,9 @@ EXPORT void* my_glXGetProcAddress(x64emu_t* emu, void* name) if(dlsym_error && box64_log<LOG_INFO) printf_log(LOG_NONE, "Warning, no wrapper for %s\n", rname); return NULL; } + const char* constname = kh_key(emu->context->glwrappers, k); AddOffsetSymbol(emu->context->maplib, symbol, rname); - ret = AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0); + ret = AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0, constname); if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", (void*)ret); return (void*)ret; diff --git a/src/wrapped/wrappedlibx11.c b/src/wrapped/wrappedlibx11.c index 51d71079..d207f79f 100755 --- a/src/wrapped/wrappedlibx11.c +++ b/src/wrapped/wrappedlibx11.c @@ -204,7 +204,7 @@ static void* reverse_wire_to_eventFct(library_t* lib, void* fct) #define GO(A) if(my_wire_to_event_##A == fct) return (void*)my_wire_to_event_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0, NULL); } // event_to_wire @@ -237,7 +237,7 @@ static void* reverse_event_to_wireFct(library_t* lib, void* fct) #define GO(A) if(my_event_to_wire_##A == fct) return (void*)my_event_to_wire_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0, NULL); } // error_handler @@ -270,7 +270,7 @@ static void* reverse_error_handlerFct(library_t* lib, void* fct) #define GO(A) if(my_error_handler_##A == fct) return (void*)my_error_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFpp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFpp, fct, 0, NULL); } // ioerror_handler @@ -303,7 +303,7 @@ static void* reverse_ioerror_handlerFct(library_t* lib, void* fct) #define GO(A) if(my_ioerror_handler_##A == fct) return (void*)my_ioerror_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFp, fct, 0, NULL); } // exterror_handler @@ -336,7 +336,7 @@ static void* reverse_exterror_handlerFct(library_t* lib, void* fct) #define GO(A) if(my_exterror_handler_##A == fct) return (void*)my_exterror_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFpppp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFpppp, fct, 0, NULL); } // close_display @@ -369,7 +369,7 @@ static void* reverse_close_displayFct(library_t* lib, void* fct) #define GO(A) if(my_close_display_##A == fct) return (void*)my_close_display_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFpp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFpp, fct, 0, NULL); } // register_im @@ -402,7 +402,7 @@ static void* reverse_register_imFct(library_t* lib, void* fct) #define GO(A) if(my_register_im_##A == fct) return (void*)my_register_im_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0); + return (void*)AddBridge(lib->priv.w.bridge, iFppp, fct, 0, NULL); } // XConnectionWatchProc diff --git a/src/wrapped/wrappedlibxext.c b/src/wrapped/wrappedlibxext.c index 9482b70f..ab73af17 100755 --- a/src/wrapped/wrappedlibxext.c +++ b/src/wrapped/wrappedlibxext.c @@ -111,7 +111,7 @@ static void* reverse_exterrorhandleFct(void* fct) #define GO(A) if(my_exterrorhandle_##A == fct) return (void*)my_exterrorhandle_fct_##A; SUPER() #undef GO - return (void*)AddBridge(my_lib->priv.w.bridge, iFppp, fct, 0); + return (void*)AddBridge(my_lib->priv.w.bridge, iFppp, fct, 0, NULL); } #undef SUPER diff --git a/src/wrapped/wrappedopenal.c b/src/wrapped/wrappedopenal.c index 7f17bd4d..27b1af20 100755 --- a/src/wrapped/wrappedopenal.c +++ b/src/wrapped/wrappedopenal.c @@ -171,8 +171,9 @@ EXPORT void* my_alGetProcAddress(x64emu_t* emu, void* name) printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname); return NULL; } + const char* constname = kh_key(emu->context->alwrappers, k); AddOffsetSymbol(emu->context->maplib, symbol, rname); - return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0); + return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0, constname); } EXPORT void* my_alcGetProcAddress(x64emu_t* emu, void* device, void* name) @@ -206,8 +207,9 @@ EXPORT void* my_alcGetProcAddress(x64emu_t* emu, void* device, void* name) printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname); return NULL; } + const char* constname = kh_key(emu->context->alwrappers, k); AddOffsetSymbol(emu->context->maplib, symbol, rname); - return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0); + return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0, constname); } EXPORT void my_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb) diff --git a/src/wrapped/wrappedsdl1.c b/src/wrapped/wrappedsdl1.c index f608b8ec..3f78bc38 100755 --- a/src/wrapped/wrappedsdl1.c +++ b/src/wrapped/wrappedsdl1.c @@ -213,7 +213,7 @@ static void* reverse_EvtFilterFct(void* fct) #define GO(A) if(my_EvtFilter_##A == fct) return (void*)my_EvtFilter_fct_##A; SUPER() #undef GO - return (void*)AddBridge(my_lib->priv.w.bridge, iFp, fct, 0); + return (void*)AddBridge(my_lib->priv.w.bridge, iFp, fct, 0, NULL); } #undef SUPER @@ -497,7 +497,8 @@ EXPORT void* my_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) return NULL; } AddOffsetSymbol(emu->context->maplib, symbol, rname); - return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0); + const char* constname = kh_key(emu->context->glwrappers, k); + return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0, constname); } // DL functions from wrappedlibdl.c @@ -546,9 +547,9 @@ EXPORT int32_t my_SDL_GetWMInfo(x64emu_t* emu, void* p) int ret = my->SDL_GetWMInfo(p); my_SDL_SysWMinfo *info = (my_SDL_SysWMinfo*)p; if(info->info.x11.lock_func) - info->info.x11.lock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.lock_func, 0); + info->info.x11.lock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.lock_func, 0, NULL); if(info->info.x11.unlock_func) - info->info.x11.unlock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.unlock_func, 0); + info->info.x11.unlock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.unlock_func, 0, NULL); return ret; } diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c index f0489193..97507a19 100755 --- a/src/wrapped/wrappedsdl2.c +++ b/src/wrapped/wrappedsdl2.c @@ -264,7 +264,7 @@ static void* reverse_eventfilter_Fct(void* fct) #define GO(A) if(my_eventfilter_##A == fct) return (void*)my_eventfilter_fct_##A; SUPER() #undef GO - return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, iFpp, fct, 0); + return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, iFpp, fct, 0, NULL); } // LogOutput @@ -297,7 +297,7 @@ static void* reverse_LogOutput_Fct(void* fct) #define GO(A) if(my_LogOutput_##A == fct) return (void*)my_LogOutput_fct_##A; SUPER() #undef GO - return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, vFpiip, fct, 0); + return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, vFpiip, fct, 0, NULL); } #undef SUPER @@ -773,7 +773,8 @@ EXPORT void* my2_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) return NULL; } AddOffsetSymbol(emu->context->maplib, symbol, rname); - return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0); + const char* constname = kh_key(emu->context->glwrappers, k); + return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0, constname); } #define nb_once 16 |