about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-04-17 18:47:22 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-04-17 18:47:22 +0200
commitc4abaf8c8dd752d40026866f7452ea950ba9786b (patch)
tree04c0634f118a079276aec2d18bf37c3dfd678e9b /src
parent59fe5f3572f1e4cc371f030c111aa3071c9d2480 (diff)
downloadbox64-c4abaf8c8dd752d40026866f7452ea950ba9786b.tar.gz
box64-c4abaf8c8dd752d40026866f7452ea950ba9786b.zip
Added wrapped libXft
Diffstat (limited to 'src')
-rwxr-xr-xsrc/library_list.h1
-rw-r--r--src/wrapped/generated/functions_list.txt3
-rw-r--r--src/wrapped/generated/wrapper.c7
-rw-r--r--src/wrapped/generated/wrapper.h3
-rwxr-xr-xsrc/wrapped/wrappedlibxft.c26
-rwxr-xr-xsrc/wrapped/wrappedlibxft_private.h81
6 files changed, 121 insertions, 0 deletions
diff --git a/src/library_list.h b/src/library_list.h
index 6329c7f7..5dced694 100755
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -41,6 +41,7 @@ GO("libXext.so.6", libxext)
 GO("libXfixes.so.3", libxfixes)
 GO("libXcursor.so.1", libxcursor)
 GO("libXrender.so.1", libxrender)
+GO("libXft.so.2", libxft)
 GO("libXi.so.6", libxi)
 GO("libXss.so.1", libxss)
 GO("libXpm.so.4", libxpm)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index a09d15d4..874c534e 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -663,6 +663,7 @@
 #() vFppipp
 #() vFppWui
 #() vFpppii
+#() vFpppip
 #() vFppppi
 #() vFppppp
 #() iFEippp
@@ -968,6 +969,7 @@
 #() vFppLpppi
 #() vFppLpppp
 #() vFpppiiii
+#() vFpppiipi
 #() vFpppuuuu
 #() vFppppipi
 #() iFEpLiLpV
@@ -1189,6 +1191,7 @@
 #() pFpppppppppppppppp
 #() vFppuiiiiipuiiiiiiii
 #() pFiiiippppppppppppppp
+#() pFpippppppppppppppppp
 #() pFipppppppppppppppppppppp
 #!defined(NOALIGN) iFEpLp
 #!defined(NOALIGN) iFEppu
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 51dd6c20..280af39d 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -697,6 +697,7 @@ typedef void (*vFppiup_t)(void*, void*, int64_t, uint64_t, void*);
 typedef void (*vFppipp_t)(void*, void*, int64_t, void*, void*);
 typedef void (*vFppWui_t)(void*, void*, uint16_t, uint64_t, int64_t);
 typedef void (*vFpppii_t)(void*, void*, void*, int64_t, int64_t);
+typedef void (*vFpppip_t)(void*, void*, void*, int64_t, void*);
 typedef void (*vFppppi_t)(void*, void*, void*, void*, int64_t);
 typedef void (*vFppppp_t)(void*, void*, void*, void*, void*);
 typedef int64_t (*iFEippp_t)(x64emu_t*, int64_t, void*, void*, void*);
@@ -1002,6 +1003,7 @@ typedef void (*vFppipppp_t)(void*, void*, int64_t, void*, void*, void*, void*);
 typedef void (*vFppLpppi_t)(void*, void*, uintptr_t, void*, void*, void*, int64_t);
 typedef void (*vFppLpppp_t)(void*, void*, uintptr_t, void*, void*, void*, void*);
 typedef void (*vFpppiiii_t)(void*, void*, void*, int64_t, int64_t, int64_t, int64_t);
+typedef void (*vFpppiipi_t)(void*, void*, void*, int64_t, int64_t, void*, int64_t);
 typedef void (*vFpppuuuu_t)(void*, void*, void*, uint64_t, uint64_t, uint64_t, uint64_t);
 typedef void (*vFppppipi_t)(void*, void*, void*, void*, int64_t, void*, int64_t);
 typedef int64_t (*iFEpLiLpV_t)(x64emu_t*, void*, uintptr_t, int64_t, uintptr_t, void*, void*);
