about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
Diffstat (limited to 'src/wrapped')
-rw-r--r--src/wrapped/generated/functions_list.txt4
-rw-r--r--src/wrapped/generated/wrappedlibctypes.h2
-rw-r--r--src/wrapped/generated/wrapper.c5
-rw-r--r--src/wrapped/generated/wrapper.h2
-rwxr-xr-xsrc/wrapped/wrappedlibc.c11
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h2
-rwxr-xr-xsrc/wrapped/wrappedlibgl.c4
-rwxr-xr-xsrc/wrapped/wrappedlibx11.c7
-rwxr-xr-xsrc/wrapped/wrappedsdl2.c5
9 files changed, 25 insertions, 17 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 4ca5da07..d3449255 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1167,7 +1167,6 @@
 #() iFiiupp
 #() iFiipup
 #() iFiuLip
-#() iFiLLLL
 #() iFipiii
 #() iFipiup
 #() iFipipi
@@ -1475,6 +1474,7 @@
 #() cFppLppi
 #() iFEiippi
 #() iFEiippp
+#() iFEiLLLL
 #() iFEippLp
 #() iFElpppp
 #() iFEpiipp
@@ -3129,6 +3129,8 @@ wrappedlibc:
 - iFiippi:
   - __fxstatat
   - __fxstatat64
+- iFiLLLL:
+  - prctl
 - iFipiip:
   - epoll_pwait
 - iFipppp:
diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h
index 9352b479..d27b57b8 100644
--- a/src/wrapped/generated/wrappedlibctypes.h
+++ b/src/wrapped/generated/wrappedlibctypes.h
@@ -72,6 +72,7 @@ typedef int64_t (*iFppiV_t)(void*, void*, int64_t, ...);
 typedef int64_t (*iFpppp_t)(void*, void*, void*, void*);
 typedef void (*vFpLLpp_t)(void*, uintptr_t, uintptr_t, void*, void*);
 typedef int64_t (*iFiippi_t)(int64_t, int64_t, void*, void*, int64_t);
