Added a bunch of wrapped functions (for #725)

This commit is contained in:
ptitSeb 2023-04-23 15:25:53 +02:00
parent 5b04c49e74
commit 66abc05259
17 changed files with 133 additions and 29 deletions

View File

@ -489,6 +489,7 @@
#() uFpuu
#() uFpup
#() uFpfu
#() uFpLu
#() uFpLp
#() uFppi
#() uFppu
@ -878,6 +879,7 @@
#() iFppui
#() iFppuu
#() iFppup
#() iFppdd
#() iFppdp
#() iFppll
#() iFpplp
@ -1228,6 +1230,7 @@
#() iFEpppL
#() iFEpppp
#() iFEpppV
#() iFEpppA
#() iFiiipu
#() iFiiipp
#() iFiiupp
@ -2851,6 +2854,7 @@ wrappedglib2:
- g_thread_create
- pFpppp:
- g_hash_table_new_full
- g_list_insert_sorted_with_data
- g_slist_insert_sorted_with_data
- g_thread_try_new
- vFpiLpp:
@ -3349,6 +3353,8 @@ wrappedlibc:
- fts64_open
- fts_open
- pFppp:
- tdelete
- tfind
- tsearch
- vFiipV:
- __syslog_chk
@ -3903,6 +3909,7 @@ wrappedlzma:
- lzma_alone_encoder
- lzma_raw_decoder
- lzma_raw_encoder
- lzma_stream_encoder_mt
- iFpui:
- lzma_easy_encoder
- iFpUi:
@ -4598,6 +4605,7 @@ wrappedxml2:
- xmlHashScanFull
- xmlSchemaSetParserStructuredErrors
- xmlSchemaSetValidStructuredErrors
- xmlTextReaderSetErrorHandler
- iFppp:
- xmlHashRemoveEntry
- xmlXPathRegisterFunc
@ -4611,6 +4619,10 @@ wrappedxml2:
- xmlHashUpdateEntry
- xmlRegisterInputCallbacks
- xmlRegisterOutputCallbacks
- iFpppV:
- xmlTextWriterWriteFormatAttribute
- iFpppA:
- xmlTextWriterWriteVFormatAttribute
- pFpppi:
- xmlParserInputBufferCreateIO
- pFpppp:
@ -4627,6 +4639,7 @@ wrappedxml2:
- xmlHashUpdateEntry3
- pFpppppi:
- xmlCreateIOParserCtxt
- xmlReaderForIO
wrappedxshmfence:
wrappedxslt:
- vFp:

View File

@ -154,6 +154,7 @@ typedef int32_t (*iFpppippppppp_t)(void*, void*, void*, int32_t, void*, void*, v
GO(g_datalist_id_dup_data, pFpupp_t) \
GO(g_thread_create, pFppip_t) \
GO(g_hash_table_new_full, pFpppp_t) \
GO(g_list_insert_sorted_with_data, pFpppp_t) \
GO(g_slist_insert_sorted_with_data, pFpppp_t) \
GO(g_thread_try_new, pFpppp_t) \
GO(g_qsort_with_data, vFpiLpp_t) \

View File

@ -211,6 +211,8 @@ typedef int32_t (*iFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void*
GO(strlcpy, LFppL_t) \
GO(fts64_open, pFpip_t) \
GO(fts_open, pFpip_t) \
GO(tdelete, pFppp_t) \
GO(tfind, pFppp_t) \
GO(tsearch, pFppp_t) \
GO(__syslog_chk, vFiipV_t) \
GO(__vsyslog_chk, vFiipA_t) \

View File

@ -27,6 +27,7 @@ typedef int32_t (*iFpupppLppL_t)(void*, uint32_t, void*, void*, void*, uintptr_t
GO(lzma_alone_encoder, iFpp_t) \
GO(lzma_raw_decoder, iFpp_t) \
GO(lzma_raw_encoder, iFpp_t) \
GO(lzma_stream_encoder_mt, iFpp_t) \
GO(lzma_easy_encoder, iFpui_t) \
GO(lzma_stream_decoder, iFpUi_t) \
GO(lzma_stream_encoder, iFppi_t) \

View File

@ -21,6 +21,8 @@ typedef int32_t (*iFppp_t)(void*, void*, void*);
typedef void* (*pFppp_t)(void*, void*, void*);
typedef void (*vFpppp_t)(void*, void*, void*, void*);
typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
typedef int32_t (*iFpppV_t)(void*, void*, void*, ...);
typedef int32_t (*iFpppA_t)(void*, void*, void*, va_list);
typedef void* (*pFpppi_t)(void*, void*, void*, int32_t);
typedef void* (*pFpppp_t)(void*, void*, void*, void*);
typedef int32_t (*iFppppp_t)(void*, void*, void*, void*, void*);
@ -43,6 +45,7 @@ typedef void* (*pFpppppi_t)(void*, void*, void*, void*, void*, int32_t);
GO(xmlHashScanFull, vFppp_t) \
GO(xmlSchemaSetParserStructuredErrors, vFppp_t) \
GO(xmlSchemaSetValidStructuredErrors, vFppp_t) \
GO(xmlTextReaderSetErrorHandler, vFppp_t) \
GO(xmlHashRemoveEntry, iFppp_t) \
GO(xmlXPathRegisterFunc, iFppp_t) \
GO(xmlNewCharEncodingHandler, pFppp_t) \
@ -52,6 +55,8 @@ typedef void* (*pFpppppi_t)(void*, void*, void*, void*, void*, int32_t);
GO(xmlHashUpdateEntry, iFpppp_t) \
GO(xmlRegisterInputCallbacks, iFpppp_t) \
GO(xmlRegisterOutputCallbacks, iFpppp_t) \
GO(xmlTextWriterWriteFormatAttribute, iFpppV_t) \
GO(xmlTextWriterWriteVFormatAttribute, iFpppA_t) \
GO(xmlParserInputBufferCreateIO, pFpppi_t) \
GO(xmlOutputBufferCreateIO, pFpppp_t) \
GO(xmlHashRemoveEntry3, iFppppp_t) \
@ -60,6 +65,7 @@ typedef void* (*pFpppppi_t)(void*, void*, void*, void*, void*, int32_t);
GO(xmlHashScan3, vFpppppp_t) \
GO(xmlHashScanFull3, vFpppppp_t) \
GO(xmlHashUpdateEntry3, iFpppppp_t) \
GO(xmlCreateIOParserCtxt, pFpppppi_t)
GO(xmlCreateIOParserCtxt, pFpppppi_t) \
GO(xmlReaderForIO, pFpppppi_t)
#endif // __wrappedxml2TYPES_H_

View File

@ -525,6 +525,7 @@ typedef uint32_t (*uFpuC_t)(void*, uint32_t, uint8_t);
typedef uint32_t (*uFpuu_t)(void*, uint32_t, uint32_t);
typedef uint32_t (*uFpup_t)(void*, uint32_t, void*);
typedef uint32_t (*uFpfu_t)(void*, float, uint32_t);
typedef uint32_t (*uFpLu_t)(void*, uintptr_t, uint32_t);
typedef uint32_t (*uFpLp_t)(void*, uintptr_t, void*);
typedef uint32_t (*uFppi_t)(void*, void*, int32_t);
typedef uint32_t (*uFppu_t)(void*, void*, uint32_t);
@ -1265,6 +1266,7 @@ typedef int32_t (*iFEpppi_t)(x64emu_t*, void*, void*, void*, int32_t);
typedef int32_t (*iFEpppL_t)(x64emu_t*, void*, void*, void*, uintptr_t);
typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
typedef int32_t (*iFEpppV_t)(x64emu_t*, void*, void*, void*, void*);
typedef int32_t (*iFEpppA_t)(x64emu_t*, void*, void*, void*, void*);
typedef int32_t (*iFiiipu_t)(int32_t, int32_t, int32_t, void*, uint32_t);
typedef int32_t (*iFiiipp_t)(int32_t, int32_t, int32_t, void*, void*);
typedef int32_t (*iFiiupp_t)(int32_t, int32_t, uint32_t, void*, void*);
@ -1980,7 +1982,6 @@ typedef void* (*pFpppdddi_t)(void*, void*, void*, double, double, double, int32_
typedef void* (*pFpppllli_t)(void*, void*, void*, intptr_t, intptr_t, intptr_t, int32_t);
typedef void* (*pFpppLLLi_t)(void*, void*, void*, uintptr_t, uintptr_t, uintptr_t, int32_t);
typedef void* (*pFppppuuu_t)(void*, void*, void*, void*, uint32_t, uint32_t, uint32_t);
typedef void* (*pFpppppip_t)(void*, void*, void*, void*, void*, int32_t, void*);
typedef void* (*pFpppppuu_t)(void*, void*, void*, void*, void*, uint32_t, uint32_t);
typedef void* (*pFppppppi_t)(void*, void*, void*, void*, void*, void*, int32_t);
typedef void* (*pFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
@ -2932,6 +2933,7 @@ void uFpuC(x64emu_t *emu, uintptr_t fcn) { uFpuC_t fn = (uFpuC_t)fcn; R_RAX=(uin
void uFpuu(x64emu_t *emu, uintptr_t fcn) { uFpuu_t fn = (uFpuu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
void uFpup(x64emu_t *emu, uintptr_t fcn) { uFpup_t fn = (uFpup_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
void uFpfu(x64emu_t *emu, uintptr_t fcn) { uFpfu_t fn = (uFpfu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, emu->xmm[0].f[0], (uint32_t)R_RSI); }
void uFpLu(x64emu_t *emu, uintptr_t fcn) { uFpLu_t fn = (uFpLu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX); }
void uFpLp(x64emu_t *emu, uintptr_t fcn) { uFpLp_t fn = (uFpLp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
void uFppi(x64emu_t *emu, uintptr_t fcn) { uFppi_t fn = (uFppi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
void uFppu(x64emu_t *emu, uintptr_t fcn) { uFppu_t fn = (uFppu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
@ -3321,7 +3323,7 @@ void iFppuw(x64emu_t *emu, uintptr_t fcn) { iFppuw_t fn = (iFppuw_t)fcn; R_RAX=(
void iFppui(x64emu_t *emu, uintptr_t fcn) { iFppui_t fn = (iFppui_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
void iFppuu(x64emu_t *emu, uintptr_t fcn) { iFppuu_t fn = (iFppuu_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
void iFppup(x64emu_t *emu, uintptr_t fcn) { iFppup_t fn = (iFppup_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
void iFppdd(x64emu_t *emu, uintptr_t fcn) { iFppdd_t fn = (iFppdd_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], emu->xmm[0].d[1]); }
void iFppdd(x64emu_t *emu, uintptr_t fcn) { iFppdd_t fn = (iFppdd_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
void iFppdp(x64emu_t *emu, uintptr_t fcn) { iFppdp_t fn = (iFppdp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], (void*)R_RDX); }
void iFppll(x64emu_t *emu, uintptr_t fcn) { iFppll_t fn = (iFppll_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX); }
void iFpplp(x64emu_t *emu, uintptr_t fcn) { iFpplp_t fn = (iFpplp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (void*)R_RCX); }
@ -3672,6 +3674,7 @@ void iFEpppi(x64emu_t *emu, uintptr_t fcn) { iFEpppi_t fn = (iFEpppi_t)fcn; R_RA
void iFEpppL(x64emu_t *emu, uintptr_t fcn) { iFEpppL_t fn = (iFEpppL_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
void iFEpppp(x64emu_t *emu, uintptr_t fcn) { iFEpppp_t fn = (iFEpppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFEpppV(x64emu_t *emu, uintptr_t fcn) { iFEpppV_t fn = (iFEpppV_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
void iFEpppA(x64emu_t *emu, uintptr_t fcn) { iFEpppA_t fn = (iFEpppA_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFiiipu(x64emu_t *emu, uintptr_t fcn) { iFiiipu_t fn = (iFiiipu_t)fcn; R_RAX=(int32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
void iFiiipp(x64emu_t *emu, uintptr_t fcn) { iFiiipp_t fn = (iFiiipp_t)fcn; R_RAX=(int32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFiiupp(x64emu_t *emu, uintptr_t fcn) { iFiiupp_t fn = (iFiiupp_t)fcn; R_RAX=(int32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
@ -4387,7 +4390,6 @@ void pFpppdddi(x64emu_t *emu, uintptr_t fcn) { pFpppdddi_t fn = (pFpppdddi_t)fcn
void pFpppllli(x64emu_t *emu, uintptr_t fcn) { pFpppllli_t fn = (pFpppllli_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9, *(int32_t*)(R_RSP + 8)); }
void pFpppLLLi(x64emu_t *emu, uintptr_t fcn) { pFpppLLLi_t fn = (pFpppLLLi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9, *(int32_t*)(R_RSP + 8)); }
void pFppppuuu(x64emu_t *emu, uintptr_t fcn) { pFppppuuu_t fn = (pFppppuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
void pFpppppip(x64emu_t *emu, uintptr_t fcn) { pFpppppip_t fn = (pFpppppip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
void pFpppppuu(x64emu_t *emu, uintptr_t fcn) { pFpppppuu_t fn = (pFpppppuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
void pFppppppi(x64emu_t *emu, uintptr_t fcn) { pFppppppi_t fn = (pFppppppi_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, *(int32_t*)(R_RSP + 8)); }
void pFppppppp(x64emu_t *emu, uintptr_t fcn) { pFppppppp_t fn = (pFppppppp_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)); }
@ -5267,6 +5269,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &uFpuu) return 1;
if (fun == &uFpup) return 1;
if (fun == &uFpfu) return 2;
if (fun == &uFpLu) return 1;
if (fun == &uFpLp) return 1;
if (fun == &uFppi) return 1;
if (fun == &uFppu) return 1;
@ -5585,7 +5588,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &iFppui) return 1;
if (fun == &iFppuu) return 1;
if (fun == &iFppup) return 1;
if (fun == &iFppdd) return 2;
if (fun == &iFppdd) return 3;
if (fun == &iFppdp) return 2;
if (fun == &iFppll) return 1;
if (fun == &iFpplp) return 1;

View File

@ -526,6 +526,7 @@ void uFpuC(x64emu_t *emu, uintptr_t fnc);
void uFpuu(x64emu_t *emu, uintptr_t fnc);
void uFpup(x64emu_t *emu, uintptr_t fnc);
void uFpfu(x64emu_t *emu, uintptr_t fnc);
void uFpLu(x64emu_t *emu, uintptr_t fnc);
void uFpLp(x64emu_t *emu, uintptr_t fnc);
void uFppi(x64emu_t *emu, uintptr_t fnc);
void uFppu(x64emu_t *emu, uintptr_t fnc);
@ -1266,6 +1267,7 @@ void iFEpppi(x64emu_t *emu, uintptr_t fnc);
void iFEpppL(x64emu_t *emu, uintptr_t fnc);
void iFEpppp(x64emu_t *emu, uintptr_t fnc);
void iFEpppV(x64emu_t *emu, uintptr_t fnc);
void iFEpppA(x64emu_t *emu, uintptr_t fnc);
void iFiiipu(x64emu_t *emu, uintptr_t fnc);
void iFiiipp(x64emu_t *emu, uintptr_t fnc);
void iFiiupp(x64emu_t *emu, uintptr_t fnc);
@ -1981,7 +1983,6 @@ void pFpppdddi(x64emu_t *emu, uintptr_t fnc);
void pFpppllli(x64emu_t *emu, uintptr_t fnc);
void pFpppLLLi(x64emu_t *emu, uintptr_t fnc);
void pFppppuuu(x64emu_t *emu, uintptr_t fnc);
void pFpppppip(x64emu_t *emu, uintptr_t fnc);
void pFpppppuu(x64emu_t *emu, uintptr_t fnc);
void pFppppppi(x64emu_t *emu, uintptr_t fnc);
void pFppppppp(x64emu_t *emu, uintptr_t fnc);

View File

@ -1388,6 +1388,11 @@ EXPORT void my_g_slist_free_full(x64emu_t* emu, void* list, void* f)
my->g_slist_free_full(list, findDestroyFct(f));
}
EXPORT void* my_g_list_insert_sorted_with_data(x64emu_t* emu, void* list, void* data, void* f, void* user)
{
return my->g_list_insert_sorted_with_data(list, data, findGCompareDataFuncFct(f), user);
}
#define PRE_INIT \
if(box64_nogtk) \
return -1;

View File

@ -588,7 +588,7 @@ GO(g_list_index, iFpp)
GO(g_list_insert, pFppi)
GO(g_list_insert_before, pFppp)
GOM(g_list_insert_sorted, pFEppp)
//GO(g_list_insert_sorted_with_data, pFEppBp)
GOM(g_list_insert_sorted_with_data, pFEpppp)
GO(g_list_last, pFp)
GO(g_list_length, uFp)
GO(g_list_nth, pFpu)

View File

@ -4205,3 +4205,5 @@ GO(gtk_gesture_get_type, LFv)
GO(gtk_event_controller_get_type, LFv)
GO(gtk_stack_set_visible_child_name, vFpp)
GO(gtk_stack_get_visible_child_name, pFp)
GO(dummy_iFppdd, iFppdd) // for GtkEventController wrapping

View File

@ -1291,7 +1291,17 @@ EXPORT void* my_tsearch(x64emu_t* emu, void* key, void* root, void* fnc)
EXPORT void my_tdestroy(x64emu_t* emu, void* root, void* fnc)
{
(void)emu;
return tdestroy(root, findfreeFct(fnc));
tdestroy(root, findfreeFct(fnc));
}
EXPORT void* my_tdelete(x64emu_t* emu, void* key, void** root, void* fnc)
{
(void)emu;
return tdelete(key, root, findcompareFct(fnc));
}
EXPORT void* my_tfind(x64emu_t* emu, void* key, void** root, void* fnc)
{
(void)emu;
return tfind(key, root, findcompareFct(fnc));
}
EXPORT void* my_lfind(x64emu_t* emu, void* key, void* base, size_t* nmemb, size_t size, void* fnc)
{

View File

@ -1956,14 +1956,14 @@ GO(tcsendbreak, iFii)
GO(tcsetattr, iFiip)
GO(tcsetpgrp, iFii)
//GO(__tdelete,
//GOW(tdelete, pFpp@)
GOWM(tdelete, pFEppp)
GOWM(tdestroy, vFEpp)
GO(tee, lFiiLu)
GO(telldir, lFp)
GO(tempnam, pFpp)
GOW(textdomain, pFp)
//GO(__tfind,
//GOW(tfind, pFpp@)
GOWM(tfind, pFEppp)
GOW(tgkill, iFiii)
//GO(thrd_current,
//GO(thrd_equal,

View File

@ -200,6 +200,14 @@ EXPORT int my_lzma_alone_encoder(x64emu_t* emu, lzma_stream_t* stream, void* opt
return my->lzma_alone_encoder(stream, options);
}
EXPORT int my_lzma_stream_encoder_mt(x64emu_t* emu, lzma_stream_t* stream, void* options)
{
// not restoring the allocator after, so lzma_code and lzma_end can be used without "GOM" wrapping
if(stream->allocator)
wrap_alloc_struct(stream->allocator, stream->allocator);
return my->lzma_stream_encoder_mt(stream, options);
}
#define CUSTOM_INIT \
getMy(lib);

View File

@ -20,8 +20,8 @@ GO(lzma_auto_decoder, iFpUu)
GO(lzma_check_is_supported, iFi)
//GO(lzma_check_size,
GO(lzma_code, iFpi)
//GO(lzma_cputhreads,
//GO(lzma_crc32,
GO(lzma_cputhreads, uFv)
GO(lzma_crc32, uFpLu)
//GO(lzma_crc64,
//GO(lzma_easy_buffer_encode,
//GO(lzma_easy_decoder_memusage,
@ -70,7 +70,7 @@ GO(lzma_index_uncompressed_size, UFp)
GO(lzma_lzma_preset, iFpu)
//GO(lzma_memlimit_get,
//GO(lzma_memlimit_set,
//GO(lzma_memusage,
GO(lzma_memusage, UFp)
//GO(lzma_mf_is_supported,
//GO(lzma_mode_is_supported,
//GO(lzma_physmem,
@ -88,7 +88,7 @@ GOM(lzma_stream_buffer_decode, iFEpupppLppL)
//GO(lzma_stream_buffer_encode,
GOM(lzma_stream_decoder, iFEpUi)
GOM(lzma_stream_encoder, iFEppi)
//GO(lzma_stream_encoder_mt,
GOM(lzma_stream_encoder_mt, iFEpp)
//GO(lzma_stream_encoder_mt_memusage,
//GO(lzma_stream_flags_compare,
GO(lzma_stream_footer_decode, iFpp)

View File

@ -16,6 +16,7 @@
#include "box64context.h"
#include "librarian.h"
#include "callback.h"
#include "myalign.h"
const char* xml2Name =
#ifdef ANDROID
@ -1215,6 +1216,29 @@ static void* find_xmlOutputOpenCallback_Fct(void* fct) // this one have a VAArg
return NULL;
}
// xmlTextReaderErrorFunc ...
#define GO(A) \
static uintptr_t my_xmlTextReaderErrorFunc_fct_##A = 0; \
static void my_xmlTextReaderErrorFunc_##A(void* a, void* b, int c, void* d) \
{ \
RunFunction(my_context, my_xmlTextReaderErrorFunc_fct_##A, 4, a, b, c, d); \
}
SUPER()
#undef GO
static void* find_xmlTextReaderErrorFunc_Fct(void* fct) // this one have a VAArg
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_xmlTextReaderErrorFunc_fct_##A == (uintptr_t)fct) return my_xmlTextReaderErrorFunc_##A;
SUPER()
#undef GO
#define GO(A) if(my_xmlTextReaderErrorFunc_fct_##A == 0) {my_xmlTextReaderErrorFunc_fct_##A = (uintptr_t)fct; return my_xmlTextReaderErrorFunc_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libxml2 xmlTextReaderErrorFunc callback\n");
return NULL;
}
#undef SUPER
EXPORT void* my_xmlHashCopy(x64emu_t* emu, void* table, void* f)
@ -1438,6 +1462,34 @@ EXPORT int my_xmlRegisterOutputCallbacks(x64emu_t* emu, void* match, void* open,
return my->xmlRegisterOutputCallbacks(find_xmlOutputMatchCallback_Fct(match), find_xmlOutputOpenCallback_Fct(open), find_xmlOutputWriteCallback_Fct(write), find_xmlOutputCloseCallback_Fct(close));
}
EXPORT int my_xmlTextWriterWriteVFormatAttribute(x64emu_t* emu, void* writer, void* name, void* fmt, x64_va_list_t b)
{
#ifdef CONVERT_VALIST
CONVERT_VALIST(b);
#else
myStackAlignValist(emu, (const char*)fmt, emu->scratch, b);
PREPARE_VALIST;
#endif
return my->xmlTextWriterWriteVFormatAttribute(writer, name, fmt, VARARGS);
}
EXPORT int my_xmlTextWriterWriteFormatAttribute(x64emu_t* emu, void* writer, void* name, void* fmt, void* b)
{
myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2);
PREPARE_VALIST;
return my->xmlTextWriterWriteVFormatAttribute(writer, name, fmt, VARARGS);
}
EXPORT void* my_xmlReaderForIO(void *emu, void * ioread, void * ioclose, void * ioctx, char * URL, char * encoding, int options)
{
return my->xmlReaderForIO(find_xmlInputReadCallback_Fct(ioread), find_xmlInputCloseCallback_Fct(ioclose), ioctx, URL, encoding, options);
}
EXPORT void my_xmlTextReaderSetErrorHandler(x64emu_t* emu, void* reader, void* f, void* arg)
{
my->xmlTextReaderSetErrorHandler(reader, find_xmlTextReaderErrorFunc_Fct(f), arg);
}
#define CUSTOM_INIT \
getMy(lib);

View File

@ -362,7 +362,7 @@ GO(xmlFreeRefTable, vFp)
//GO(xmlFreeRMutex,
//GO(xmlFreeStreamCtxt,
GO(xmlFreeTextReader, vFp)
//GO(xmlFreeTextWriter,
GO(xmlFreeTextWriter, vFp)
//GO(xmlFreeURI,
GO(xmlFreeValidCtxt, vFp)
//GO(xmlGcMemGet,
@ -622,7 +622,7 @@ GO(xmlNewTextLen, pFpi)
//GO(xmlNewTextWriter,
//GO(xmlNewTextWriterDoc,
//GO(xmlNewTextWriterFilename,
//GO(xmlNewTextWriterMemory,
GO(xmlNewTextWriterMemory, pFpi)
//GO(xmlNewTextWriterPushParser,
//GO(xmlNewTextWriterTree,
GO(xmlNewValidCtxt, pFv)
@ -776,7 +776,7 @@ GO(xmlReadDoc, pFpppi)
//GO(xmlReaderForDoc,
//GO(xmlReaderForFd,
//GO(xmlReaderForFile,
//GO(xmlReaderForIO,
GOM(xmlReaderForIO, pFEpppppi)
GO(xmlReaderForMemory, pFpippi)
//GO(xmlReaderNewDoc,
//GO(xmlReaderNewFd,
@ -1103,7 +1103,7 @@ GO(xmlTextReaderRead, iFp)
//GO(xmlTextReaderRelaxNGValidate,
//GO(xmlTextReaderSchemaValidate,
//GO(xmlTextReaderSchemaValidateCtxt,
//GO(xmlTextReaderSetErrorHandler,
GOM(xmlTextReaderSetErrorHandler, vFEppp)
//GO(xmlTextReaderSetParserProp,
//GO(xmlTextReaderSetSchema,
//GO(xmlTextReaderSetStructuredErrorHandler,
@ -1114,32 +1114,32 @@ GO(xmlTextReaderRead, iFp)
//GO(xmlTextWriterEndAttribute,
//GO(xmlTextWriterEndCDATA,
//GO(xmlTextWriterEndComment,
//GO(xmlTextWriterEndDocument,
GO(xmlTextWriterEndDocument, iFp)
//GO(xmlTextWriterEndDTD,
//GO(xmlTextWriterEndDTDAttlist,
//GO(xmlTextWriterEndDTDElement,
//GO(xmlTextWriterEndDTDEntity,
//GO(xmlTextWriterEndElement,
GO(xmlTextWriterEndElement, iFp)
//GO(xmlTextWriterEndPI,
//GO(xmlTextWriterFlush,
//GO(xmlTextWriterFullEndElement,
//GO(xmlTextWriterSetIndent,
GO(xmlTextWriterSetIndent, iFpi)
//GO(xmlTextWriterSetIndentString,
//GO(xmlTextWriterStartAttribute,
//GO(xmlTextWriterStartAttributeNS,
//GO(xmlTextWriterStartCDATA,
//GO(xmlTextWriterStartComment,
//GO(xmlTextWriterStartDocument,
GO(xmlTextWriterStartDocument, iFpppp)
//GO(xmlTextWriterStartDTD,
//GO(xmlTextWriterStartDTDAttlist,
//GO(xmlTextWriterStartDTDElement,
//GO(xmlTextWriterStartDTDEntity,
//GO(xmlTextWriterStartElement,
GO(xmlTextWriterStartElement, iFpp)
//GO(xmlTextWriterStartElementNS,
//GO(xmlTextWriterStartPI,
//GO(xmlTextWriterWriteAttribute,
GO(xmlTextWriterWriteAttribute, iFppp)
//GO(xmlTextWriterWriteAttributeNS,
//GO(xmlTextWriterWriteBase64,
GO(xmlTextWriterWriteBase64, iFppii)
//GO(xmlTextWriterWriteBinHex,
//GO(xmlTextWriterWriteCDATA,
//GO(xmlTextWriterWriteComment,
@ -1153,7 +1153,7 @@ GO(xmlTextReaderRead, iFp)
//GO(xmlTextWriterWriteDTDNotation,
//GO(xmlTextWriterWriteElement,
//GO(xmlTextWriterWriteElementNS,
//GO(xmlTextWriterWriteFormatAttribute,
GOM(xmlTextWriterWriteFormatAttribute, iFEpppV)
//GO(xmlTextWriterWriteFormatAttributeNS,
//GO(xmlTextWriterWriteFormatCDATA,
//GO(xmlTextWriterWriteFormatComment,
@ -1169,8 +1169,8 @@ GO(xmlTextReaderRead, iFp)
//GO(xmlTextWriterWritePI,
//GO(xmlTextWriterWriteRaw,
//GO(xmlTextWriterWriteRawLen,
//GO(xmlTextWriterWriteString,
//GO(xmlTextWriterWriteVFormatAttribute,
GO(xmlTextWriterWriteString, iFpp)
GOM(xmlTextWriterWriteVFormatAttribute, iFEpppA)
//GO(xmlTextWriterWriteVFormatAttributeNS,
//GO(xmlTextWriterWriteVFormatCDATA,
//GO(xmlTextWriterWriteVFormatComment,

View File

@ -3,5 +3,5 @@ project("helper")
find_package(Clang REQUIRED CONFIG)
add_executable(helper main.cpp gen.cpp)
#target_include_directories(helper SYSTEM PUBLIC ${CLANG_INCLUDE_DIRS})
target_include_directories(helper SYSTEM PUBLIC ${CLANG_INCLUDE_DIRS})
target_link_libraries(helper PUBLIC clang-cpp LLVM)