about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-10 18:02:21 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-10 18:02:21 +0100
commit02161dc4d761cf209095b614534db908a140384a (patch)
tree5c1684fba444768e3a5ac528474529e69e03d18f /src/wrapped
parenta62f6860247b57b3a27500cd88c9d42e388a782b (diff)
downloadbox64-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.txt2
-rw-r--r--src/wrapped/generated/wrapper.c3
-rw-r--r--src/wrapped/generated/wrapper.h2
-rwxr-xr-xsrc/wrapped/wrappedlibasound.c2
-rwxr-xr-xsrc/wrapped/wrappedlibc.c8
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h2
-rwxr-xr-xsrc/wrapped/wrappedlibgl.c3
-rwxr-xr-xsrc/wrapped/wrappedlibx11.c14
-rwxr-xr-xsrc/wrapped/wrappedlibxext.c2
-rwxr-xr-xsrc/wrapped/wrappedopenal.c6
-rwxr-xr-xsrc/wrapped/wrappedsdl1.c9
-rwxr-xr-xsrc/wrapped/wrappedsdl2.c7
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