From dbb84245a020e5a6c6fe58dbe5eff0fd43571ed6 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 2 Jul 2024 00:58:17 +0800 Subject: [PATCH] Wrapped libsqlite3 (#1625) * Wrapped libsqlite3 * More functions --- CMakeLists.txt | 1 + src/library_list.h | 1 + src/wrapped/generated/functions_list.txt | 6 + src/wrapped/generated/wrappedlibsqlite3defs.h | 8 + .../generated/wrappedlibsqlite3types.h | 17 ++ .../generated/wrappedlibsqlite3undefs.h | 8 + src/wrapped/generated/wrapper.c | 14 + src/wrapped/generated/wrapper.h | 5 + src/wrapped/wrappedlibsqlite3.c | 32 +++ src/wrapped/wrappedlibsqlite3_private.h | 269 ++++++++++++++++++ 10 files changed, 361 insertions(+) create mode 100644 src/wrapped/generated/wrappedlibsqlite3defs.h create mode 100644 src/wrapped/generated/wrappedlibsqlite3types.h create mode 100644 src/wrapped/generated/wrappedlibsqlite3undefs.h create mode 100644 src/wrapped/wrappedlibsqlite3.c create mode 100644 src/wrapped/wrappedlibsqlite3_private.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ad7791a86..c677128d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -658,6 +658,7 @@ set(WRAPPEDS "${BOX64_ROOT}/src/wrapped/wrappedlibnettle8.c" "${BOX64_ROOT}/src/wrapped/wrappedlibunistring2.c" "${BOX64_ROOT}/src/wrapped/wrappedlibhogweed6.c" + "${BOX64_ROOT}/src/wrapped/wrappedlibsqlite3.c" ) endif() if(ANDROID) diff --git a/src/library_list.h b/src/library_list.h index ea6978a32..bb9caaae2 100644 --- a/src/library_list.h +++ b/src/library_list.h @@ -261,6 +261,7 @@ GO("libtasn1.so.6", libtasn1) GO("libnettle.so.8", libnettle8) GO("libunistring.so.2", libunistring2) GO("libhogweed.so.6", libhogweed6) +GO("libsqlite3.so.0", libsqlite3) #ifdef ANDROID GO("libc.so", libc) diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 40736f013..8bed3675a 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -40,6 +40,7 @@ #() iFP #() iFb #() IFv +#() IFi #() IFI #() IFf #() IFd @@ -415,6 +416,7 @@ #() vFLup #() vFLpL #() vFLpp +#() vFpic #() vFpii #() vFpiI #() vFpiC @@ -513,10 +515,12 @@ #() iFLpp #() iFpwp #() iFpii +#() iFpiI #() iFpiC #() iFpiW #() iFpiu #() iFpiU +#() iFpid #() iFpil #() iFpiL #() iFpip @@ -2397,6 +2401,7 @@ #() iFpppLppp #() iFppppilp #() iFppppipp +#() iFppppIip #() iFppppdpu #() iFpppppip #() iFpppppLp @@ -4750,6 +4755,7 @@ wrappedlibsndfile: - sf_close - pFpipp: - sf_open_virtual +wrappedlibsqlite3: wrappedlibssh2: wrappedlibssl: - pFp: diff --git a/src/wrapped/generated/wrappedlibsqlite3defs.h b/src/wrapped/generated/wrappedlibsqlite3defs.h new file mode 100644 index 000000000..95e690c65 --- /dev/null +++ b/src/wrapped/generated/wrappedlibsqlite3defs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.4.0.21) * + *******************************************************************/ +#ifndef __wrappedlibsqlite3DEFS_H_ +#define __wrappedlibsqlite3DEFS_H_ + + +#endif // __wrappedlibsqlite3DEFS_H_ diff --git a/src/wrapped/generated/wrappedlibsqlite3types.h b/src/wrapped/generated/wrappedlibsqlite3types.h new file mode 100644 index 000000000..03aa5289f --- /dev/null +++ b/src/wrapped/generated/wrappedlibsqlite3types.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.4.0.21) * + *******************************************************************/ +#ifndef __wrappedlibsqlite3TYPES_H_ +#define __wrappedlibsqlite3TYPES_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 // __wrappedlibsqlite3TYPES_H_ diff --git a/src/wrapped/generated/wrappedlibsqlite3undefs.h b/src/wrapped/generated/wrappedlibsqlite3undefs.h new file mode 100644 index 000000000..39570fed7 --- /dev/null +++ b/src/wrapped/generated/wrappedlibsqlite3undefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.4.0.21) * + *******************************************************************/ +#ifndef __wrappedlibsqlite3UNDEFS_H_ +#define __wrappedlibsqlite3UNDEFS_H_ + + +#endif // __wrappedlibsqlite3UNDEFS_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 298e39400..4e3fc14ec 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -78,6 +78,7 @@ typedef int32_t (*iFS_t)(void*); typedef int32_t (*iFP_t)(void*); typedef int32_t (*iFb_t)(void*); typedef int64_t (*IFv_t)(void); +typedef int64_t (*IFi_t)(int32_t); typedef int64_t (*IFI_t)(int64_t); typedef int64_t (*IFf_t)(float); typedef int64_t (*IFd_t)(double); @@ -453,6 +454,7 @@ typedef void (*vFlpp_t)(intptr_t, void*, void*); typedef void (*vFLup_t)(uintptr_t, uint32_t, void*); typedef void (*vFLpL_t)(uintptr_t, void*, uintptr_t); typedef void (*vFLpp_t)(uintptr_t, void*, void*); +typedef void (*vFpic_t)(void*, int32_t, int8_t); typedef void (*vFpii_t)(void*, int32_t, int32_t); typedef void (*vFpiI_t)(void*, int32_t, int64_t); typedef void (*vFpiC_t)(void*, int32_t, uint8_t); @@ -551,10 +553,12 @@ typedef int32_t (*iFLip_t)(uintptr_t, int32_t, void*); typedef int32_t (*iFLpp_t)(uintptr_t, void*, void*); typedef int32_t (*iFpwp_t)(void*, int16_t, void*); typedef int32_t (*iFpii_t)(void*, int32_t, int32_t); +typedef int32_t (*iFpiI_t)(void*, int32_t, int64_t); typedef int32_t (*iFpiC_t)(void*, int32_t, uint8_t); typedef int32_t (*iFpiW_t)(void*, int32_t, uint16_t); typedef int32_t (*iFpiu_t)(void*, int32_t, uint32_t); typedef int32_t (*iFpiU_t)(void*, int32_t, uint64_t); +typedef int32_t (*iFpid_t)(void*, int32_t, double); typedef int32_t (*iFpil_t)(void*, int32_t, intptr_t); typedef int32_t (*iFpiL_t)(void*, int32_t, uintptr_t); typedef int32_t (*iFpip_t)(void*, int32_t, void*); @@ -2435,6 +2439,7 @@ typedef int32_t (*iFpppuiii_t)(void*, void*, void*, uint32_t, int32_t, int32_t, typedef int32_t (*iFpppLppp_t)(void*, void*, void*, uintptr_t, void*, void*, void*); typedef int32_t (*iFppppilp_t)(void*, void*, void*, void*, int32_t, intptr_t, void*); typedef int32_t (*iFppppipp_t)(void*, void*, void*, void*, int32_t, void*, void*); +typedef int32_t (*iFppppIip_t)(void*, void*, void*, void*, int64_t, int32_t, void*); typedef int32_t (*iFppppdpu_t)(void*, void*, void*, void*, double, void*, uint32_t); typedef int32_t (*iFpppppip_t)(void*, void*, void*, void*, void*, int32_t, void*); typedef int32_t (*iFpppppLp_t)(void*, void*, void*, void*, void*, uintptr_t, void*); @@ -3172,6 +3177,7 @@ void iFS(x64emu_t *emu, uintptr_t fcn) { iFS_t fn = (iFS_t)fcn; R_RAX=(int32_t)f void iFP(x64emu_t *emu, uintptr_t fcn) { iFP_t fn = (iFP_t)fcn; R_RAX=(int32_t)fn(*(void**)(R_RSP + 8)); } void iFb(x64emu_t *emu, uintptr_t fcn) { iFb_t fn = (iFb_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(int32_t)fn(aligned_xcb); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); } void IFv(x64emu_t *emu, uintptr_t fcn) { IFv_t fn = (IFv_t)fcn; R_RAX=(int64_t)fn(); } +void IFi(x64emu_t *emu, uintptr_t fcn) { IFi_t fn = (IFi_t)fcn; R_RAX=(int64_t)fn((int32_t)R_RDI); } void IFI(x64emu_t *emu, uintptr_t fcn) { IFI_t fn = (IFI_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI); } void IFf(x64emu_t *emu, uintptr_t fcn) { IFf_t fn = (IFf_t)fcn; R_RAX=(int64_t)fn(emu->xmm[0].f[0]); } void IFd(x64emu_t *emu, uintptr_t fcn) { IFd_t fn = (IFd_t)fcn; R_RAX=(int64_t)fn(emu->xmm[0].d[0]); } @@ -3547,6 +3553,7 @@ void vFlpp(x64emu_t *emu, uintptr_t fcn) { vFlpp_t fn = (vFlpp_t)fcn; fn((intptr void vFLup(x64emu_t *emu, uintptr_t fcn) { vFLup_t fn = (vFLup_t)fcn; fn((uintptr_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); } void vFLpL(x64emu_t *emu, uintptr_t fcn) { vFLpL_t fn = (vFLpL_t)fcn; fn((uintptr_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); } void vFLpp(x64emu_t *emu, uintptr_t fcn) { vFLpp_t fn = (vFLpp_t)fcn; fn((uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX); } +void vFpic(x64emu_t *emu, uintptr_t fcn) { vFpic_t fn = (vFpic_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int8_t)R_RDX); } void vFpii(x64emu_t *emu, uintptr_t fcn) { vFpii_t fn = (vFpii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); } void vFpiI(x64emu_t *emu, uintptr_t fcn) { vFpiI_t fn = (vFpiI_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int64_t)R_RDX); } void vFpiC(x64emu_t *emu, uintptr_t fcn) { vFpiC_t fn = (vFpiC_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (uint8_t)R_RDX); } @@ -3645,10 +3652,12 @@ void iFLip(x64emu_t *emu, uintptr_t fcn) { iFLip_t fn = (iFLip_t)fcn; R_RAX=(int void iFLpp(x64emu_t *emu, uintptr_t fcn) { iFLpp_t fn = (iFLpp_t)fcn; R_RAX=(int32_t)fn((uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX); } void iFpwp(x64emu_t *emu, uintptr_t fcn) { iFpwp_t fn = (iFpwp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int16_t)R_RSI, (void*)R_RDX); } void iFpii(x64emu_t *emu, uintptr_t fcn) { iFpii_t fn = (iFpii_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); } +void iFpiI(x64emu_t *emu, uintptr_t fcn) { iFpiI_t fn = (iFpiI_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int64_t)R_RDX); } void iFpiC(x64emu_t *emu, uintptr_t fcn) { iFpiC_t fn = (iFpiC_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint8_t)R_RDX); } void iFpiW(x64emu_t *emu, uintptr_t fcn) { iFpiW_t fn = (iFpiW_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint16_t)R_RDX); } void iFpiu(x64emu_t *emu, uintptr_t fcn) { iFpiu_t fn = (iFpiu_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); } void iFpiU(x64emu_t *emu, uintptr_t fcn) { iFpiU_t fn = (iFpiU_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint64_t)R_RDX); } +void iFpid(x64emu_t *emu, uintptr_t fcn) { iFpid_t fn = (iFpid_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0]); } void iFpil(x64emu_t *emu, uintptr_t fcn) { iFpil_t fn = (iFpil_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (intptr_t)R_RDX); } void iFpiL(x64emu_t *emu, uintptr_t fcn) { iFpiL_t fn = (iFpiL_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX); } void iFpip(x64emu_t *emu, uintptr_t fcn) { iFpip_t fn = (iFpip_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); } @@ -5529,6 +5538,7 @@ void iFpppuiii(x64emu_t *emu, uintptr_t fcn) { iFpppuiii_t fn = (iFpppuiii_t)fcn void iFpppLppp(x64emu_t *emu, uintptr_t fcn) { iFpppLppp_t fn = (iFpppLppp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFppppilp(x64emu_t *emu, uintptr_t fcn) { iFppppilp_t fn = (iFppppilp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (intptr_t)R_R9, *(void**)(R_RSP + 8)); } void iFppppipp(x64emu_t *emu, uintptr_t fcn) { iFppppipp_t fn = (iFppppipp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } +void iFppppIip(x64emu_t *emu, uintptr_t fcn) { iFppppIip_t fn = (iFppppIip_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); } void iFppppdpu(x64emu_t *emu, uintptr_t fcn) { iFppppdpu_t fn = (iFppppdpu_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, emu->xmm[0].d[0], (void*)R_R8, (uint32_t)R_R9); } void iFpppppip(x64emu_t *emu, uintptr_t fcn) { iFpppppip_t fn = (iFpppppip_t)fcn; R_RAX=(int32_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 iFpppppLp(x64emu_t *emu, uintptr_t fcn) { iFpppppLp_t fn = (iFpppppLp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uintptr_t)R_R9, *(void**)(R_RSP + 8)); } @@ -6269,6 +6279,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFL) return 1; if (fun == &iFp) return 1; if (fun == &IFv) return 1; + if (fun == &IFi) return 1; if (fun == &IFI) return 1; if (fun == &IFf) return 2; if (fun == &IFd) return 2; @@ -6566,6 +6577,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFLup) return 1; if (fun == &vFLpL) return 1; if (fun == &vFLpp) return 1; + if (fun == &vFpic) return 1; if (fun == &vFpii) return 1; if (fun == &vFpiI) return 1; if (fun == &vFpiC) return 1; @@ -6647,10 +6659,12 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFLpp) return 1; if (fun == &iFpwp) return 1; if (fun == &iFpii) return 1; + if (fun == &iFpiI) return 1; if (fun == &iFpiC) return 1; if (fun == &iFpiW) return 1; if (fun == &iFpiu) return 1; if (fun == &iFpiU) return 1; + if (fun == &iFpid) return 2; if (fun == &iFpil) return 1; if (fun == &iFpiL) return 1; if (fun == &iFpip) return 1; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 224bf7fab..81024d377 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -78,6 +78,7 @@ void iFS(x64emu_t *emu, uintptr_t fnc); void iFP(x64emu_t *emu, uintptr_t fnc); void iFb(x64emu_t *emu, uintptr_t fnc); void IFv(x64emu_t *emu, uintptr_t fnc); +void IFi(x64emu_t *emu, uintptr_t fnc); void IFI(x64emu_t *emu, uintptr_t fnc); void IFf(x64emu_t *emu, uintptr_t fnc); void IFd(x64emu_t *emu, uintptr_t fnc); @@ -453,6 +454,7 @@ void vFlpp(x64emu_t *emu, uintptr_t fnc); void vFLup(x64emu_t *emu, uintptr_t fnc); void vFLpL(x64emu_t *emu, uintptr_t fnc); void vFLpp(x64emu_t *emu, uintptr_t fnc); +void vFpic(x64emu_t *emu, uintptr_t fnc); void vFpii(x64emu_t *emu, uintptr_t fnc); void vFpiI(x64emu_t *emu, uintptr_t fnc); void vFpiC(x64emu_t *emu, uintptr_t fnc); @@ -551,10 +553,12 @@ void iFLip(x64emu_t *emu, uintptr_t fnc); void iFLpp(x64emu_t *emu, uintptr_t fnc); void iFpwp(x64emu_t *emu, uintptr_t fnc); void iFpii(x64emu_t *emu, uintptr_t fnc); +void iFpiI(x64emu_t *emu, uintptr_t fnc); void iFpiC(x64emu_t *emu, uintptr_t fnc); void iFpiW(x64emu_t *emu, uintptr_t fnc); void iFpiu(x64emu_t *emu, uintptr_t fnc); void iFpiU(x64emu_t *emu, uintptr_t fnc); +void iFpid(x64emu_t *emu, uintptr_t fnc); void iFpil(x64emu_t *emu, uintptr_t fnc); void iFpiL(x64emu_t *emu, uintptr_t fnc); void iFpip(x64emu_t *emu, uintptr_t fnc); @@ -2435,6 +2439,7 @@ void iFpppuiii(x64emu_t *emu, uintptr_t fnc); void iFpppLppp(x64emu_t *emu, uintptr_t fnc); void iFppppilp(x64emu_t *emu, uintptr_t fnc); void iFppppipp(x64emu_t *emu, uintptr_t fnc); +void iFppppIip(x64emu_t *emu, uintptr_t fnc); void iFppppdpu(x64emu_t *emu, uintptr_t fnc); void iFpppppip(x64emu_t *emu, uintptr_t fnc); void iFpppppLp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibsqlite3.c b/src/wrapped/wrappedlibsqlite3.c new file mode 100644 index 000000000..025f816aa --- /dev/null +++ b/src/wrapped/wrappedlibsqlite3.c @@ -0,0 +1,32 @@ +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include +#include +#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 "callback.h" +#include "box64context.h" +#include "librarian.h" +#include "myalign.h" + +const char* libsqlite3Name = "libsqlite3.so.0"; +#define LIBNAME libsqlite3 + + +#define ADDED_FUNCTIONS() + +#include "generated/wrappedlibsqlite3types.h" + +#include "wrappercallback.h" + +// Insert my_* functions here... + +#include "wrappedlib_init.h" diff --git a/src/wrapped/wrappedlibsqlite3_private.h b/src/wrapped/wrappedlibsqlite3_private.h new file mode 100644 index 000000000..3d19be803 --- /dev/null +++ b/src/wrapped/wrappedlibsqlite3_private.h @@ -0,0 +1,269 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +error Meh... +#endif + +GO(sqlite3_aggregate_context, pFpi) +GO(sqlite3_aggregate_count, iFp) +// GO(sqlite3_auto_extension, +GO(sqlite3_backup_finish, iFp) +GO(sqlite3_backup_init, pFpppp) +// GO(sqlite3_backup_pagecount, iFp) +GO(sqlite3_backup_step, iFpi) +// GO(sqlite3_bind_blob, +// GO(sqlite3_bind_blob64, +GO(sqlite3_bind_double, iFpid) +GO(sqlite3_bind_int, iFpii) +GO(sqlite3_bind_int64, iFpiI) +GO(sqlite3_bind_null, iFpi) +GO(sqlite3_bind_parameter_count, iFp) +GO(sqlite3_bind_parameter_index, iFpp) +GO(sqlite3_bind_parameter_name, pFpi) +// GO(sqlite3_bind_pointer, +// GO(sqlite3_bind_text, +// GO(sqlite3_bind_text16, +// GO(sqlite3_bind_text64, +GO(sqlite3_bind_value, iFpip) +GO(sqlite3_bind_zeroblob, iFpii) +GO(sqlite3_bind_zeroblob64, iFpiU) +GO(sqlite3_blob_bytes, iFp) +GO(sqlite3_blob_close, iFp) +GO(sqlite3_blob_open, iFppppIip) +GO(sqlite3_blob_read, iFppii) +GO(sqlite3_blob_write, iFppii) +// GO(sqlite3_busy_handler, +GO(sqlite3_busy_timeout, iFpi) +// GO(sqlite3_cancel_auto_extension, +GO(sqlite3_changes, iFp) +GO(sqlite3_clear_bindings, iFp) +GO(sqlite3_close_v2, iFp) +GO(sqlite3_close, iFp) +// GO(sqlite3_collation_needed, +// GO(sqlite3_collation_needed16, +GO(sqlite3_column_blob, pFpi) +GO(sqlite3_column_bytes, iFpi) +GO(sqlite3_column_count, iFp) +GO(sqlite3_column_database_name, pFpi) +GO(sqlite3_column_database_name16, pFpi) +GO(sqlite3_column_decltype, pFpi) +GO(sqlite3_column_decltype16, pFpi) +GO(sqlite3_column_double, dFpi) +GO(sqlite3_column_int, iFpi) +GO(sqlite3_column_int64, IFpi) +GO(sqlite3_column_name, pFpi) +GO(sqlite3_column_name16, pFpi) +GO(sqlite3_column_origin_name, pFpi) +GO(sqlite3_column_origin_name16, pFpi) +GO(sqlite3_column_table_name, pFpi) +GO(sqlite3_column_table_name16, pFpi) +GO(sqlite3_column_text16, pFpi) +GO(sqlite3_column_type, iFpi) +GO(sqlite3_column_value, pFpi) +// GO(sqlite3_commit_hook, +GO(sqlite3_compileoption_get, pFi) +GO(sqlite3_compileoption_used, iFp) +GO(sqlite3_complete, iFp) +GO(sqlite3_complete16, iFp) +// GO(sqlite3_config, +GO(sqlite3_context_db_handle, pFp) +// GO(sqlite3_create_collation_v2, +// GO(sqlite3_create_collation, +// GO(sqlite3_create_collation16, +GO(sqlite3_create_filename, pFpppip) +// GO(sqlite3_create_function_v2, +// GO(sqlite3_create_function, +// GO(sqlite3_create_function16, +// GO(sqlite3_create_module_v2, +// GO(sqlite3_create_module, +// GO(sqlite3_create_window_function, +GO(sqlite3_data_count, iFp) +// GO(sqlite3_data_directory, +GO(sqlite3_database_file_object, pFp) +GO(sqlite3_db_cacheflush, iFp) +// GO(sqlite3_db_config, +GO(sqlite3_db_filename, pFpp) +GO(sqlite3_db_handle, pFp) +GO(sqlite3_db_mutex, pFp) +GO(sqlite3_db_readonly, iFpp) +GO(sqlite3_db_release_memory, iFp) +GO(sqlite3_db_status, iFpippi) +GO(sqlite3_declare_vtab, iFpp) +GO(sqlite3_enable_load_extension, iFpi) +GO(sqlite3_enable_shared_cache, iFi) +GO(sqlite3_errcode, iFp) +GO(sqlite3_errmsg, pFp) +GO(sqlite3_errmsg16, pFp) +GO(sqlite3_errstr, pFi) +// GO(sqlite3_exec, +GO(sqlite3_expanded_sql, pFp) +GO(sqlite3_extended_errcode, iFp) +GO(sqlite3_extended_result_codes, iFpi) +GO(sqlite3_file_control, iFppip) +GO(sqlite3_filename_database, pFp) +GO(sqlite3_filename_journal, pFp) +GO(sqlite3_filename_wal, pFp) +GO(sqlite3_finalize, iFp) +GO(sqlite3_free_filename, vFp) +GO(sqlite3_free_table, vFp) +GO(sqlite3_free, vFp) +GO(sqlite3_get_autocommit, iFp) +GO(sqlite3_get_auxdata, pFpi) +GO(sqlite3_get_table, iFpppppp) +GO(sqlite3_global_recover, iFv) +GO(sqlite3_hard_heap_limit64, IFI) +GO(sqlite3_initialize, iFv) +GO(sqlite3_interrupt, vFp) +GO(sqlite3_keyword_check, iFpi) +GO(sqlite3_keyword_count, iFv) +GO(sqlite3_keyword_name, iFipp) +GO(sqlite3_last_insert_rowid, IFp) +GO(sqlite3_libversion_number, iFv) +GO(sqlite3_libversion, pFv) +GO(sqlite3_limit, iFpii) +GO(sqlite3_load_extension, iFpppp) +// GO(sqlite3_log, +GO(sqlite3_malloc, pFi) +GO(sqlite3_malloc64, pFU) +// GO(sqlite3_memory_alarm, +GO(sqlite3_memory_highwater, IFi) +GO(sqlite3_memory_used, IFv) +// GO(sqlite3_mprintf, +GO(sqlite3_msize, UFp) +GO(sqlite3_mutex_alloc, pFi) +GO(sqlite3_mutex_enter, vFp) +GO(sqlite3_mutex_free, vFp) +GO(sqlite3_mutex_try, iFp) +GO(sqlite3_next_stmt, pFpp) +GO(sqlite3_open_v2, iFppip) +GO(sqlite3_open16, iFpp) +GO(sqlite3_os_end, iFv) +GO(sqlite3_os_init, iFv) +GO(sqlite3_overload_function, iFppi) +GO(sqlite3_prepare_v2, iFppipp) +GO(sqlite3_prepare_v3, iFppippp) +GO(sqlite3_prepare16_v2, iFppipp) +GO(sqlite3_prepare16_v3, iFppippp) +GO(sqlite3_prepare16, iFppipp) +// GO(sqlite3_profile, +// GO(sqlite3_progress_handler, +GO(sqlite3_randomness, vFip) +GO(sqlite3_realloc, pFpi) +GO(sqlite3_realloc64, pFpU) +GO(sqlite3_release_memory, iFi) +GO(sqlite3_reset_auto_extension, vFv) +GO(sqlite3_reset, iFp) +// GO(sqlite3_result_blob, +// GO(sqlite3_result_blob64, +GO(sqlite3_result_error_code, vFpi) +GO(sqlite3_result_error_nomem, vFp) +GO(sqlite3_result_error_toobig, vFp) +GO(sqlite3_result_error, vFppi) +GO(sqlite3_result_error16, vFppi) +GO(sqlite3_result_int, vFpi) +GO(sqlite3_result_int64, vFpI) +GO(sqlite3_result_null, vFp) +// GO(sqlite3_result_pointer, +GO(sqlite3_result_subtype, vFpu) +// GO(sqlite3_result_text, +// GO(sqlite3_result_text16, +// GO(sqlite3_result_text16be, +// GO(sqlite3_result_text16le, +// GO(sqlite3_result_text64, +GO(sqlite3_result_value, vFpp) +GO(sqlite3_result_zeroblob, vFpi) +GO(sqlite3_result_zeroblob64, iFpU) +// GO(sqlite3_rollback_hook, +// GO(sqlite3_rtree_geometry_callback, +// GO(sqlite3_rtree_query_callback, +// GO(sqlite3_set_authorizer, +// GO(sqlite3_set_auxdata, +// GO(sqlite3_set_last_insert_rowid, +GO(sqlite3_shutdown, iFv) +GO(sqlite3_sleep, iFi) +// GO(sqlite3_snprintf, +GO(sqlite3_soft_heap_limit, vFi) +GO(sqlite3_soft_heap_limit64, IFI) +GO(sqlite3_sourceid, pFv) +GO(sqlite3_sql, pFp) +GO(sqlite3_status, iFippi) +GO(sqlite3_status64, iFippi) +GO(sqlite3_step, iFp) +GO(sqlite3_stmt_busy, iFp) +GO(sqlite3_stmt_isexplain, iFp) +GO(sqlite3_stmt_readonly, iFp) +GO(sqlite3_stmt_status, iFpii) +GO(sqlite3_str_append, vFppi) +GO(sqlite3_str_appendall, vFpp) +GO(sqlite3_str_appendchar, vFpic) +// GO(sqlite3_str_appendf, +GO(sqlite3_str_errcode, iFp) +GO(sqlite3_str_finish, pFp) +GO(sqlite3_str_length, iFp) +GO(sqlite3_str_new, pFp) +GO(sqlite3_str_reset, vFp) +GO(sqlite3_str_value, pFp) +// GO(sqlite3_str_vappendf, +GO(sqlite3_strglob, iFpp) +GO(sqlite3_stricmp, iFpp) +GO(sqlite3_strlike, iFppu) +GO(sqlite3_strnicmp, iFppi) +GO(sqlite3_system_errno, iFp) +// GO(sqlite3_table_column_metadata, +// GO(sqlite3_temp_directory, +// GO(sqlite3_test_control, +// GO(sqlite3_thread_cleanup, +// GO(sqlite3_threadsafe, +// GO(sqlite3_total_changes, +// GO(sqlite3_trace_v2, +// GO(sqlite3_trace, +// GO(sqlite3_transfer_bindings, +// GO(sqlite3_txn_state, +// GO(sqlite3_unlock_notify, +// GO(sqlite3_unsupported_selecttrace, +// GO(sqlite3_update_hook, +GO(sqlite3_uri_boolean, iFppi) +GO(sqlite3_uri_int64, IFppI) +GO(sqlite3_uri_key, pFpi) +GO(sqlite3_uri_parameter, pFpp) +// GO(sqlite3_user_data, +GO(sqlite3_value_blob, pFp) +GO(sqlite3_value_bytes, iFp) +GO(sqlite3_value_bytes16, iFp) +GO(sqlite3_value_double, dFp) +GO(sqlite3_value_dup, pFp) +GO(sqlite3_value_free, vFp) +GO(sqlite3_value_frombind, iFp) +GO(sqlite3_value_int, iFp) +GO(sqlite3_value_int64, IFp) +GO(sqlite3_value_nochange, iFp) +GO(sqlite3_value_numeric_type, iFp) +GO(sqlite3_value_subtype, uFp) +GO(sqlite3_value_text, pFp) +GO(sqlite3_value_text16, pFp) +GO(sqlite3_value_text16be, pFp) +GO(sqlite3_value_text16le, pFp) +GO(sqlite3_value_type, iFp) +// GO(sqlite3_version, +// GO(sqlite3_vfs_find, +// GO(sqlite3_vfs_register, +// GO(sqlite3_vfs_unregister, +// GO(sqlite3_vmprintf, +// GO(sqlite3_vsnprintf, +// GO(sqlite3_vtab_collation, +// GO(sqlite3_vtab_config, +// GO(sqlite3_vtab_nochange, +// GO(sqlite3_vtab_on_conflict, +// GO(sqlite3_wal_autocheckpoint, +GO(sqlite3_wal_checkpoint_v2, iFppipp) +GO(sqlite3_wal_checkpoint, iFpp) +// GO(sqlite3_wal_hook, +GO(sqlite3_backup_remaining, iFp) +GO(sqlite3_blob_reopen, iFpI) +GO(sqlite3_column_bytes16, iFpi) +GO(sqlite3_column_text, pFpi) +GO(sqlite3_drop_modules, iFpp) +GO(sqlite3_expired, iFp) +GO(sqlite3_mutex_leave, vFp) +GO(sqlite3_open, iFpp) +GO(sqlite3_prepare, iFppipp) +GO(sqlite3_result_double, vFpd) +GO(sqlite3_value_pointer, pFpp)