From ea837908b6bdf79f3c49763bc68f19f4867a8898 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 14 Nov 2021 15:15:47 +0100 Subject: [PATCH] Added wrapped libldap_r and liblber (helps wine) --- CMakeLists.txt | 2 + src/library_list.h | 4 +- src/wrapped/generated/functions_list.txt | 12 + src/wrapped/generated/wrappedlberdefs.h | 8 + src/wrapped/generated/wrappedlbertypes.h | 17 + src/wrapped/generated/wrappedlberundefs.h | 8 + src/wrapped/generated/wrappedldaprdefs.h | 8 + src/wrapped/generated/wrappedldaprtypes.h | 19 + src/wrapped/generated/wrappedldaprundefs.h | 8 + src/wrapped/generated/wrapper.c | 17 + src/wrapped/generated/wrapper.h | 8 + src/wrapped/wrappedlber.c | 24 + src/wrapped/wrappedlber_private.h | 140 ++++++ src/wrapped/wrappedldapr.c | 113 +++++ src/wrapped/wrappedldapr_private.h | 510 +++++++++++++++++++++ 15 files changed, 896 insertions(+), 2 deletions(-) create mode 100644 src/wrapped/generated/wrappedlberdefs.h create mode 100644 src/wrapped/generated/wrappedlbertypes.h create mode 100644 src/wrapped/generated/wrappedlberundefs.h create mode 100644 src/wrapped/generated/wrappedldaprdefs.h create mode 100644 src/wrapped/generated/wrappedldaprtypes.h create mode 100644 src/wrapped/generated/wrappedldaprundefs.h create mode 100755 src/wrapped/wrappedlber.c create mode 100755 src/wrapped/wrappedlber_private.h create mode 100755 src/wrapped/wrappedldapr.c create mode 100755 src/wrapped/wrappedldapr_private.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 94c221be..9106a753 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -340,6 +340,8 @@ set(WRAPPEDS "${BOX64_ROOT}/src/wrapped/wrappedxkbcommon.c" "${BOX64_ROOT}/src/wrapped/wrappedxkbcommonx11.c" "${BOX64_ROOT}/src/wrapped/wrappedxml2.c" + "${BOX64_ROOT}/src/wrapped/wrappedldapr.c" + "${BOX64_ROOT}/src/wrapped/wrappedlber.c" ) #set(WRAPPEDS_HEAD "${BOX64_ROOT}/src/wrapped/wrappedd3dadapter9_gen.h") diff --git a/src/library_list.h b/src/library_list.h index cbfdf2fe..e25b8d88 100755 --- a/src/library_list.h +++ b/src/library_list.h @@ -155,8 +155,8 @@ GO("libcups.so.2", libcups) //GO("libwayland-client.so.0", waylandclient) GO("libxml2.so.2", xml2) //GO("libxslt.so.1", xslt) -//GO("libldap_r-2.4.so.2", ldapr) -//GO("liblber-2.4.so.2", lber) +GO("libldap_r-2.4.so.2", ldapr) +GO("liblber-2.4.so.2", lber) //GO("libnsl.so.1", nsl) //GO("liblcms2.so.2", lcms2) GO("libkrb5.so.3", krb5) diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 59b66fce..a0109dde 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -452,6 +452,7 @@ #() LFpLp #() LFppi #() LFppL +#() LFppp #() LFSpL #() pFEip #() pFEiV @@ -1490,6 +1491,7 @@ #() iFpppippp #() iFpppuiii #() iFppppiii +#() iFppppipp #() iFppppdpi #() iFpppppip #() iFpppppup @@ -1604,7 +1606,9 @@ #() iFpppipipi #() iFpppipppp #() iFppppiipi +#() iFppppippp #() iFppppppii +#() iFpppppppi #() iFpppppppp #() uFEipipppp #() uFEpiupppp @@ -1674,6 +1678,7 @@ #() iFEpiiiiipi #() iFEpppipppp #() iFEppplPPPP +#() iFEpppppupp #() iFEppPPPPPP #() iFiiiiiiiip #() iFiiiipiiip @@ -1784,6 +1789,7 @@ #() iFEpppipppppp #() iFEppppiiiiuu #() iFiiiiiiiiiip +#() iFppippipppip #() iFppppiiuuiiL #() uFEpLiupppLuV #() uFEpLippppLup @@ -1857,12 +1863,14 @@ #() vFppuiiiiipuiiiiiiii #() vFpppipppppppppppppp #() iFpppppppppppppppppp +#() LFpppppppppppppppppp #() pFippppppppppppppppp #() vFpiiiiiiiiiiiiiiiiii #() pFiiiippppppppppppppp #() pFpippppppppppppppppp #() iFpppppppppppppppppppppp #() pFipppppppppppppppppppppp +#() iFpppppppppppppppppppppppppppppppppp #defined(HAVE_LD80BITS) DFD #defined(HAVE_LD80BITS) vFppippDDC #!defined(HAVE_LD80BITS) KFK @@ -2373,6 +2381,10 @@ wrappedgtkx112: wrappedkrb5: - iFppppppipp: - krb5_get_init_creds_password +wrappedlber: +wrappedldapr: +- iFpppppupp: + - ldap_sasl_interactive_bind_s wrappedldlinux: - pFp: - __tls_get_addr diff --git a/src/wrapped/generated/wrappedlberdefs.h b/src/wrapped/generated/wrappedlberdefs.h new file mode 100644 index 00000000..29e36b09 --- /dev/null +++ b/src/wrapped/generated/wrappedlberdefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlberDEFS_H_ +#define __wrappedlberDEFS_H_ + + +#endif // __wrappedlberDEFS_H_ diff --git a/src/wrapped/generated/wrappedlbertypes.h b/src/wrapped/generated/wrappedlbertypes.h new file mode 100644 index 00000000..62111cfe --- /dev/null +++ b/src/wrapped/generated/wrappedlbertypes.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlberTYPES_H_ +#define __wrappedlberTYPES_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 // __wrappedlberTYPES_H_ diff --git a/src/wrapped/generated/wrappedlberundefs.h b/src/wrapped/generated/wrappedlberundefs.h new file mode 100644 index 00000000..73e3bc35 --- /dev/null +++ b/src/wrapped/generated/wrappedlberundefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlberUNDEFS_H_ +#define __wrappedlberUNDEFS_H_ + + +#endif // __wrappedlberUNDEFS_H_ diff --git a/src/wrapped/generated/wrappedldaprdefs.h b/src/wrapped/generated/wrappedldaprdefs.h new file mode 100644 index 00000000..66f62194 --- /dev/null +++ b/src/wrapped/generated/wrappedldaprdefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedldaprDEFS_H_ +#define __wrappedldaprDEFS_H_ + + +#endif // __wrappedldaprDEFS_H_ diff --git a/src/wrapped/generated/wrappedldaprtypes.h b/src/wrapped/generated/wrappedldaprtypes.h new file mode 100644 index 00000000..48a4b90e --- /dev/null +++ b/src/wrapped/generated/wrappedldaprtypes.h @@ -0,0 +1,19 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedldaprTYPES_H_ +#define __wrappedldaprTYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef int64_t (*iFpppppupp_t)(void*, void*, void*, void*, void*, uint64_t, void*, void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(ldap_sasl_interactive_bind_s, iFpppppupp_t) + +#endif // __wrappedldaprTYPES_H_ diff --git a/src/wrapped/generated/wrappedldaprundefs.h b/src/wrapped/generated/wrappedldaprundefs.h new file mode 100644 index 00000000..6a78237f --- /dev/null +++ b/src/wrapped/generated/wrappedldaprundefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedldaprUNDEFS_H_ +#define __wrappedldaprUNDEFS_H_ + + +#endif // __wrappedldaprUNDEFS_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 5ee51bbe..8f7b19f5 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -486,6 +486,7 @@ typedef uintptr_t (*LFpLi_t)(void*, uintptr_t, int64_t); typedef uintptr_t (*LFpLp_t)(void*, uintptr_t, void*); typedef uintptr_t (*LFppi_t)(void*, void*, int64_t); typedef uintptr_t (*LFppL_t)(void*, void*, uintptr_t); +typedef uintptr_t (*LFppp_t)(void*, void*, void*); typedef uintptr_t (*LFSpL_t)(void*, void*, uintptr_t); typedef void* (*pFEip_t)(x64emu_t*, int64_t, void*); typedef void* (*pFEiV_t)(x64emu_t*, int64_t, void*); @@ -1524,6 +1525,7 @@ typedef int64_t (*iFpppippi_t)(void*, void*, void*, int64_t, void*, void*, int64 typedef int64_t (*iFpppippp_t)(void*, void*, void*, int64_t, void*, void*, void*); typedef int64_t (*iFpppuiii_t)(void*, void*, void*, uint64_t, int64_t, int64_t, int64_t); typedef int64_t (*iFppppiii_t)(void*, void*, void*, void*, int64_t, int64_t, int64_t); +typedef int64_t (*iFppppipp_t)(void*, void*, void*, void*, int64_t, void*, void*); typedef int64_t (*iFppppdpi_t)(void*, void*, void*, void*, double, void*, int64_t); typedef int64_t (*iFpppppip_t)(void*, void*, void*, void*, void*, int64_t, void*); typedef int64_t (*iFpppppup_t)(void*, void*, void*, void*, void*, uint64_t, void*); @@ -1638,7 +1640,9 @@ typedef int64_t (*iFpppiippp_t)(void*, void*, void*, int64_t, int64_t, void*, vo typedef int64_t (*iFpppipipi_t)(void*, void*, void*, int64_t, void*, int64_t, void*, int64_t); typedef int64_t (*iFpppipppp_t)(void*, void*, void*, int64_t, void*, void*, void*, void*); typedef int64_t (*iFppppiipi_t)(void*, void*, void*, void*, int64_t, int64_t, void*, int64_t); +typedef int64_t (*iFppppippp_t)(void*, void*, void*, void*, int64_t, void*, void*, void*); typedef int64_t (*iFppppppii_t)(void*, void*, void*, void*, void*, void*, int64_t, int64_t); +typedef int64_t (*iFpppppppi_t)(void*, void*, void*, void*, void*, void*, void*, int64_t); typedef int64_t (*iFpppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*); typedef uint64_t (*uFEipipppp_t)(x64emu_t*, int64_t, void*, int64_t, void*, void*, void*, void*); typedef uint64_t (*uFEpiupppp_t)(x64emu_t*, void*, int64_t, uint64_t, void*, void*, void*, void*); @@ -1708,6 +1712,7 @@ typedef void (*vFpppppippp_t)(void*, void*, void*, void*, void*, int64_t, void*, typedef int64_t (*iFEpiiiiipi_t)(x64emu_t*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, int64_t); typedef int64_t (*iFEpppipppp_t)(x64emu_t*, void*, void*, void*, int64_t, void*, void*, void*, void*); typedef int64_t (*iFEppplPPPP_t)(x64emu_t*, void*, void*, void*, intptr_t, void*, void*, void*, void*); +typedef int64_t (*iFEpppppupp_t)(x64emu_t*, void*, void*, void*, void*, void*, uint64_t, void*, void*); typedef int64_t (*iFEppPPPPPP_t)(x64emu_t*, void*, void*, void*, void*, void*, void*, void*, void*); typedef int64_t (*iFiiiiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*); typedef int64_t (*iFiiiipiiip_t)(int64_t, int64_t, int64_t, int64_t, void*, int64_t, int64_t, int64_t, void*); @@ -1818,6 +1823,7 @@ typedef void (*vFppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, typedef int64_t (*iFEpppipppppp_t)(x64emu_t*, void*, void*, void*, int64_t, void*, void*, void*, void*, void*, void*); typedef int64_t (*iFEppppiiiiuu_t)(x64emu_t*, void*, void*, void*, void*, int64_t, int64_t, int64_t, int64_t, uint64_t, uint64_t); typedef int64_t (*iFiiiiiiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*); +typedef int64_t (*iFppippipppip_t)(void*, void*, int64_t, void*, void*, int64_t, void*, void*, void*, int64_t, void*); typedef int64_t (*iFppppiiuuiiL_t)(void*, void*, void*, void*, int64_t, int64_t, uint64_t, uint64_t, int64_t, int64_t, uintptr_t); typedef uint64_t (*uFEpLiupppLuV_t)(x64emu_t*, void*, uintptr_t, int64_t, uint64_t, void*, void*, void*, uintptr_t, uint64_t, void*); typedef uint64_t (*uFEpLippppLup_t)(x64emu_t*, void*, uintptr_t, int64_t, void*, void*, void*, void*, uintptr_t, uint64_t, void*); @@ -1891,12 +1897,14 @@ typedef void* (*pFppippipipipipipip_t)(void*, void*, int64_t, void*, void*, int6 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 (*vFpppipppppppppppppp_t)(void*, void*, void*, int64_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef int64_t (*iFpppppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); +typedef uintptr_t (*LFpppppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef void* (*pFippppppppppppppppp_t)(int64_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef void (*vFpiiiiiiiiiiiiiiiiii_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_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 int64_t (*iFpppppppppppppppppppppp_t)(void*, void*, void*, void*, void*, 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*); +typedef int64_t (*iFpppppppppppppppppppppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); #if defined(HAVE_LD80BITS) typedef long double (*DFD_t)(long double); @@ -2376,6 +2384,7 @@ void LFpLi(x64emu_t *emu, uintptr_t fcn) { LFpLi_t fn = (LFpLi_t)fcn; R_RAX=(uin void LFpLp(x64emu_t *emu, uintptr_t fcn) { LFpLp_t fn = (LFpLp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); } void LFppi(x64emu_t *emu, uintptr_t fcn) { LFppi_t fn = (LFppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); } void LFppL(x64emu_t *emu, uintptr_t fcn) { LFppL_t fn = (LFppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); } +void LFppp(x64emu_t *emu, uintptr_t fcn) { LFppp_t fn = (LFppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); } void LFSpL(x64emu_t *emu, uintptr_t fcn) { LFSpL_t fn = (LFSpL_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI, (uintptr_t)R_RDX); } void pFEip(x64emu_t *emu, uintptr_t fcn) { pFEip_t fn = (pFEip_t)fcn; R_RAX=(uintptr_t)fn(emu, (int64_t)R_RDI, (void*)R_RSI); } void pFEiV(x64emu_t *emu, uintptr_t fcn) { pFEiV_t fn = (pFEiV_t)fcn; R_RAX=(uintptr_t)fn(emu, (int64_t)R_RDI, (void*)(R_RSP + 8)); } @@ -3414,6 +3423,7 @@ void iFpppippi(x64emu_t *emu, uintptr_t fcn) { iFpppippi_t fn = (iFpppippi_t)fcn void iFpppippp(x64emu_t *emu, uintptr_t fcn) { iFpppippp_t fn = (iFpppippp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFpppuiii(x64emu_t *emu, uintptr_t fcn) { iFpppuiii_t fn = (iFpppuiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } void iFppppiii(x64emu_t *emu, uintptr_t fcn) { iFppppiii_t fn = (iFppppiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } +void iFppppipp(x64emu_t *emu, uintptr_t fcn) { iFppppipp_t fn = (iFppppipp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFppppdpi(x64emu_t *emu, uintptr_t fcn) { iFppppdpi_t fn = (iFppppdpi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, emu->xmm[0].d[0], (void*)R_R8, (int64_t)R_R9); } void iFpppppip(x64emu_t *emu, uintptr_t fcn) { iFpppppip_t fn = (iFpppppip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); } void iFpppppup(x64emu_t *emu, uintptr_t fcn) { iFpppppup_t fn = (iFpppppup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8)); } @@ -3528,7 +3538,9 @@ void iFpppiippp(x64emu_t *emu, uintptr_t fcn) { iFpppiippp_t fn = (iFpppiippp_t) void iFpppipipi(x64emu_t *emu, uintptr_t fcn) { iFpppipipi_t fn = (iFpppipipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void iFpppipppp(x64emu_t *emu, uintptr_t fcn) { iFpppipppp_t fn = (iFpppipppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void iFppppiipi(x64emu_t *emu, uintptr_t fcn) { iFppppiipi_t fn = (iFppppiipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } +void iFppppippp(x64emu_t *emu, uintptr_t fcn) { iFppppippp_t fn = (iFppppippp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void iFppppppii(x64emu_t *emu, uintptr_t fcn) { iFppppppii_t fn = (iFppppppii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } +void iFpppppppi(x64emu_t *emu, uintptr_t fcn) { iFpppppppi_t fn = (iFpppppppi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void iFpppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppp_t fn = (iFpppppppp_t)fcn; R_RAX=(int64_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 uFEipipppp(x64emu_t *emu, uintptr_t fcn) { uFEipipppp_t fn = (uFEipipppp_t)fcn; R_RAX=(uint64_t)fn(emu, (int64_t)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void uFEpiupppp(x64emu_t *emu, uintptr_t fcn) { uFEpiupppp_t fn = (uFEpiupppp_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } @@ -3598,6 +3610,7 @@ void vFpppppippp(x64emu_t *emu, uintptr_t fcn) { vFpppppippp_t fn = (vFpppppippp void iFEpiiiiipi(x64emu_t *emu, uintptr_t fcn) { iFEpiiiiipi_t fn = (iFEpiiiiipi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void iFEpppipppp(x64emu_t *emu, uintptr_t fcn) { iFEpppipppp_t fn = (iFEpppipppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void iFEppplPPPP(x64emu_t *emu, uintptr_t fcn) { iFEppplPPPP_t fn = (iFEppplPPPP_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (intptr_t)R_RCX, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); } +void iFEpppppupp(x64emu_t *emu, uintptr_t fcn) { iFEpppppupp_t fn = (iFEpppppupp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void iFEppPPPPPP(x64emu_t *emu, uintptr_t fcn) { iFEppPPPPPP_t fn = (iFEppPPPPPP_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, *(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 iFiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiip_t fn = (iFiiiiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_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)); } void iFiiiipiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiipiiip_t fn = (iFiiiipiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); } @@ -3708,6 +3721,7 @@ void vFppppppppppp(x64emu_t *emu, uintptr_t fcn) { vFppppppppppp_t fn = (vFppppp void iFEpppipppppp(x64emu_t *emu, uintptr_t fcn) { iFEpppipppppp_t fn = (iFEpppipppppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)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 iFEppppiiiiuu(x64emu_t *emu, uintptr_t fcn) { iFEppppiiiiuu_t fn = (iFEppppiiiiuu_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(uint64_t*)(R_RSP + 32)); } void iFiiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiiiip_t fn = (iFiiiiiiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_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), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } +void iFppippipppip(x64emu_t *emu, uintptr_t fcn) { iFppippipppip_t fn = (iFppippipppip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } void iFppppiiuuiiL(x64emu_t *emu, uintptr_t fcn) { iFppppiiuuiiL_t fn = (iFppppiiuuiiL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(uintptr_t*)(R_RSP + 40)); } void uFEpLiupppLuV(x64emu_t *emu, uintptr_t fcn) { uFEpLiupppLuV_t fn = (uFEpLiupppLuV_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(uintptr_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), (void*)(R_RSP + 32)); } void uFEpLippppLup(x64emu_t *emu, uintptr_t fcn) { uFEpLippppLup_t fn = (uFEpLippppLup_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(uintptr_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); } @@ -3781,12 +3795,14 @@ void pFppippipipipipipip(x64emu_t *emu, uintptr_t fcn) { pFppippipipipipipip_t f 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 vFpppipppppppppppppp(x64emu_t *emu, uintptr_t fcn) { vFpppipppppppppppppp_t fn = (vFpppipppppppppppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)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 iFpppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppppp_t fn = (iFpppppppppppppppppp_t)fcn; R_RAX=(int64_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**)(R_RSP + 88), *(void**)(R_RSP + 96)); } +void LFpppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { LFpppppppppppppppppp_t fn = (LFpppppppppppppppppp_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**)(R_RSP + 88), *(void**)(R_RSP + 96)); } void pFippppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { pFippppppppppppppppp_t fn = (pFippppppppppppppppp_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 vFpiiiiiiiiiiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFpiiiiiiiiiiiiiiiiii_t fn = (vFpiiiiiiiiiiiiiiiiii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_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), *(int64_t*)(R_RSP + 24), *(int64_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), *(int64_t*)(R_RSP + 104)); } 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 iFpppppppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppppppppp_t fn = (iFpppppppppppppppppppppp_t)fcn; R_RAX=(int64_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**)(R_RSP + 88), *(void**)(R_RSP + 96), *(void**)(R_RSP + 104), *(void**)(R_RSP + 112), *(void**)(R_RSP + 120), *(void**)(R_RSP + 128)); } 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)); } +void iFpppppppppppppppppppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppppppppppppppppppppp_t fn = (iFpppppppppppppppppppppppppppppppppp_t)fcn; R_RAX=(int64_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**)(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), *(void**)(R_RSP + 144), *(void**)(R_RSP + 152), *(void**)(R_RSP + 160), *(void**)(R_RSP + 168), *(void**)(R_RSP + 176), *(void**)(R_RSP + 184), *(void**)(R_RSP + 192), *(void**)(R_RSP + 200), *(void**)(R_RSP + 208), *(void**)(R_RSP + 216), *(void**)(R_RSP + 224)); } #if defined(HAVE_LD80BITS) void DFD(x64emu_t *emu, uintptr_t fcn) { DFD_t fn = (DFD_t)fcn; long double ld=fn(LD2localLD((void*)(R_RSP + 8))); fpu_do_push(emu); ST0val = ld; } @@ -4214,6 +4230,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &LFpLp) return 1; if (fun == &LFppi) return 1; if (fun == &LFppL) return 1; + if (fun == &LFppp) return 1; if (fun == &pFiii) return 1; if (fun == &pFiiu) return 1; if (fun == &pFiip) return 1; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 83e6f9fb..ca23a0aa 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -485,6 +485,7 @@ void LFpLi(x64emu_t *emu, uintptr_t fnc); void LFpLp(x64emu_t *emu, uintptr_t fnc); void LFppi(x64emu_t *emu, uintptr_t fnc); void LFppL(x64emu_t *emu, uintptr_t fnc); +void LFppp(x64emu_t *emu, uintptr_t fnc); void LFSpL(x64emu_t *emu, uintptr_t fnc); void pFEip(x64emu_t *emu, uintptr_t fnc); void pFEiV(x64emu_t *emu, uintptr_t fnc); @@ -1523,6 +1524,7 @@ void iFpppippi(x64emu_t *emu, uintptr_t fnc); void iFpppippp(x64emu_t *emu, uintptr_t fnc); void iFpppuiii(x64emu_t *emu, uintptr_t fnc); void iFppppiii(x64emu_t *emu, uintptr_t fnc); +void iFppppipp(x64emu_t *emu, uintptr_t fnc); void iFppppdpi(x64emu_t *emu, uintptr_t fnc); void iFpppppip(x64emu_t *emu, uintptr_t fnc); void iFpppppup(x64emu_t *emu, uintptr_t fnc); @@ -1637,7 +1639,9 @@ void iFpppiippp(x64emu_t *emu, uintptr_t fnc); void iFpppipipi(x64emu_t *emu, uintptr_t fnc); void iFpppipppp(x64emu_t *emu, uintptr_t fnc); void iFppppiipi(x64emu_t *emu, uintptr_t fnc); +void iFppppippp(x64emu_t *emu, uintptr_t fnc); void iFppppppii(x64emu_t *emu, uintptr_t fnc); +void iFpppppppi(x64emu_t *emu, uintptr_t fnc); void iFpppppppp(x64emu_t *emu, uintptr_t fnc); void uFEipipppp(x64emu_t *emu, uintptr_t fnc); void uFEpiupppp(x64emu_t *emu, uintptr_t fnc); @@ -1707,6 +1711,7 @@ void vFpppppippp(x64emu_t *emu, uintptr_t fnc); void iFEpiiiiipi(x64emu_t *emu, uintptr_t fnc); void iFEpppipppp(x64emu_t *emu, uintptr_t fnc); void iFEppplPPPP(x64emu_t *emu, uintptr_t fnc); +void iFEpppppupp(x64emu_t *emu, uintptr_t fnc); void iFEppPPPPPP(x64emu_t *emu, uintptr_t fnc); void iFiiiiiiiip(x64emu_t *emu, uintptr_t fnc); void iFiiiipiiip(x64emu_t *emu, uintptr_t fnc); @@ -1817,6 +1822,7 @@ void vFppppppppppp(x64emu_t *emu, uintptr_t fnc); void iFEpppipppppp(x64emu_t *emu, uintptr_t fnc); void iFEppppiiiiuu(x64emu_t *emu, uintptr_t fnc); void iFiiiiiiiiiip(x64emu_t *emu, uintptr_t fnc); +void iFppippipppip(x64emu_t *emu, uintptr_t fnc); void iFppppiiuuiiL(x64emu_t *emu, uintptr_t fnc); void uFEpLiupppLuV(x64emu_t *emu, uintptr_t fnc); void uFEpLippppLup(x64emu_t *emu, uintptr_t fnc); @@ -1890,12 +1896,14 @@ void pFppippipipipipipip(x64emu_t *emu, uintptr_t fnc); void vFppuiiiiipuiiiiiiii(x64emu_t *emu, uintptr_t fnc); void vFpppipppppppppppppp(x64emu_t *emu, uintptr_t fnc); void iFpppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); +void LFpppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); void pFippppppppppppppppp(x64emu_t *emu, uintptr_t fnc); void vFpiiiiiiiiiiiiiiiiii(x64emu_t *emu, uintptr_t fnc); void pFiiiippppppppppppppp(x64emu_t *emu, uintptr_t fnc); void pFpippppppppppppppppp(x64emu_t *emu, uintptr_t fnc); void iFpppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); void pFipppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); +void iFpppppppppppppppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); #if defined(HAVE_LD80BITS) void DFD(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlber.c b/src/wrapped/wrappedlber.c new file mode 100755 index 00000000..c06fa020 --- /dev/null +++ b/src/wrapped/wrappedlber.c @@ -0,0 +1,24 @@ +#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" + +const char* lberName = +#ifdef ANDROID + "liblber-2.4.so" +#else + "liblber-2.4.so.2" +#endif + ; +#define LIBNAME lber + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedlber_private.h b/src/wrapped/wrappedlber_private.h new file mode 100755 index 00000000..4f1b1d1a --- /dev/null +++ b/src/wrapped/wrappedlber_private.h @@ -0,0 +1,140 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh.... +#endif + +//GO(ber_alloc, +GO(ber_alloc_t, pFi) +//GO(ber_bprint, +GO(ber_bvarray_add, vFpp) +//GO(ber_bvarray_add_x, +//GO(ber_bvarray_dup_x, +GO(ber_bvarray_free, vFp) +//GO(ber_bvarray_free_x, +GO(ber_bvdup, pFp) +GO(ber_bvecadd, vFpp) +//GO(ber_bvecadd_x, +GO(ber_bvecfree, vFp) +//GO(ber_bvecfree_x, +GO(ber_bvfree, vFp) +//GO(ber_bvfree_x, +//GO(ber_bvreplace, +//GO(ber_bvreplace_x, +GO(ber_bvstr, pFp) +GO(ber_bvstrdup, pFp) +//GO(ber_decode_oid, +//GO(ber_dump, +//GO(ber_dup, +GO(ber_dupbv, pFpp) +//GO(ber_dupbv_x, +//GO(ber_encode_oid, +//GO(ber_errno_addr, +//GO(ber_error_print, +GO(ber_first_element, LFppp) +GO(ber_flatten, iFpp) +//GO(ber_flatten2, +GO(ber_flush, iFppi) +GO(ber_flush2, iFppi) +GO(ber_free, vFpi) +//GO(ber_free_buf, +GO(ber_get_bitstringa, LFppp) +GO(ber_get_boolean, LFpp) +GO(ber_get_enum, iFpp) +GO(ber_get_int, iFpp) +GO(ber_get_next, LFppp) +GO(ber_get_null, LFp) +//GO(ber_get_option, +GO(ber_get_stringa, LFpp) +GO(ber_get_stringal, LFpp) +//GO(ber_get_stringa_null, +GO(ber_get_stringb, LFppp) +GO(ber_get_stringbv, LFppi) +//GO(ber_get_stringbv_null, +//GO(ber_get_tag, +GO(ber_init, pFp) +GO(ber_init2, vFppi) +//GO(ber_init_w_nullc, +//DATAB(ber_int_errno_fn, +//DATAB(ber_int_log_proc, +//DATAB(ber_int_memory_fns, +//DATAB(ber_int_options, +//GO(ber_int_sb_close, +//GO(ber_int_sb_destroy, +//GO(ber_int_sb_init, +//GO(ber_int_sb_read, +//GO(ber_int_sb_write, +//GO(ber_len, +//GO(ber_log_bprint, +//GO(ber_log_dump, +//GO(ber_log_sos_dump, +//GO(ber_mem2bv, +//GO(ber_mem2bv_x, +//GO(ber_memalloc, +//GO(ber_memalloc_x, +//GO(ber_memcalloc, +//GO(ber_memcalloc_x, +//GO(ber_memfree, +//GO(ber_memfree_x, +//GO(ber_memrealloc, +//GO(ber_memrealloc_x, +//GO(ber_memvfree, +//GO(ber_memvfree_x, +GO(ber_next_element, LFppp) +//GO(ber_peek_element, +GO(ber_peek_tag, LFpp) +GO(ber_printf, iFpppppppppppppppppppppppppppppppppp) //VAArg. May need some wrapping... +//GO(ber_ptrlen, +//GO(ber_put_berval, +GO(ber_put_bitstring, iFppLL) +GO(ber_put_boolean, iFpiL) +GO(ber_put_enum, iFpiL) +GO(ber_put_int, iFpiL) +GO(ber_put_null, iFpL) +GO(ber_put_ostring, iFppLL) +GO(ber_put_seq, iFp) +GO(ber_put_set, iFp) +GO(ber_put_string, iFppL) +//DATAB(ber_pvt_err_file, +//GO(ber_pvt_log_output, +//DATA(ber_pvt_log_print, +//GO(ber_pvt_log_printf, +//DATAB(ber_pvt_opt_on, +//GO(ber_pvt_sb_buf_destroy, +//GO(ber_pvt_sb_buf_init, +//GO(ber_pvt_sb_copy_out, +//GO(ber_pvt_sb_do_write, +//GO(ber_pvt_sb_grow_buffer, +//GO(ber_pvt_socket_set_nonblock, +//GO(ber_read, +//GO(ber_realloc, +//GO(ber_remaining, +//GO(ber_reset, +//GO(ber_rewind, +GO(ber_scanf, LFpppppppppppppppppp) // VAArg +//GO(ber_set_option, +//GO(ber_skip_data, +//GO(ber_skip_element, +GO(ber_skip_tag, LFpp) +//GO(ber_sockbuf_add_io, +//GO(ber_sockbuf_alloc, +//GO(ber_sockbuf_ctrl, +//GO(ber_sockbuf_free, +//DATA(ber_sockbuf_io_debug, +//DATA(ber_sockbuf_io_fd, +//DATA(ber_sockbuf_io_readahead, +//DATA(ber_sockbuf_io_tcp, +//GO(ber_sockbuf_remove_io, +//GO(ber_sos_dump, +//GO(ber_start, +GO(ber_start_seq, iFpL) +GO(ber_start_set, iFpL) +GO(ber_str2bv, pFpLip) +//GO(ber_str2bv_x, +//GO(ber_strdup, +//GO(ber_strdup_x, +//GO(ber_strndup, +//GO(ber_strndup_x, +//GO(ber_strnlen, +//GO(ber_write, +//GO(der_alloc, +//GO(lutil_debug, +//GO(lutil_debug_file, diff --git a/src/wrapped/wrappedldapr.c b/src/wrapped/wrappedldapr.c new file mode 100755 index 00000000..734c97d3 --- /dev/null +++ b/src/wrapped/wrappedldapr.c @@ -0,0 +1,113 @@ +#include +#include +#include +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "box64context.h" +#include "librarian.h" +#include "callback.h" + +const char* ldaprName = +#ifdef ANDROID + "libldap_r-2.4.so" +#else + "libldap_r-2.4.so.2" +#endif + ; +#define LIBNAME ldapr +static library_t *my_lib = NULL; + +typedef int (*iFpppppupp_t) (void*, void*, void*, void* , void*, unsigned, void*, void*); + +#define SUPER() \ + GO(ldap_sasl_interactive_bind_s, iFpppppupp_t) \ + +typedef struct ldapr_my_s { + // functions + #define GO(A, B) B A; + SUPER() + #undef GO +} ldapr_my_t; + +void* getLdaprMy(library_t* lib) +{ + ldapr_my_t* my = (ldapr_my_t*)calloc(1, sizeof(ldapr_my_t)); + #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + SUPER() + #undef GO + return my; +} +#undef SUPER + +void freeLdaprMy(void* lib) +{ + //ldapr_my_t *my = (ldapr_my_t *)lib; +} + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) \ +GO(4) + +// LDAP_SASL_INTERACT_PROC ... +#define GO(A) \ +static uintptr_t my_LDAP_SASL_INTERACT_PROC_fct_##A = 0; \ +static int my_LDAP_SASL_INTERACT_PROC_##A(void* a, unsigned b, void* c, void* d) \ +{ \ + return RunFunction(my_context, my_LDAP_SASL_INTERACT_PROC_fct_##A, 4, a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_LDAP_SASL_INTERACT_PROC_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_LDAP_SASL_INTERACT_PROC_fct_##A == (uintptr_t)fct) return my_LDAP_SASL_INTERACT_PROC_##A; + SUPER() + #undef GO + #define GO(A) if(my_LDAP_SASL_INTERACT_PROC_fct_##A == 0) {my_LDAP_SASL_INTERACT_PROC_fct_##A = (uintptr_t)fct; return my_LDAP_SASL_INTERACT_PROC_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libldap_r LDAP_SASL_INTERACT_PROC callback\n"); + return NULL; +} +#undef SUPER + +EXPORT int my_ldap_sasl_interactive_bind_s(x64emu_t* emu, void* ld, void* dn, void* mechs, void* sctrls, void* cctrls, unsigned flags, void* f, void* defaults) +{ + ldapr_my_t* my = (ldapr_my_t*)my_lib->priv.w.p2; + + return my->ldap_sasl_interactive_bind_s(ld, dn, mechs, sctrls, cctrls, flags, find_LDAP_SASL_INTERACT_PROC_Fct(f), defaults); +} + +#ifdef ANDROID +#define NEEDED_LIB "liblber-2.4.so" +#else +#define NEEDED_LIB "liblber-2.4.so.2" +#endif + +#define CUSTOM_INIT \ + lib->priv.w.p2 = getLdaprMy(lib); \ + lib->priv.w.needed = 1; \ + lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \ + lib->priv.w.neededlibs[0] = strdup(NEEDED_LIB); \ + my_lib = lib; + +#define CUSTOM_FINI \ + freeLdaprMy(lib->priv.w.p2); \ + free(lib->priv.w.p2); \ + my_lib = NULL; + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedldapr_private.h b/src/wrapped/wrappedldapr_private.h new file mode 100755 index 00000000..97ae8fe2 --- /dev/null +++ b/src/wrapped/wrappedldapr_private.h @@ -0,0 +1,510 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh.... +#endif + +GO(ldap_abandon, iFpi) +GO(ldap_abandon_ext, iFpipp) +//GO(ldap_add, +GO(ldap_add_ext, iFpppppp) +GO(ldap_add_ext_s, iFppppp) +//GO(ldap_add_result_entry, +//GO(ldap_add_s, +//GO(ldap_alloc_ber_with_options, +//GO(ldap_append_referral, +//GO(ldap_attributetype2bv, +//GO(ldap_attributetype2name, +//GO(ldap_attributetype2str, +//GO(ldap_attributetype_free, +GO(ldap_bind, iFpppi) +GO(ldap_bind_s, iFpppi) +//GO(ldap_build_add_req, +//GO(ldap_build_bind_req, +//GO(ldap_build_compare_req, +//GO(ldap_build_delete_req, +//GO(ldap_build_extended_req, +//GO(ldap_build_moddn_req, +//GO(ldap_build_modify_req, +//GO(ldap_build_search_req, +//GO(ldap_bv2dn, +//GO(ldap_bv2dn_x, +//GO(ldap_bv2escaped_filter_value, +//GO(ldap_bv2escaped_filter_value_len, +//GO(ldap_bv2escaped_filter_value_x, +//GO(ldap_bv2rdn, +//GO(ldap_bv2rdn_x, +//GO(ldap_cancel, +//GO(ldap_cancel_s, +//GO(ldap_charray2str, +//GO(ldap_charray_add, +//GO(ldap_charray_dup, +//GO(ldap_charray_free, +//GO(ldap_charray_inlist, +//GO(ldap_charray_merge, +//GO(ldap_chase_referrals, +//GO(ldap_chase_v3referrals, +//GO(ldap_clear_select_write, +//GO(ldap_compare, +GO(ldap_compare_ext, iFppppppp) +GO(ldap_compare_ext_s, iFpppppp) +//GO(ldap_compare_s, +//GO(ldap_connect_to_host, +//GO(ldap_connect_to_path, +//GO(ldap_contentrule2bv, +//GO(ldap_contentrule2name, +//GO(ldap_contentrule2str, +//GO(ldap_contentrule_free, +GO(ldap_control_create, iFpipip) +GO(ldap_control_dup, pFp) +GO(ldap_control_find, pFppp) +GO(ldap_control_free, vFp) +GO(ldap_controls_dup, pFp) +GO(ldap_controls_free, vFp) +GO(ldap_count_entries, iFpp) +//GO(ldap_count_messages, +GO(ldap_count_references, iFpp) +GO(ldap_count_values, iFp) +GO(ldap_count_values_len, iFp) +//GO(ldap_create, +//GO(ldap_create_assertion_control, +//GO(ldap_create_assertion_control_value, +//GO(ldap_create_control, +//GO(ldap_create_deref_control, +//GO(ldap_create_deref_control_value, +//GO(ldap_create_page_control, +//GO(ldap_create_page_control_value, +//GO(ldap_create_passwordpolicy_control, +//GO(ldap_create_session_tracking_control, +//GO(ldap_create_session_tracking_value, +GO(ldap_create_sort_control, iFppip) +//GO(ldap_create_sort_control_value, +//GO(ldap_create_sort_keylist, +GO(ldap_create_vlv_control, iFppp) +//GO(ldap_create_vlv_control_value, +GO(ldap_dcedn2dn, pFp) +GO(ldap_delete, iFpp) +GO(ldap_delete_ext, iFppppp) +GO(ldap_delete_ext_s, iFpppp) +//GO(ldap_delete_result_entry, +GO(ldap_delete_s, iFpp) +//GO(ldap_derefresponse_free, +//GO(ldap_destroy, +GO(ldap_dn2ad_canonical, pFp) +//GO(ldap_dn2bv, +//GO(ldap_dn2bv_x, +GO(ldap_dn2dcedn, pFp) +//GO(ldap_dn2domain, +GO(ldap_dn2str, iFppu) +GO(ldap_dn2ufn, pFp) +//GO(ldap_dnfree, +//GO(ldap_dnfree_x, +//GO(ldap_dn_normalize, +//GO(ldap_domain2dn, +//GO(ldap_domain2hostlist, +//GO(ldap_dump_connection, +//GO(ldap_dump_requests_and_responses, +//GO(ldap_dup, +//GO(ldap_err2string, +GO(ldap_explode_dn, pFpi) +GO(ldap_explode_rdn, pFpi) +GO(ldap_extended_operation, iFpppppp) +GO(ldap_extended_operation_s, iFppppppp) +//GO(ldap_find_control, +//GO(ldap_find_request_by_msgid, +GO(ldap_first_attribute, pFppp) +GO(ldap_first_entry, pFpp) +//GO(ldap_first_message, +GO(ldap_first_reference, pFpp) +//GO(ldap_free_connection, +//GO(ldap_free_request, +//GO(ldap_free_select_info, +//GO(ldap_free_sort_keylist, +//GO(ldap_free_urldesc, +//GO(ldap_free_urllist, +//GO(ldap_get_attribute_ber, +GO(ldap_get_dn, pFpp) +//GO(ldap_get_dn_ber, +//GO(ldap_get_entry_controls, +//GO(ldap_get_message_ber, +GO(ldap_get_option, iFpip) +GO(ldap_get_values, pFppp) +GO(ldap_get_values_len, pFppp) +//GO(ldap_gssapi_bind, +//GO(ldap_gssapi_bind_s, +//GO(ldap_host_connected_to, +GO(ldap_init, pFpi) +GO(ldap_init_fd, iFuipp) +GO(ldap_initialize, iFpp) +GO(ldap_install_tls, iFp) +//GO(ldap_int_bisect_delete, +//GO(ldap_int_bisect_find, +//GO(ldap_int_bisect_insert, +//GO(ldap_int_check_async_open, +//GO(ldap_int_client_controls, +//GO(ldap_int_connect_cbs, +//GO(ldap_int_error_init, +//GO(ldap_int_flush_request, +//DATA(ldap_int_global_options, +//DATAB(ldap_int_gmtime_mutex, +//DATAB(ldap_int_hostname, +//DATAB(ldap_int_hostname_mutex, +//DATAB(ldap_int_inet4or6, +//GO(ldap_int_initialize, +//GO(ldap_int_initialize_global_options, +//GO(ldap_int_msgtype2str, +//GO(ldap_int_open_connection, +//GO(ldap_int_parse_numericoid, +//GO(ldap_int_parse_ruleid, +//GO(ldap_int_poll, +//GO(ldap_int_put_controls, +//DATAB(ldap_int_resolv_mutex, +//GO(ldap_int_sasl_bind, +//GO(ldap_int_sasl_close, +//GO(ldap_int_sasl_config, +//GO(ldap_int_sasl_external, +//GO(ldap_int_sasl_get_option, +//GO(ldap_int_sasl_init, +//GO(ldap_int_sasl_open, +//GO(ldap_int_sasl_set_option, +//GO(ldap_int_select, +//GO(ldap_int_thread_destroy, +//GO(ldap_int_thread_initialize, +//GO(ldap_int_thread_pool_shutdown, +//GO(ldap_int_thread_pool_startup, +//GO(ldap_int_timeval_dup, +//GO(ldap_int_tls_config, +//GO(ldap_int_tls_destroy, +//DATA(ldap_int_tls_impl, +//GO(ldap_int_tls_start, +//GO(ldap_int_utils_init, +//GO(ldap_is_ldapi_url, +//GO(ldap_is_ldaps_url, +//GO(ldap_is_ldap_url, +//GO(ldap_is_read_ready, +//GO(ldap_is_write_ready, +//GO(ldap_ld_free, +//GO(ldap_log_printf, +//GO(ldap_mark_select_clear, +//GO(ldap_mark_select_read, +//GO(ldap_mark_select_write, +//GO(ldap_matchingrule2bv, +//GO(ldap_matchingrule2name, +//GO(ldap_matchingrule2str, +//GO(ldap_matchingrule_free, +//GO(ldap_matchingruleuse2bv, +//GO(ldap_matchingruleuse2name, +//GO(ldap_matchingruleuse2str, +//GO(ldap_matchingruleuse_free, +GO(ldap_memalloc, pFL) +GO(ldap_memcalloc, pFLL) +GO(ldap_memfree, vFp) +GO(ldap_memrealloc, pFpL) +GO(ldap_memvfree, vFp) +//GO(ldap_modify, +GO(ldap_modify_ext, iFpppppp) +GO(ldap_modify_ext_s, iFppppp) +//GO(ldap_modify_s, +//GO(ldap_modrdn, +//GO(ldap_modrdn2, +//GO(ldap_modrdn2_s, +//GO(ldap_modrdn_s, +GO(ldap_mods_free, vFpp) +//GO(ldap_msgdelete, +GO(ldap_msgfree, iFp) +GO(ldap_msgid, iFp) +GO(ldap_msgtype, iFp) +//GO(ldap_nameform2bv, +//GO(ldap_nameform2name, +//GO(ldap_nameform2str, +//GO(ldap_nameform_free, +//GO(ldap_new_connection, +//GO(ldap_new_select_info, +GO(ldap_next_attribute, pFppp) +GO(ldap_next_entry, pFpp) +//GO(ldap_next_message, +GO(ldap_next_reference, pFpp) +//GO(ldap_ntlm_bind, +//GO(ldap_objectclass2bv, +//GO(ldap_objectclass2name, +//GO(ldap_objectclass2str, +//GO(ldap_objectclass_free, +GO(ldap_open, pFpi) +//GO(ldap_open_defconn, +//GO(ldap_open_internal_connection, +//GO(ldap_parse_deref_control, +//GO(ldap_parse_derefresponse_control, +GO(ldap_parse_extended_result, iFppppi) +//GO(ldap_parse_intermediate, +//GO(ldap_parse_ntlm_bind_result, +//GO(ldap_parse_page_control, +//GO(ldap_parse_pageresponse_control, +//GO(ldap_parse_passwd, +//GO(ldap_parse_passwordpolicy_control, +GO(ldap_parse_reference, iFppppi) +//GO(ldap_parse_refresh, +GO(ldap_parse_result, iFpppppppi) +GO(ldap_parse_sasl_bind_result, iFpppi) +//GO(ldap_parse_session_tracking_control, +GO(ldap_parse_sortresponse_control, iFpppp) +GO(ldap_parse_vlvresponse_control, iFpppppp) +//GO(ldap_parse_whoami, +//GO(ldap_passwd, +//GO(ldap_passwd_s, +//GO(ldap_passwordpolicy_err2txt, +//GO(ldap_perror, +//GO(ldap_put_vrFilter, +//GO(ldap_pvt_bv2scope, +//GO(ldap_pvt_csnstr, +//GO(ldap_pvt_ctime, +//GO(ldap_pvt_discard, +//GO(ldap_pvt_filter_value_unescape, +//GO(ldap_pvt_find_wildcard, +//GO(ldap_pvt_get_controls, +//GO(ldap_pvt_get_fqdn, +//GO(ldap_pvt_get_hname, +//GO(ldap_pvt_gethostbyaddr_a, +//GO(ldap_pvt_gethostbyname_a, +//GO(ldap_pvt_gettime, +//GO(ldap_pvt_hex_unescape, +//GO(ldap_pvt_put_control, +//GO(ldap_pvt_put_filter, +//GO(ldap_pvt_runqueue_find, +//GO(ldap_pvt_runqueue_insert, +//GO(ldap_pvt_runqueue_isrunning, +//GO(ldap_pvt_runqueue_next_sched, +//GO(ldap_pvt_runqueue_persistent_backload, +//GO(ldap_pvt_runqueue_remove, +//GO(ldap_pvt_runqueue_resched, +//GO(ldap_pvt_runqueue_runtask, +//GO(ldap_pvt_runqueue_stoptask, +//GO(ldap_pvt_sasl_generic_install, +//GO(ldap_pvt_sasl_generic_remove, +//GO(ldap_pvt_sasl_getmechs, +//GO(ldap_pvt_sasl_install, +//GO(ldap_pvt_sasl_mutex_dispose, +//GO(ldap_pvt_sasl_mutex_lock, +//GO(ldap_pvt_sasl_mutex_new, +//GO(ldap_pvt_sasl_mutex_unlock, +//GO(ldap_pvt_sasl_remove, +//GO(ldap_pvt_sasl_secprops, +//GO(ldap_pvt_sasl_secprops_unparse, +//GO(ldap_pvt_scope2bv, +//GO(ldap_pvt_scope2str, +//GO(ldap_pvt_search, +//GO(ldap_pvt_search_s, +//DATA(ldap_pvt_sockbuf_io_sasl_generic, +//GO(ldap_pvt_str2lower, +//GO(ldap_pvt_str2lowerbv, +//GO(ldap_pvt_str2scope, +//GO(ldap_pvt_str2upper, +//GO(ldap_pvt_str2upperbv, +//GO(ldap_pvt_strtok, +//GO(ldap_pvt_thread_cond_broadcast, +//GO(ldap_pvt_thread_cond_destroy, +//GO(ldap_pvt_thread_cond_init, +//GO(ldap_pvt_thread_cond_signal, +//GO(ldap_pvt_thread_cond_wait, +//GO(ldap_pvt_thread_create, +//GO(ldap_pvt_thread_destroy, +//GO(ldap_pvt_thread_exit, +//GO(ldap_pvt_thread_get_concurrency, +//GO(ldap_pvt_thread_initialize, +//GO(ldap_pvt_thread_join, +//GO(ldap_pvt_thread_key_create, +//GO(ldap_pvt_thread_key_destroy, +//GO(ldap_pvt_thread_key_getdata, +//GO(ldap_pvt_thread_key_setdata, +//GO(ldap_pvt_thread_kill, +//GO(ldap_pvt_thread_mutex_destroy, +//GO(ldap_pvt_thread_mutex_init, +//GO(ldap_pvt_thread_mutex_lock, +//GO(ldap_pvt_thread_mutex_trylock, +//GO(ldap_pvt_thread_mutex_unlock, +//GO(ldap_pvt_thread_pool_backload, +//GO(ldap_pvt_thread_pool_context, +//GO(ldap_pvt_thread_pool_context_reset, +//GO(ldap_pvt_thread_pool_destroy, +//GO(ldap_pvt_thread_pool_getkey, +//GO(ldap_pvt_thread_pool_idle, +//GO(ldap_pvt_thread_pool_init, +//GO(ldap_pvt_thread_pool_maxthreads, +//GO(ldap_pvt_thread_pool_pause, +//GO(ldap_pvt_thread_pool_pausecheck, +//GO(ldap_pvt_thread_pool_pausing, +//GO(ldap_pvt_thread_pool_purgekey, +//GO(ldap_pvt_thread_pool_query, +//GO(ldap_pvt_thread_pool_resume, +//GO(ldap_pvt_thread_pool_retract, +//GO(ldap_pvt_thread_pool_setkey, +//GO(ldap_pvt_thread_pool_submit, +//GO(ldap_pvt_thread_pool_tid, +//GO(ldap_pvt_thread_pool_unidle, +//GO(ldap_pvt_thread_rdwr_destroy, +//GO(ldap_pvt_thread_rdwr_init, +//GO(ldap_pvt_thread_rdwr_rlock, +//GO(ldap_pvt_thread_rdwr_rtrylock, +//GO(ldap_pvt_thread_rdwr_runlock, +//GO(ldap_pvt_thread_rdwr_wlock, +//GO(ldap_pvt_thread_rdwr_wtrylock, +//GO(ldap_pvt_thread_rdwr_wunlock, +//GO(ldap_pvt_thread_rmutex_destroy, +//GO(ldap_pvt_thread_rmutex_init, +//GO(ldap_pvt_thread_rmutex_lock, +//GO(ldap_pvt_thread_rmutex_trylock, +//GO(ldap_pvt_thread_rmutex_unlock, +//GO(ldap_pvt_thread_self, +//GO(ldap_pvt_thread_set_concurrency, +//GO(ldap_pvt_thread_sleep, +//GO(ldap_pvt_thread_yield, +//GO(ldap_pvt_tls_accept, +//GO(ldap_pvt_tls_check_hostname, +//GO(ldap_pvt_tls_ctx_free, +//GO(ldap_pvt_tls_destroy, +//GO(ldap_pvt_tls_get_my_dn, +//GO(ldap_pvt_tls_get_option, +//GO(ldap_pvt_tls_get_peer_dn, +//GO(ldap_pvt_tls_get_strength, +//GO(ldap_pvt_tls_init, +//GO(ldap_pvt_tls_init_def_ctx, +//GO(ldap_pvt_tls_inplace, +//GO(ldap_pvt_tls_sb_ctx, +//GO(ldap_pvt_tls_set_option, +//GO(ldap_pvt_url_scheme2proto, +//GO(ldap_pvt_url_scheme2tls, +//GO(ldap_pvt_url_scheme_port, +//GO(ldap_rdn2bv, +//GO(ldap_rdn2bv_x, +//GO(ldap_rdn2str, +//GO(ldap_rdnfree, +//GO(ldap_rdnfree_x, +//GO(ldap_refresh, +//GO(ldap_refresh_s, +GO(ldap_rename, iFppppippp) +//GO(ldap_rename2, +//GO(ldap_rename2_s, +GO(ldap_rename_s, iFppppipp) +GO(ldap_result, iFppipp) +//GO(ldap_result2error, +//GO(ldap_return_request, +GO(ldap_sasl_bind, iFppppppp) +GO(ldap_sasl_bind_s, iFppppppp) +//GO(ldap_sasl_interactive_bind, +GOM(ldap_sasl_interactive_bind_s, iFEpppppupp) +//GO(ldap_scherr2str, +//GO(ldap_search, +GO(ldap_search_ext, iFppippipppip) +GO(ldap_search_ext_s, iFppippipppip) +//GO(ldap_search_s, +//GO(ldap_search_st, +//GO(ldap_send_initial_request, +//GO(ldap_send_server_request, +//GO(ldap_send_unbind, +//GO(ldap_set_ber_options, +//GO(ldap_set_nextref_proc, +GO(ldap_set_option, iFpip) +//GOM(ldap_set_rebind_proc, iFEpBp) +//GO(ldap_set_urllist_proc, +GO(ldap_simple_bind, iFppp) +GO(ldap_simple_bind_s, iFppp) +//GO(ldap_sort_entries, +//GO(ldap_sort_strcasecmp, +//GO(ldap_sort_values, +GO(ldap_start_tls, iFp) +GO(ldap_start_tls_s, iFppp) +//GO(ldap_str2attributetype, +//GO(ldap_str2charray, +//GO(ldap_str2contentrule, +GO(ldap_str2dn, iFppu) +//GO(ldap_str2matchingrule, +//GO(ldap_str2matchingruleuse, +//GO(ldap_str2nameform, +//GO(ldap_str2objectclass, +//GO(ldap_str2rdn, +//GO(ldap_str2structurerule, +//GO(ldap_str2syntax, +GO(ldap_strdup, pFp) +//GO(ldap_structurerule2bv, +//GO(ldap_structurerule2name, +//GO(ldap_structurerule2str, +//GO(ldap_structurerule_free, +//GO(ldap_sync_destroy, +//GO(ldap_sync_init, +//GO(ldap_sync_initialize, +//GO(ldap_sync_init_refresh_and_persist, +//GO(ldap_sync_init_refresh_only, +//GO(ldap_sync_poll, +//GO(ldap_syntax2bv, +//GO(ldap_syntax2name, +//GO(ldap_syntax2str, +//GO(ldap_syntax_free, +GO(ldap_tls_inplace, iFp) +//GO(ldap_turn, +//GO(ldap_turn_s, +//GO(ldap_ucs_to_utf8s, +GO(ldap_unbind, iFp) +GO(ldap_unbind_ext, iFppp) +GO(ldap_unbind_ext_s, iFppp) +GO(ldap_unbind_s, iFp) +//GO(ldap_url_desc2str, +//GO(ldap_url_dup, +//GO(ldap_url_duplist, +//GO(ldap_url_list2hosts, +//GO(ldap_url_list2urls, +//GO(ldap_url_parse, +//GO(ldap_url_parse_ext, +//GO(ldap_url_parsehosts, +//GO(ldap_url_parselist, +//GO(ldap_url_parselist_ext, +//GO(ldap_utf8_bytes, +//GO(ldap_utf8_charlen, +//GO(ldap_utf8_charlen2, +//GO(ldap_utf8_chars, +//GO(ldap_utf8_copy, +//GO(ldap_utf8_isalnum, +//GO(ldap_utf8_isalpha, +//GO(ldap_utf8_isascii, +//GO(ldap_utf8_isdigit, +//GO(ldap_utf8_islower, +//GO(ldap_utf8_isspace, +//GO(ldap_utf8_isupper, +//GO(ldap_utf8_isxdigit, +//GO(ldap_utf8_next, +//GO(ldap_utf8_offset, +//GO(ldap_utf8_prev, +//GO(ldap_utf8_strchr, +//GO(ldap_utf8_strcspn, +//GO(ldap_utf8_strpbrk, +//GO(ldap_utf8_strspn, +//GO(ldap_utf8_strtok, +//GO(ldap_value_dup, +GO(ldap_value_free, vFp) +GO(ldap_value_free_len, vFp) +//GO(ldap_whoami, +//GO(ldap_whoami_s, +//GO(ldap_X509dn2bv, +//GO(ldap_x_mbs_to_utf8s, +//GO(ldap_x_mb_to_utf8, +//GO(ldap_x_ucs4_to_utf8, +//GO(ldap_x_utf8s_to_mbs, +//GO(ldap_x_utf8s_to_wcs, +//GO(ldap_x_utf8_to_mb, +//GO(ldap_x_utf8_to_ucs4, +//GO(ldap_x_utf8_to_wc, +//GO(ldap_x_wcs_to_utf8s, +//GO(ldap_x_wc_to_utf8, +//GO(ldif_close, +//GO(ldif_countlines, +//DATAB(ldif_debug, +//GO(ldif_fetch_url, +//GO(ldif_getline, +//GO(ldif_is_not_printable, +//GO(ldif_must_b64_encode_register, +//GO(ldif_must_b64_encode_release, +//GO(ldif_open, +//GO(ldif_open_url, +//GO(ldif_parse_line, +//GO(ldif_parse_line2, +//GO(ldif_put, +//GO(ldif_put_wrap, +//GO(ldif_read_record, +//GO(ldif_sput, +//GO(ldif_sput_wrap,