diff --git a/CMakeLists.txt b/CMakeLists.txt index cc7669d8c..7119e6632 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -645,6 +645,7 @@ set(WRAPPEDS "${BOX64_ROOT}/src/wrapped/wrappedlibpanel.c" "${BOX64_ROOT}/src/wrapped/wrappedlibpci.c" "${BOX64_ROOT}/src/wrapped/wrappedlibpcre.c" + "${BOX64_ROOT}/src/wrapped/wrappedlibpcre216.c" "${BOX64_ROOT}/src/wrapped/wrappedlibpthread.c" "${BOX64_ROOT}/src/wrapped/wrappedlibresolv.c" "${BOX64_ROOT}/src/wrapped/wrappedlibrt.c" diff --git a/src/emu/x64printer.c b/src/emu/x64printer.c index aa139038e..31ae6fc78 100644 --- a/src/emu/x64printer.c +++ b/src/emu/x64printer.c @@ -4643,6 +4643,8 @@ void x64Print(x64emu_t* emu, char* buff, size_t buffsz, const char* func, int ti snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIu32 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9); } else if (w == iFpLupip) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIi32 ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); + } else if (w == iFpLuppp) { + snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } else if (w == iFpLLLLu) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uint32_t)R_R9); } else if (w == iFpLLLLL) { @@ -5035,6 +5037,8 @@ void x64Print(x64emu_t* emu, char* buff, size_t buffsz, const char* func, int ti snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIi64 ", %" PRIp ", %" PRIp ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (intptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } else if (w == pFpLuLpp) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIu64 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9); + } else if (w == pFpLuppp) { + snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } else if (w == pFpLpLuu) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIu64 ", %" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIu32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); } else if (w == pFpLpLLi) { @@ -5563,6 +5567,8 @@ void x64Print(x64emu_t* emu, char* buff, size_t buffsz, const char* func, int ti snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIi32 ", %" PRIp ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } else if (w == iFppLuuii) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu32 ", %" PRIu32 ", %" PRIi32 ", %" PRIi32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); + } else if (w == iFppLLupp) { + snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } else if (w == iFppLLLLu) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9, *(uint32_t*)(R_RSP + 8)); } else if (w == iFppLpLpL) { @@ -6481,6 +6487,8 @@ void x64Print(x64emu_t* emu, char* buff, size_t buffsz, const char* func, int ti snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ", %" PRIu32 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); } else if (w == iFppLiipiiL) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIi32 ", %" PRIi32 ", %" PRIp ", %" PRIi32 ", %" PRIi32 ", %" PRIu64 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24)); + } else if (w == iFppLLupppL) { + snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ", %" PRIu64 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24)); } else if (w == iFppLpiuppp) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIp ", %" PRIi32 ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); } else if (w == iFpppiiipip) { @@ -6877,6 +6885,8 @@ void x64Print(x64emu_t* emu, char* buff, size_t buffsz, const char* func, int ti snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu32 ", %" PRIu32 ", %" PRIp ", %" PRIu64 ", %" PRIi32 ", %" PRIu32 ", %" PRIp ", %" PRIi32 ", %" PRIi32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (uintptr_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40)); } else if (w == iFppuppLLpupp) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIp ", %" PRIu32 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (uintptr_t)R_R9, *(uintptr_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); + } else if (w == iFppLLupppLpp) { + snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIu64 ", %" PRIu32 ", %" PRIp ", %" PRIp ", %" PRIp ", %" PRIu64 ", %" PRIp ", %" PRIp ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); } else if (w == iFpppiiuuiiuu) { snprintf(buff, buffsz, "%04d|%p: Calling %s(%" PRIp ", %" PRIp ", %" PRIp ", %" PRIi32 ", %" PRIi32 ", %" PRIu32 ", %" PRIu32 ", %" PRIi32 ", %" PRIi32 ", %" PRIu32 ", %" PRIu32 ")", tid, *(void**)(R_RSP), func, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40)); } else if (w == iFpppippppppp) { diff --git a/src/library_list.h b/src/library_list.h index ccc169bf5..f289e8079 100644 --- a/src/library_list.h +++ b/src/library_list.h @@ -188,6 +188,7 @@ GO("libtbbbind_2_5.so", tbbbind) GO("libtcmalloc_minimal.so.0", tcmallocminimal) GO("libtcmalloc_minimal.so.4", tcmallocminimal) GO("libpcre.so.3", libpcre) +GO("libpcre2-16.so.0", libpcre216) GO("libvulkan.so.1", vulkan) GO("libvulkan.so", vulkan) GO("libgbm.so.1", gbm) diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 218b67370..b82ff1e30 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -2532,6 +2532,7 @@ #() iFpLuipp #() iFpLuupp #() iFpLupip +#() iFpLuppp #() iFpLLLLu #() iFpLLLLL #() iFpLLLLp @@ -2740,6 +2741,7 @@ #() pFpupppp #() pFplpppp #() pFpLuLpp +#() pFpLuppp #() pFpLpLuu #() pFpLpLLi #() pFpLppii @@ -3016,6 +3018,7 @@ #() iFppLiWwL #() iFppLippp #() iFppLuuii +#() iFppLLupp #() iFppLLLLu #() iFppLpLpL #() iFppLpppp @@ -3507,6 +3510,7 @@ #() iFppuppuuuu #() iFppupppupp #() iFppLiipiiL +#() iFppLLupppL #() iFppLpiuppp #() iFpppiiipip #() iFpppippipi @@ -3723,6 +3727,7 @@ #() iFppippipppip #() iFppuupLiupii #() iFppuppLLpupp +#() iFppLLupppLpp #() iFpppiiuuiiuu #() iFpppippppppp #() iFpppppiiuupp @@ -5927,6 +5932,7 @@ wrappedlibogg: wrappedlibpanel: wrappedlibpci: wrappedlibpcre: +wrappedlibpcre216: wrappedlibpthread: - vFp: - __pthread_register_cancel diff --git a/src/wrapped/generated/wrappedlibpcre216defs.h b/src/wrapped/generated/wrappedlibpcre216defs.h new file mode 100644 index 000000000..acdd832e7 --- /dev/null +++ b/src/wrapped/generated/wrappedlibpcre216defs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.5.0.24) * + *******************************************************************/ +#ifndef __wrappedlibpcre216DEFS_H_ +#define __wrappedlibpcre216DEFS_H_ + + +#endif // __wrappedlibpcre216DEFS_H_ diff --git a/src/wrapped/generated/wrappedlibpcre216types.h b/src/wrapped/generated/wrappedlibpcre216types.h new file mode 100644 index 000000000..2452195d6 --- /dev/null +++ b/src/wrapped/generated/wrappedlibpcre216types.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.5.0.24) * + *******************************************************************/ +#ifndef __wrappedlibpcre216TYPES_H_ +#define __wrappedlibpcre216TYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + + +#define SUPER() ADDED_FUNCTIONS() + +#endif // __wrappedlibpcre216TYPES_H_ diff --git a/src/wrapped/generated/wrappedlibpcre216undefs.h b/src/wrapped/generated/wrappedlibpcre216undefs.h new file mode 100644 index 000000000..93866b50f --- /dev/null +++ b/src/wrapped/generated/wrappedlibpcre216undefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.5.0.24) * + *******************************************************************/ +#ifndef __wrappedlibpcre216UNDEFS_H_ +#define __wrappedlibpcre216UNDEFS_H_ + + +#endif // __wrappedlibpcre216UNDEFS_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 81fad4dc0..e3d7f0ee5 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -2559,6 +2559,7 @@ typedef int32_t (*iFpLIppp_t)(void*, uintptr_t, int64_t, void*, void*, void*); typedef int32_t (*iFpLuipp_t)(void*, uintptr_t, uint32_t, int32_t, void*, void*); typedef int32_t (*iFpLuupp_t)(void*, uintptr_t, uint32_t, uint32_t, void*, void*); typedef int32_t (*iFpLupip_t)(void*, uintptr_t, uint32_t, void*, int32_t, void*); +typedef int32_t (*iFpLuppp_t)(void*, uintptr_t, uint32_t, void*, void*, void*); typedef int32_t (*iFpLLLLu_t)(void*, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uint32_t); typedef int32_t (*iFpLLLLL_t)(void*, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); typedef int32_t (*iFpLLLLp_t)(void*, uintptr_t, uintptr_t, uintptr_t, uintptr_t, void*); @@ -2767,6 +2768,7 @@ typedef void* (*pFpuppip_t)(void*, uint32_t, void*, void*, int32_t, void*); typedef void* (*pFpupppp_t)(void*, uint32_t, void*, void*, void*, void*); typedef void* (*pFplpppp_t)(void*, intptr_t, void*, void*, void*, void*); typedef void* (*pFpLuLpp_t)(void*, uintptr_t, uint32_t, uintptr_t, void*, void*); +typedef void* (*pFpLuppp_t)(void*, uintptr_t, uint32_t, void*, void*, void*); typedef void* (*pFpLpLuu_t)(void*, uintptr_t, void*, uintptr_t, uint32_t, uint32_t); typedef void* (*pFpLpLLi_t)(void*, uintptr_t, void*, uintptr_t, uintptr_t, int32_t); typedef void* (*pFpLppii_t)(void*, uintptr_t, void*, void*, int32_t, int32_t); @@ -3043,6 +3045,7 @@ typedef int32_t (*iFppLiipp_t)(void*, void*, uintptr_t, int32_t, int32_t, void*, typedef int32_t (*iFppLiWwL_t)(void*, void*, uintptr_t, int32_t, uint16_t, int16_t, uintptr_t); typedef int32_t (*iFppLippp_t)(void*, void*, uintptr_t, int32_t, void*, void*, void*); typedef int32_t (*iFppLuuii_t)(void*, void*, uintptr_t, uint32_t, uint32_t, int32_t, int32_t); +typedef int32_t (*iFppLLupp_t)(void*, void*, uintptr_t, uintptr_t, uint32_t, void*, void*); typedef int32_t (*iFppLLLLu_t)(void*, void*, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uint32_t); typedef int32_t (*iFppLpLpL_t)(void*, void*, uintptr_t, void*, uintptr_t, void*, uintptr_t); typedef int32_t (*iFppLpppp_t)(void*, void*, uintptr_t, void*, void*, void*, void*); @@ -3533,6 +3536,7 @@ typedef int32_t (*iFppupuiiii_t)(void*, void*, uint32_t, void*, uint32_t, int32_ typedef int32_t (*iFppuppuuuu_t)(void*, void*, uint32_t, void*, void*, uint32_t, uint32_t, uint32_t, uint32_t); typedef int32_t (*iFppupppupp_t)(void*, void*, uint32_t, void*, void*, void*, uint32_t, void*, void*); typedef int32_t (*iFppLiipiiL_t)(void*, void*, uintptr_t, int32_t, int32_t, void*, int32_t, int32_t, uintptr_t); +typedef int32_t (*iFppLLupppL_t)(void*, void*, uintptr_t, uintptr_t, uint32_t, void*, void*, void*, uintptr_t); typedef int32_t (*iFppLpiuppp_t)(void*, void*, uintptr_t, void*, int32_t, uint32_t, void*, void*, void*); typedef int32_t (*iFpppiiipip_t)(void*, void*, void*, int32_t, int32_t, int32_t, void*, int32_t, void*); typedef int32_t (*iFpppippipi_t)(void*, void*, void*, int32_t, void*, void*, int32_t, void*, int32_t); @@ -3749,6 +3753,7 @@ typedef int32_t (*iFpLLpiiuuiiL_t)(void*, uintptr_t, uintptr_t, void*, int32_t, typedef int32_t (*iFppippipppip_t)(void*, void*, int32_t, void*, void*, int32_t, void*, void*, void*, int32_t, void*); typedef int32_t (*iFppuupLiupii_t)(void*, void*, uint32_t, uint32_t, void*, uintptr_t, int32_t, uint32_t, void*, int32_t, int32_t); typedef int32_t (*iFppuppLLpupp_t)(void*, void*, uint32_t, void*, void*, uintptr_t, uintptr_t, void*, uint32_t, void*, void*); +typedef int32_t (*iFppLLupppLpp_t)(void*, void*, uintptr_t, uintptr_t, uint32_t, void*, void*, void*, uintptr_t, void*, void*); typedef int32_t (*iFpppiiuuiiuu_t)(void*, void*, void*, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t); typedef int32_t (*iFpppippppppp_t)(void*, void*, void*, int32_t, void*, void*, void*, void*, void*, void*, void*); typedef int32_t (*iFpppppiiuupp_t)(void*, void*, void*, void*, void*, int32_t, int32_t, uint32_t, uint32_t, void*, void*); @@ -6562,6 +6567,7 @@ void iFpLIppp(x64emu_t *emu, uintptr_t fcn) { iFpLIppp_t fn = (iFpLIppp_t)fcn; R void iFpLuipp(x64emu_t *emu, uintptr_t fcn) { iFpLuipp_t fn = (iFpLuipp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); } void iFpLuupp(x64emu_t *emu, uintptr_t fcn) { iFpLuupp_t fn = (iFpLuupp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9); } void iFpLupip(x64emu_t *emu, uintptr_t fcn) { iFpLupip_t fn = (iFpLupip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); } +void iFpLuppp(x64emu_t *emu, uintptr_t fcn) { iFpLuppp_t fn = (iFpLuppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void iFpLLLLu(x64emu_t *emu, uintptr_t fcn) { iFpLLLLu_t fn = (iFpLLLLu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uint32_t)R_R9); } void iFpLLLLL(x64emu_t *emu, uintptr_t fcn) { iFpLLLLL_t fn = (iFpLLLLL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9); } void iFpLLLLp(x64emu_t *emu, uintptr_t fcn) { iFpLLLLp_t fn = (iFpLLLLp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (void*)R_R9); } @@ -6770,6 +6776,7 @@ void pFpuppip(x64emu_t *emu, uintptr_t fcn) { pFpuppip_t fn = (pFpuppip_t)fcn; R void pFpupppp(x64emu_t *emu, uintptr_t fcn) { pFpupppp_t fn = (pFpupppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void pFplpppp(x64emu_t *emu, uintptr_t fcn) { pFplpppp_t fn = (pFplpppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void pFpLuLpp(x64emu_t *emu, uintptr_t fcn) { pFpLuLpp_t fn = (pFpLuLpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9); } +void pFpLuppp(x64emu_t *emu, uintptr_t fcn) { pFpLuppp_t fn = (pFpLuppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void pFpLpLuu(x64emu_t *emu, uintptr_t fcn) { pFpLpLuu_t fn = (pFpLpLuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); } void pFpLpLLi(x64emu_t *emu, uintptr_t fcn) { pFpLpLLi_t fn = (pFpLpLLi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (int32_t)R_R9); } void pFpLppii(x64emu_t *emu, uintptr_t fcn) { pFpLppii_t fn = (pFpLppii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9); } @@ -7046,6 +7053,7 @@ void iFppLiipp(x64emu_t *emu, uintptr_t fcn) { iFppLiipp_t fn = (iFppLiipp_t)fcn void iFppLiWwL(x64emu_t *emu, uintptr_t fcn) { iFppLiWwL_t fn = (iFppLiWwL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (uint16_t)R_R8, (int16_t)R_R9, *(uintptr_t*)(R_RSP + 8)); } void iFppLippp(x64emu_t *emu, uintptr_t fcn) { iFppLippp_t fn = (iFppLippp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFppLuuii(x64emu_t *emu, uintptr_t fcn) { iFppLuuii_t fn = (iFppLuuii_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); } +void iFppLLupp(x64emu_t *emu, uintptr_t fcn) { iFppLLupp_t fn = (iFppLLupp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFppLLLLu(x64emu_t *emu, uintptr_t fcn) { iFppLLLLu_t fn = (iFppLLLLu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9, *(uint32_t*)(R_RSP + 8)); } void iFppLpLpL(x64emu_t *emu, uintptr_t fcn) { iFppLpLpL_t fn = (iFppLpLpL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(uintptr_t*)(R_RSP + 8)); } void iFppLpppp(x64emu_t *emu, uintptr_t fcn) { iFppLpppp_t fn = (iFppLpppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } @@ -7536,6 +7544,7 @@ void iFppupuiiii(x64emu_t *emu, uintptr_t fcn) { iFppupuiiii_t fn = (iFppupuiiii void iFppuppuuuu(x64emu_t *emu, uintptr_t fcn) { iFppuppuuuu_t fn = (iFppuppuuuu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24)); } void iFppupppupp(x64emu_t *emu, uintptr_t fcn) { iFppupppupp_t fn = (iFppupppupp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); } void iFppLiipiiL(x64emu_t *emu, uintptr_t fcn) { iFppLiipiiL_t fn = (iFppLiipiiL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24)); } +void iFppLLupppL(x64emu_t *emu, uintptr_t fcn) { iFppLLupppL_t fn = (iFppLLupppL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24)); } void iFppLpiuppp(x64emu_t *emu, uintptr_t fcn) { iFppLpiuppp_t fn = (iFppLpiuppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); } void iFpppiiipip(x64emu_t *emu, uintptr_t fcn) { iFpppiiipip_t fn = (iFpppiiipip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); } void iFpppippipi(x64emu_t *emu, uintptr_t fcn) { iFpppippipi_t fn = (iFpppippipi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); } @@ -7752,6 +7761,7 @@ void iFpLLpiiuuiiL(x64emu_t *emu, uintptr_t fcn) { iFpLLpiiuuiiL_t fn = (iFpLLpi void iFppippipppip(x64emu_t *emu, uintptr_t fcn) { iFppippipppip_t fn = (iFppippipppip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } void iFppuupLiupii(x64emu_t *emu, uintptr_t fcn) { iFppuupLiupii_t fn = (iFppuupLiupii_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (uintptr_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40)); } void iFppuppLLpupp(x64emu_t *emu, uintptr_t fcn) { iFppuppLLpupp_t fn = (iFppuppLLpupp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (uintptr_t)R_R9, *(uintptr_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); } +void iFppLLupppLpp(x64emu_t *emu, uintptr_t fcn) { iFppLLupppLpp_t fn = (iFppLLupppLpp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(uintptr_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); } void iFpppiiuuiiuu(x64emu_t *emu, uintptr_t fcn) { iFpppiiuuiiuu_t fn = (iFpppiiuuiiuu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40)); } void iFpppippppppp(x64emu_t *emu, uintptr_t fcn) { iFpppippppppp_t fn = (iFpppippppppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_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 iFpppppiiuupp(x64emu_t *emu, uintptr_t fcn) { iFpppppiiuupp_t fn = (iFpppppiiuupp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); } @@ -10120,6 +10130,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpLuipp) return 1; if (fun == &iFpLuupp) return 1; if (fun == &iFpLupip) return 1; + if (fun == &iFpLuppp) return 1; if (fun == &iFpLLLLu) return 1; if (fun == &iFpLLLLL) return 1; if (fun == &iFpLLLLp) return 1; @@ -10286,6 +10297,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &pFpupppp) return 1; if (fun == &pFplpppp) return 1; if (fun == &pFpLuLpp) return 1; + if (fun == &pFpLuppp) return 1; if (fun == &pFpLpLuu) return 1; if (fun == &pFpLpLLi) return 1; if (fun == &pFpLppii) return 1; @@ -12404,6 +12416,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpLuipp) return 193; if (fun == &iFpLuupp) return 193; if (fun == &iFpLupip) return 321; + if (fun == &iFpLuppp) return 65; if (fun == &iFpLLLLu) return 513; if (fun == &iFpLLLLL) return 1; if (fun == &iFpLLLLp) return 1; @@ -12570,6 +12583,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &pFpupppp) return 33; if (fun == &pFplpppp) return 1; if (fun == &pFpLuLpp) return 65; + if (fun == &pFpLuppp) return 65; if (fun == &pFpLpLuu) return 769; if (fun == &pFpLpLLi) return 513; if (fun == &pFpLppii) return 769; @@ -14688,6 +14702,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpLuipp) return 193; if (fun == &iFpLuupp) return 193; if (fun == &iFpLupip) return 321; + if (fun == &iFpLuppp) return 65; if (fun == &iFpLLLLu) return 513; if (fun == &iFpLLLLL) return 1; if (fun == &iFpLLLLp) return 1; @@ -14854,6 +14869,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &pFpupppp) return 33; if (fun == &pFplpppp) return 1; if (fun == &pFpLuLpp) return 65; + if (fun == &pFpLuppp) return 65; if (fun == &pFpLpLuu) return 769; if (fun == &pFpLpLLi) return 513; if (fun == &pFpLppii) return 769; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 99840ab54..b4068d960 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -2569,6 +2569,7 @@ void iFpLIppp(x64emu_t *emu, uintptr_t fnc); void iFpLuipp(x64emu_t *emu, uintptr_t fnc); void iFpLuupp(x64emu_t *emu, uintptr_t fnc); void iFpLupip(x64emu_t *emu, uintptr_t fnc); +void iFpLuppp(x64emu_t *emu, uintptr_t fnc); void iFpLLLLu(x64emu_t *emu, uintptr_t fnc); void iFpLLLLL(x64emu_t *emu, uintptr_t fnc); void iFpLLLLp(x64emu_t *emu, uintptr_t fnc); @@ -2777,6 +2778,7 @@ void pFpuppip(x64emu_t *emu, uintptr_t fnc); void pFpupppp(x64emu_t *emu, uintptr_t fnc); void pFplpppp(x64emu_t *emu, uintptr_t fnc); void pFpLuLpp(x64emu_t *emu, uintptr_t fnc); +void pFpLuppp(x64emu_t *emu, uintptr_t fnc); void pFpLpLuu(x64emu_t *emu, uintptr_t fnc); void pFpLpLLi(x64emu_t *emu, uintptr_t fnc); void pFpLppii(x64emu_t *emu, uintptr_t fnc); @@ -3053,6 +3055,7 @@ void iFppLiipp(x64emu_t *emu, uintptr_t fnc); void iFppLiWwL(x64emu_t *emu, uintptr_t fnc); void iFppLippp(x64emu_t *emu, uintptr_t fnc); void iFppLuuii(x64emu_t *emu, uintptr_t fnc); +void iFppLLupp(x64emu_t *emu, uintptr_t fnc); void iFppLLLLu(x64emu_t *emu, uintptr_t fnc); void iFppLpLpL(x64emu_t *emu, uintptr_t fnc); void iFppLpppp(x64emu_t *emu, uintptr_t fnc); @@ -3544,6 +3547,7 @@ void iFppupuiiii(x64emu_t *emu, uintptr_t fnc); void iFppuppuuuu(x64emu_t *emu, uintptr_t fnc); void iFppupppupp(x64emu_t *emu, uintptr_t fnc); void iFppLiipiiL(x64emu_t *emu, uintptr_t fnc); +void iFppLLupppL(x64emu_t *emu, uintptr_t fnc); void iFppLpiuppp(x64emu_t *emu, uintptr_t fnc); void iFpppiiipip(x64emu_t *emu, uintptr_t fnc); void iFpppippipi(x64emu_t *emu, uintptr_t fnc); @@ -3760,6 +3764,7 @@ void iFpLLpiiuuiiL(x64emu_t *emu, uintptr_t fnc); void iFppippipppip(x64emu_t *emu, uintptr_t fnc); void iFppuupLiupii(x64emu_t *emu, uintptr_t fnc); void iFppuppLLpupp(x64emu_t *emu, uintptr_t fnc); +void iFppLLupppLpp(x64emu_t *emu, uintptr_t fnc); void iFpppiiuuiiuu(x64emu_t *emu, uintptr_t fnc); void iFpppippppppp(x64emu_t *emu, uintptr_t fnc); void iFpppppiiuupp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibpcre216.c b/src/wrapped/wrappedlibpcre216.c new file mode 100644 index 000000000..331f25e52 --- /dev/null +++ b/src/wrapped/wrappedlibpcre216.c @@ -0,0 +1,20 @@ +#include +#include +#include +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include "wrappedlibs.h" + +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "callback.h" +#include "debug.h" + +const char* libpcre216Name = "libpcre2-16.so.0"; +#define LIBNAME libpcre216 + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedlibpcre216_private.h b/src/wrapped/wrappedlibpcre216_private.h new file mode 100644 index 000000000..13a5d2457 --- /dev/null +++ b/src/wrapped/wrappedlibpcre216_private.h @@ -0,0 +1,82 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh... +#endif + +//GOM(pcre2_callout_enumerate_16, iFEppp) +GO(pcre2_code_copy_16, pFp) +GO(pcre2_code_copy_with_tables_16, pFp) +GO(pcre2_code_free_16, vFp) +GO(pcre2_compile_16, pFpLuppp) +GO(pcre2_compile_context_copy_16, pFp) +GO(pcre2_compile_context_create_16, pFp) +GO(pcre2_compile_context_free_16, vFp) +GO(pcre2_config_16, iFup) +GO(pcre2_convert_context_copy_16, pFp) +GO(pcre2_convert_context_create_16, pFp) +GO(pcre2_convert_context_free_16, vFp) +GO(pcre2_converted_pattern_free_16, vFp) +GO(pcre2_dfa_match_16, iFppLLupppL) +GO(pcre2_general_context_copy_16, pFp) +//GOM(pcre2_general_context_create_16, pFEppp) +GO(pcre2_general_context_free_16, vFp) +GO(pcre2_get_error_message_16, iFipL) +GO(pcre2_get_mark_16, pFp) +GO(pcre2_get_match_data_heapframes_size_16, LFp) +GO(pcre2_get_match_data_size_16, LFp) +GO(pcre2_get_ovector_count_16, uFp) +GO(pcre2_get_ovector_pointer_16, pFp) +GO(pcre2_get_startchar_16, LFp) +GO(pcre2_jit_compile_16, iFpu) +GO(pcre2_jit_free_unused_memory_16, vFp) +GO(pcre2_jit_match_16, iFppLLupp) +//GOM(pcre2_jit_stack_assign_16, vFEppp) +GO(pcre2_jit_stack_create_16, pFLLp) +GO(pcre2_jit_stack_free_16, vFp) +GO(pcre2_maketables_16, pFp) +GO(pcre2_maketables_free_16, vFpp) +GO(pcre2_match_16, iFppLLupp) +GO(pcre2_match_context_copy_16, pFp) +GO(pcre2_match_context_create_16, pFp) +GO(pcre2_match_context_free_16, vFp) +GO(pcre2_match_data_create_16, pFup) +GO(pcre2_match_data_create_from_pattern_16, pFpp) +GO(pcre2_match_data_free_16, vFp) +GO(pcre2_pattern_convert_16, iFpLuppp) +GO(pcre2_pattern_info_16, iFpup) +GO(pcre2_serialize_decode_16, iFpipp) +GO(pcre2_serialize_encode_16, iFpippp) +GO(pcre2_serialize_free_16, vFp) +GO(pcre2_serialize_get_number_of_codes_16, iFp) +GO(pcre2_set_bsr_16, iFpu) +//GOM(pcre2_set_callout_16, iFEppp) +GO(pcre2_set_character_tables_16, iFpp) +GO(pcre2_set_compile_extra_options_16, iFpu) +//GOM(pcre2_set_compile_recursion_guard_16, iFEppp) +GO(pcre2_set_depth_limit_16, iFpu) +GO(pcre2_set_glob_escape_16, iFpu) +GO(pcre2_set_glob_separator_16, iFpu) +GO(pcre2_set_heap_limit_16, iFpu) +GO(pcre2_set_match_limit_16, iFpu) +GO(pcre2_set_max_pattern_compiled_length_16, iFpL) +GO(pcre2_set_max_pattern_length_16, iFpL) +GO(pcre2_set_max_varlookbehind_16, iFpu) +GO(pcre2_set_newline_16, iFpu) +GO(pcre2_set_offset_limit_16, iFpL) +GO(pcre2_set_optimize_16, iFpu) +GO(pcre2_set_parens_nest_limit_16, iFpu) +GO(pcre2_set_recursion_limit_16, iFpu) +//GOM(pcre2_set_recursion_memory_management_16, iFEpppp) +//GOM(pcre2_set_substitute_callout_16, iFEppp) +//GOM(pcre2_set_substitute_case_callout_16, iFEppp) +GO(pcre2_substitute_16, iFppLLupppLpp) +GO(pcre2_substring_copy_byname_16, iFpppp) +GO(pcre2_substring_copy_bynumber_16, iFpupp) +GO(pcre2_substring_free_16, vFp) +GO(pcre2_substring_get_byname_16, iFpppp) +GO(pcre2_substring_get_bynumber_16, iFpupp) +GO(pcre2_substring_length_byname_16, iFppp) +GO(pcre2_substring_length_bynumber_16, iFpup) +GO(pcre2_substring_list_free_16, vFp) +GO(pcre2_substring_list_get_16, iFppp) +GO(pcre2_substring_nametable_scan_16, iFpppp) +GO(pcre2_substring_number_from_name_16, iFpp)