diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-17 18:47:22 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-04-17 18:47:22 +0200 |
| commit | c4abaf8c8dd752d40026866f7452ea950ba9786b (patch) | |
| tree | 04c0634f118a079276aec2d18bf37c3dfd678e9b /src | |
| parent | 59fe5f3572f1e4cc371f030c111aa3071c9d2480 (diff) | |
| download | box64-c4abaf8c8dd752d40026866f7452ea950ba9786b.tar.gz box64-c4abaf8c8dd752d40026866f7452ea950ba9786b.zip | |
Added wrapped libXft
Diffstat (limited to 'src')
| -rwxr-xr-x | src/library_list.h | 1 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 7 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 3 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxft.c | 26 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxft_private.h | 81 |
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, |