+typedef int64_t (*iFiLLLL_t)(int64_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 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*, ...);
@@ -237,6 +238,7 @@ typedef int64_t (*iFppipppp_t)(void*, void*, int64_t, void*, void*, void*, void*
 	GO(qsort_r, vFpLLpp_t) \
 	GO(__fxstatat, iFiippi_t) \
 	GO(__fxstatat64, iFiippi_t) \
+	GO(prctl, iFiLLLL_t) \
 	GO(epoll_pwait, iFipiip_t) \
 	GO(getopt_long, iFipppp_t) \
 	GO(getopt_long_only, iFipppp_t) \
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index e5575136..34225b54 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1201,7 +1201,6 @@ typedef int64_t (*iFiiipp_t)(int64_t, int64_t, int64_t, void*, void*);
 typedef int64_t (*iFiiupp_t)(int64_t, int64_t, uint64_t, void*, void*);
 typedef int64_t (*iFiipup_t)(int64_t, int64_t, void*, uint64_t, void*);
 typedef int64_t (*iFiuLip_t)(int64_t, uint64_t, uintptr_t, int64_t, void*);
-typedef int64_t (*iFiLLLL_t)(int64_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 typedef int64_t (*iFipiii_t)(int64_t, void*, int64_t, int64_t, int64_t);
 typedef int64_t (*iFipiup_t)(int64_t, void*, int64_t, uint64_t, void*);
 typedef int64_t (*iFipipi_t)(int64_t, void*, int64_t, void*, int64_t);
@@ -1509,6 +1508,7 @@ typedef void (*vFpppppp_t)(void*, void*, void*, void*, void*, void*);
 typedef int8_t (*cFppLppi_t)(void*, void*, uintptr_t, void*, void*, int64_t);
 typedef int64_t (*iFEiippi_t)(x64emu_t*, int64_t, int64_t, void*, void*, int64_t);
 typedef int64_t (*iFEiippp_t)(x64emu_t*, int64_t, int64_t, void*, void*, void*);
+typedef int64_t (*iFEiLLLL_t)(x64emu_t*, int64_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 typedef int64_t (*iFEippLp_t)(x64emu_t*, int64_t, void*, void*, uintptr_t, void*);
 typedef int64_t (*iFElpppp_t)(x64emu_t*, intptr_t, void*, void*, void*, void*);
 typedef int64_t (*iFEpiipp_t)(x64emu_t*, void*, int64_t, int64_t, void*, void*);
@@ -3450,7 +3450,6 @@ void iFiiipp(x64emu_t *emu, uintptr_t fcn) { iFiiipp_t fn = (iFiiipp_t)fcn; R_RA
 void iFiiupp(x64emu_t *emu, uintptr_t fcn) { iFiiupp_t fn = (iFiiupp_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFiipup(x64emu_t *emu, uintptr_t fcn) { iFiipup_t fn = (iFiipup_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
 void iFiuLip(x64emu_t *emu, uintptr_t fcn) { iFiuLip_t fn = (iFiuLip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (uint64_t)R_RSI, (uintptr_t)R_RDX, (int64_t)R_RCX, (void*)R_R8); }
-void iFiLLLL(x64emu_t *emu, uintptr_t fcn) { iFiLLLL_t fn = (iFiLLLL_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); }
 void iFipiii(x64emu_t *emu, uintptr_t fcn) { iFipiii_t fn = (iFipiii_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
 void iFipiup(x64emu_t *emu, uintptr_t fcn) { iFipiup_t fn = (iFipiup_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
 void iFipipi(x64emu_t *emu, uintptr_t fcn) { iFipipi_t fn = (iFipipi_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8); }
@@ -3758,6 +3757,7 @@ void vFpppppp(x64emu_t *emu, uintptr_t fcn) { vFpppppp_t fn = (vFpppppp_t)fcn; f
 void cFppLppi(x64emu_t *emu, uintptr_t fcn) { cFppLppi_t fn = (cFppLppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9); }
 void iFEiippi(x64emu_t *emu, uintptr_t fcn) { iFEiippi_t fn = (iFEiippi_t)fcn; R_RAX=(int64_t)fn(emu, (int64_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8); }
 void iFEiippp(x64emu_t *emu, uintptr_t fcn) { iFEiippp_t fn = (iFEiippp_t)fcn; R_RAX=(int64_t)fn(emu, (int64_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void iFEiLLLL(x64emu_t *emu, uintptr_t fcn) { iFEiLLLL_t fn = (iFEiLLLL_t)fcn; R_RAX=(int64_t)fn(emu, (int64_t)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); }
 void iFEippLp(x64emu_t *emu, uintptr_t fcn) { iFEippLp_t fn = (iFEippLp_t)fcn; R_RAX=(int64_t)fn(emu, (int64_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8); }
 void iFElpppp(x64emu_t *emu, uintptr_t fcn) { iFElpppp_t fn = (iFElpppp_t)fcn; R_RAX=(int64_t)fn(emu, (intptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFEpiipp(x64emu_t *emu, uintptr_t fcn) { iFEpiipp_t fn = (iFEpiipp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
@@ -5526,7 +5526,6 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &iFiiupp) return 1;
 	if (fun == &iFiipup) return 1;
 	if (fun == &iFiuLip) return 1;
-	if (fun == &iFiLLLL) return 1;
 	if (fun == &iFipiii) return 1;
 	if (fun == &iFipiup) return 1;
 	if (fun == &iFipipi) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index df3f84a0..31d952b6 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1200,7 +1200,6 @@ void iFiiipp(x64emu_t *emu, uintptr_t fnc);
 void iFiiupp(x64emu_t *emu, uintptr_t fnc);
 void iFiipup(x64emu_t *emu, uintptr_t fnc);
 void iFiuLip(x64emu_t *emu, uintptr_t fnc);
-void iFiLLLL(x64emu_t *emu, uintptr_t fnc);
 void iFipiii(x64emu_t *emu, uintptr_t fnc);
 void iFipiup(x64emu_t *emu, uintptr_t fnc);
 void iFipipi(x64emu_t *emu, uintptr_t fnc);
@@ -1508,6 +1507,7 @@ void vFpppppp(x64emu_t *emu, uintptr_t fnc);
 void cFppLppi(x64emu_t *emu, uintptr_t fnc);
 void iFEiippi(x64emu_t *emu, uintptr_t fnc);
 void iFEiippp(x64emu_t *emu, uintptr_t fnc);
+void iFEiLLLL(x64emu_t *emu, uintptr_t fnc);
 void iFEippLp(x64emu_t *emu, uintptr_t fnc);
 void iFElpppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpiipp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index d1d686b1..6d7169bb 100755
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -38,6 +38,7 @@
 #include <syslog.h>
 #include <malloc.h>
 #include <getopt.h>
+#include <sys/prctl.h>
 #undef LOG_INFO
 #undef LOG_DEBUG
 
@@ -60,6 +61,7 @@
 #include "elfloader.h"
 #include "bridge.h"
 #include "globalsymbols.h"
+#include "rcfile.h"
 
 #define LIBNAME libc
 const char* libcName = "libc.so.6";
@@ -2969,6 +2971,15 @@ EXPORT void my_exit(x64emu_t* emu, int code)
 
 EXPORT void my__exit(x64emu_t* emu, int code) __attribute__((alias("my_exit")));
 
+EXPORT int my_prctl(x64emu_t* emu, int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)
+{
+    if(option==PR_SET_NAME) {
+        printf_log(LOG_DEBUG, "BOX64: set process name to \"%s\"\n", (char*)arg2);
+        ApplyParams((char*)arg2);
+    }
+    return prctl(option, arg2, arg3, arg4, arg5);
+}
+
 
 EXPORT char* my___progname = NULL;
 EXPORT char* my___progname_full = NULL;
diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h
index 066596b4..6c5dcdd3 100755
--- a/src/wrapped/wrappedlibc_private.h
+++ b/src/wrapped/wrappedlibc_private.h
@@ -1358,7 +1358,7 @@ GOW(posix_spawn_file_actions_init, iFp)
 GOM(posix_spawnp, iFEpppppp)
 GO(ppoll, iFpLpp)
 //GO(__ppoll_chk, 
-GOW(prctl, iFiLLLL)
+GOWM(prctl, iFEiLLLL)
 GOW(pread, lFipLl)
 GOW(__pread64, lFipLI)
 GOW(pread64, lFipLl)
diff --git a/src/wrapped/wrappedlibgl.c b/src/wrapped/wrappedlibgl.c
index 63d30938..9875847c 100755
--- a/src/wrapped/wrappedlibgl.c
+++ b/src/wrapped/wrappedlibgl.c
@@ -16,8 +16,6 @@
 #include "librarian.h"
 #include "callback.h"
 
-extern char* libGL;
-
 const char* libglName = "libGL.so.1";
 #define LIBNAME libgl
 
@@ -198,7 +196,7 @@ EXPORT void* my_glGetVkProcAddrNV(x64emu_t* emu, void* name)
     return my_GetVkProcAddr(emu, name, GetVkProcAddrNV);
 }
 
-#define PRE_INIT if(libGL) {lib->w.lib = dlopen(libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(libGL);} else
+#define PRE_INIT if(box64_libGL) {lib->w.lib = dlopen(box64_libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(box64_libGL);} else
 #define CUSTOM_INIT \
     lib->w.priv = dlsym(lib->w.lib, "glXGetProcAddress"); \
     if (!box64->glxprocaddress) \
diff --git a/src/wrapped/wrappedlibx11.c b/src/wrapped/wrappedlibx11.c
index 2545cbd2..bf74a1c6 100755
--- a/src/wrapped/wrappedlibx11.c
+++ b/src/wrapped/wrappedlibx11.c
@@ -20,9 +20,6 @@
 const char* libx11Name = "libX11.so.6";
 #define LIBNAME libx11
 
-extern int x11threads;
-extern int x11glx;
-
 typedef int (*XErrorHandler)(void *, void *);
 void* my_XSetErrorHandler(x64emu_t* t, XErrorHandler handler);
 typedef int (*XIOErrorHandler)(void *);
@@ -915,7 +912,7 @@ EXPORT int my_XUnregisterIMInstantiateCallback(x64emu_t* emu, void* d, void* db,
 EXPORT int my_XQueryExtension(x64emu_t* emu, void* display, char* name, int* major, int* first_event, int* first_error)
 {
     int ret = my->XQueryExtension(display, name, major, first_event, first_error);
-    if(!ret && name && !strcmp(name, "GLX") && x11glx) {
+    if(!ret && name && !strcmp(name, "GLX") && box64_x11glx) {
         // hack to force GLX to be accepted, even if not present
         // left major and first_XXX to default...
         ret = 1;
@@ -1154,7 +1151,7 @@ EXPORT void* my_XOpenDisplay(x64emu_t* emu, void* d)
 
 #define CUSTOM_INIT                 \
     getMy(lib);                     \
-    if(x11threads) my->XInitThreads();
+    if(box64_x11threads) my->XInitThreads();
 
 #define CUSTOM_FINI \
     freeMy();
diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c
index 6de8b907..d68ca1a9 100755
--- a/src/wrapped/wrappedsdl2.c
+++ b/src/wrapped/wrappedsdl2.c
@@ -646,7 +646,6 @@ EXPORT void my2_SDL_Log(x64emu_t* emu, void* fmt, void *b) {
 }
 
 void fillGLProcWrapper(box64context_t*);
-extern char* libGL;
 EXPORT void* my2_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) 
 {
     khint_t k;
@@ -658,9 +657,9 @@ EXPORT void* my2_SDL_GL_GetProcAddress(x64emu_t* emu, void* name)
     if(!emu->context->glwrappers) {
         fillGLProcWrapper(emu->context);
         // check if libGL is loaded, load it if not (helps DeadCells)
-        if(!my_glhandle && !GetLibInternal(libGL?libGL:"libGL.so.1")) {
+        if(!my_glhandle && !GetLibInternal(box64_libGL?box64_libGL:"libGL.so.1")) {
             // use a my_dlopen to actually open that lib, like SDL2 is doing...
-            my_glhandle = my_dlopen(emu, libGL?libGL:"libGL.so.1", RTLD_LAZY|RTLD_GLOBAL);
+            my_glhandle = my_dlopen(emu, box64_libGL?box64_libGL:"libGL.so.1", RTLD_LAZY|RTLD_GLOBAL);
         }
     }
     // get proc adress using actual glXGetProcAddress