@@ -1223,6 +1225,7 @@ typedef int64_t (*iFpppppppppppppppp_t)(void*, void*, void*, void*, void*, void*
 typedef void* (*pFpppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
 typedef void (*vFppuiiiiipuiiiiiiii_t)(void*, void*, uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*, uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
 typedef void* (*pFiiiippppppppppppppp_t)(int64_t, int64_t, int64_t, int64_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
+typedef void* (*pFpippppppppppppppppp_t)(void*, int64_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
 typedef void* (*pFipppppppppppppppppppppp_t)(int64_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
 
 #if !defined(NOALIGN)
@@ -1907,6 +1910,7 @@ void vFppiup(x64emu_t *emu, uintptr_t fcn) { vFppiup_t fn = (vFppiup_t)fcn; fn((
 void vFppipp(x64emu_t *emu, uintptr_t fcn) { vFppipp_t fn = (vFppipp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void vFppWui(x64emu_t *emu, uintptr_t fcn) { vFppWui_t fn = (vFppWui_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint16_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8); }
 void vFpppii(x64emu_t *emu, uintptr_t fcn) { vFpppii_t fn = (vFpppii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
+void vFpppip(x64emu_t *emu, uintptr_t fcn) { vFpppip_t fn = (vFpppip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8); }
 void vFppppi(x64emu_t *emu, uintptr_t fcn) { vFppppi_t fn = (vFppppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8); }
 void vFppppp(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFEippp(x64emu_t *emu, uintptr_t fcn) { iFEippp_t fn = (iFEippp_t)fcn; R_RAX=(int64_t)fn(emu, (int64_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
@@ -2212,6 +2216,7 @@ void vFppipppp(x64emu_t *emu, uintptr_t fcn) { vFppipppp_t fn = (vFppipppp_t)fcn
 void vFppLpppi(x64emu_t *emu, uintptr_t fcn) { vFppLpppi_t fn = (vFppLpppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
 void vFppLpppp(x64emu_t *emu, uintptr_t fcn) { vFppLpppp_t fn = (vFppLpppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void vFpppiiii(x64emu_t *emu, uintptr_t fcn) { vFpppiiii_t fn = (vFpppiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
+void vFpppiipi(x64emu_t *emu, uintptr_t fcn) { vFpppiipi_t fn = (vFpppiipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
 void vFpppuuuu(x64emu_t *emu, uintptr_t fcn) { vFpppuuuu_t fn = (vFpppuuuu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); }
 void vFppppipi(x64emu_t *emu, uintptr_t fcn) { vFppppipi_t fn = (vFppppipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
 void iFEpLiLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLiLpV_t fn = (iFEpLiLpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)(R_RSP + 8)); }
@@ -2433,6 +2438,7 @@ void iFpppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppp_t fn
 void pFpppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { pFpppppppppppppppp_t fn = (pFpppppppppppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40), *(void**)(R_RSP + 48), *(void**)(R_RSP + 56), *(void**)(R_RSP + 64), *(void**)(R_RSP + 72), *(void**)(R_RSP + 80)); }
 void vFppuiiiiipuiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppuiiiiipuiiiiiiii_t fn = (vFppuiiiiipuiiiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(uint64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40), *(int64_t*)(R_RSP + 48), *(int64_t*)(R_RSP + 56), *(int64_t*)(R_RSP + 64), *(int64_t*)(R_RSP + 72), *(int64_t*)(R_RSP + 80), *(int64_t*)(R_RSP + 88), *(int64_t*)(R_RSP + 96)); }
 void pFiiiippppppppppppppp(x64emu_t *emu, uintptr_t fcn) { pFiiiippppppppppppppp_t fn = (pFiiiippppppppppppppp_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40), *(void**)(R_RSP + 48), *(void**)(R_RSP + 56), *(void**)(R_RSP + 64), *(void**)(R_RSP + 72), *(void**)(R_RSP + 80), *(void**)(R_RSP + 88), *(void**)(R_RSP + 96), *(void**)(R_RSP + 104)); }
+void pFpippppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { pFpippppppppppppppppp_t fn = (pFpippppppppppppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40), *(void**)(R_RSP + 48), *(void**)(R_RSP + 56), *(void**)(R_RSP + 64), *(void**)(R_RSP + 72), *(void**)(R_RSP + 80), *(void**)(R_RSP + 88), *(void**)(R_RSP + 96), *(void**)(R_RSP + 104)); }
 void pFipppppppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { pFipppppppppppppppppppppp_t fn = (pFipppppppppppppppppppppp_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40), *(void**)(R_RSP + 48), *(void**)(R_RSP + 56), *(void**)(R_RSP + 64), *(void**)(R_RSP + 72), *(void**)(R_RSP + 80), *(void**)(R_RSP + 88), *(void**)(R_RSP + 96), *(void**)(R_RSP + 104), *(void**)(R_RSP + 112), *(void**)(R_RSP + 120), *(void**)(R_RSP + 128), *(void**)(R_RSP + 136)); }
 
 #if !defined(NOALIGN)
@@ -3036,6 +3042,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &vFppipp) return 1;
 	if (fun == &vFppWui) return 1;
 	if (fun == &vFpppii) return 1;
+	if (fun == &vFpppip) return 1;
 	if (fun == &vFppppi) return 1;
 	if (fun == &vFppppp) return 1;
 	if (fun == &iFiiipu) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index c65a1809..59fec967 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -693,6 +693,7 @@ void vFppiup(x64emu_t *emu, uintptr_t fnc);
 void vFppipp(x64emu_t *emu, uintptr_t fnc);
 void vFppWui(x64emu_t *emu, uintptr_t fnc);
 void vFpppii(x64emu_t *emu, uintptr_t fnc);
+void vFpppip(x64emu_t *emu, uintptr_t fnc);
 void vFppppi(x64emu_t *emu, uintptr_t fnc);
 void vFppppp(x64emu_t *emu, uintptr_t fnc);
 void iFEippp(x64emu_t *emu, uintptr_t fnc);
@@ -998,6 +999,7 @@ void vFppipppp(x64emu_t *emu, uintptr_t fnc);
 void vFppLpppi(x64emu_t *emu, uintptr_t fnc);
 void vFppLpppp(x64emu_t *emu, uintptr_t fnc);
 void vFpppiiii(x64emu_t *emu, uintptr_t fnc);
+void vFpppiipi(x64emu_t *emu, uintptr_t fnc);
 void vFpppuuuu(x64emu_t *emu, uintptr_t fnc);
 void vFppppipi(x64emu_t *emu, uintptr_t fnc);
 void iFEpLiLpV(x64emu_t *emu, uintptr_t fnc);
@@ -1219,6 +1221,7 @@ void iFpppppppppppppppp(x64emu_t *emu, uintptr_t fnc);
 void pFpppppppppppppppp(x64emu_t *emu, uintptr_t fnc);
 void vFppuiiiiipuiiiiiiii(x64emu_t *emu, uintptr_t fnc);
 void pFiiiippppppppppppppp(x64emu_t *emu, uintptr_t fnc);
+void pFpippppppppppppppppp(x64emu_t *emu, uintptr_t fnc);
 void pFipppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc);
 
 #if !defined(NOALIGN)
diff --git a/src/wrapped/wrappedlibxft.c b/src/wrapped/wrappedlibxft.c
new file mode 100755
index 00000000..4fa6e083
--- /dev/null
+++ b/src/wrapped/wrappedlibxft.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* libxftName = "libXft.so.2";
+#define LIBNAME libxft
+
+#define CUSTOM_INIT \
+    lib->priv.w.needed = 4; \
+    lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \
+    lib->priv.w.neededlibs[0] = strdup("libX11.so.6");          \
+    lib->priv.w.neededlibs[1] = strdup("libfontconfig.so.1");   \
+    lib->priv.w.neededlibs[2] = strdup("libXrender.so.1");      \
+    lib->priv.w.neededlibs[3] = strdup("libfreetype.so.6");
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedlibxft_private.h b/src/wrapped/wrappedlibxft_private.h
new file mode 100755
index 00000000..de2056ae
--- /dev/null
+++ b/src/wrapped/wrappedlibxft_private.h
@@ -0,0 +1,81 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh....
+#endif
+
+//GO(XftCharExists, 
+//GO(XftCharFontSpecRender, 
+//GO(XftCharIndex, 
+//GO(XftCharSpecRender, 
+//GO(XftColorAllocName, 
+//GO(XftColorAllocValue, 
+//GO(XftColorFree, 
+//GO(XftDefaultHasRender, 
+//GO(XftDefaultSet, 
+//GO(XftDefaultSubstitute, 
+GO(XftDrawChange, vFpp)
+//GO(XftDrawCharFontSpec, 
+//GO(XftDrawCharSpec, 
+//GO(XftDrawColormap, 
+GO(XftDrawCreate, pFpppp)
+//GO(XftDrawCreateAlpha, 
+//GO(XftDrawCreateBitmap, 
+//GO(XftDrawDestroy, 
+//GO(XftDrawDisplay, 
+//GO(XftDrawDrawable, 
+//GO(XftDrawGlyphFontSpec, 
+//GO(XftDrawGlyphs, 
+//GO(XftDrawGlyphSpec, 
+//GO(XftDrawPicture, 
+//GO(XftDrawRect, 
+GO(XftDrawSetClip, iFpp)
+//GO(XftDrawSetClipRectangles, 
+//GO(XftDrawSetSubwindowMode, 
+//GO(XftDrawSrcPicture, 
+//GO(XftDrawString16, 
+GO(XftDrawString32, vFpppiipi)
+//GO(XftDrawString8, 
+//GO(XftDrawStringUtf16, 
+//GO(XftDrawStringUtf8, 
+//GO(XftDrawVisual, 
+//GO(XftFontCheckGlyph, 
+//GO(XftFontClose, 
+//GO(XftFontCopy, 
+//GO(XftFontInfoCreate, 
+//GO(XftFontInfoDestroy, 
+//GO(XftFontInfoEqual, 
+//GO(XftFontInfoHash, 
+//GO(XftFontLoadGlyphs, 
+GO(XftFontMatch, pFpipp)
+GO(XftFontOpen, pFpippppppppppppppppp)  // use ...
+//GO(XftFontOpenInfo, 
+//GO(XftFontOpenName, 
+GO(XftFontOpenPattern, pFpp)
+GO(XftFontOpenXlfd, pFpip)
+//GO(XftFontUnloadGlyphs, 
+//GO(XftGetVersion, 
+//GO(XftGlyphExtents, 
+//GO(XftGlyphFontSpecRender, 
+//GO(XftGlyphRender, 
+//GO(XftGlyphSpecRender, 
+//GO(XftInit, 
+//GO(XftInitFtLibrary, 
+//GO(XftListFonts, 
+//GO(XftLockFace, 
+//GO(XftNameParse, 
+//GO(XftNameUnparse, 
+//GO(XftTextExtents16, 
+GO(XftTextExtents32, vFpppip)
+//GO(XftTextExtents8, 
+//GO(XftTextExtentsUtf16, 
+//GO(XftTextExtentsUtf8, 
+//GO(XftTextRender16, 
+//GO(XftTextRender16BE, 
+//GO(XftTextRender16LE, 
+//GO(XftTextRender32, 
+//GO(XftTextRender32BE, 
+//GO(XftTextRender32LE, 
+//GO(XftTextRender8, 
+//GO(XftTextRenderUtf16, 
+//GO(XftTextRenderUtf8, 
+//GO(XftUnlockFace, 
+//GO(XftXlfdParse,