about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-10-07 11:17:18 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-10-07 11:17:18 +0200
commitcfe8f8f6e13e94f7c6114a755ac004cbb544668a (patch)
tree8fd0e18331b449a911e8395daaf307dc1f12d0c2 /src
parent9d63f0ce9a3c8b9453084e0748fd0f3d8cfb8ae8 (diff)
downloadbox64-cfe8f8f6e13e94f7c6114a755ac004cbb544668a.tar.gz
box64-cfe8f8f6e13e94f7c6114a755ac004cbb544668a.zip
Added wrapped liblcms2 and libevent-2.1 used by TeamSpeak3 linux client (for #986)
Diffstat (limited to 'src')
-rw-r--r--src/library_list.h2
-rw-r--r--src/wrapped/generated/functions_list.txt6
-rw-r--r--src/wrapped/generated/wrappedevent21defs.h8
-rw-r--r--src/wrapped/generated/wrappedevent21types.h19
-rw-r--r--src/wrapped/generated/wrappedevent21undefs.h8
-rw-r--r--src/wrapped/generated/wrappedlcms2defs.h8
-rw-r--r--src/wrapped/generated/wrappedlcms2types.h17
-rw-r--r--src/wrapped/generated/wrappedlcms2undefs.h8
-rw-r--r--src/wrapped/generated/wrapper.c4
-rw-r--r--src/wrapped/generated/wrapper.h2
-rw-r--r--src/wrapped/wrappedevent21.c71
-rw-r--r--src/wrapped/wrappedevent21_private.h646
-rw-r--r--src/wrapped/wrappedlcms2.c18
-rw-r--r--src/wrapped/wrappedlcms2_private.h368
14 files changed, 1185 insertions, 0 deletions
diff --git a/src/library_list.h b/src/library_list.h
index e9c73b1c..5a5d3ec7 100644
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -214,6 +214,8 @@ GO("libgsttag-1.0.so.0", gsttag)
 GO("libgstvideo-1.0.so.0", gstvideo)
 GO("libxshmfence.so.1", xshmfence)
 GO("libatomic.so.1", atomic)
+GO("liblcms2.so.2", lcms2)
+GO("libevent-2.1.so.7", event21)
 GO("libsoftokn3.so", softokn3)
 GO("libwayland-egl.so.1", waylandegl)
 GO("libwayland-client.so.0", waylandclient)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index d8701336..8c95c072 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1721,6 +1721,7 @@
 #() iWpppup
 #() iWppppp
 #() vFEiiipp
+#() vFEpiwpp
 #() vFEpiLpp
 #() vFEpippp
 #() vFEpuipp
@@ -2362,6 +2363,7 @@
 #() pFppuuupp
 #() pFppuuppp
 #() pFppuLLip
+#() pFppupuuu
 #() pFppliuip
 #() pFpplipup
 #() pFppLipip
@@ -3104,6 +3106,9 @@ wrappeddbusglib1:
   - dbus_g_proxy_begin_call
 - pFpppppiiV:
   - dbus_g_proxy_begin_call_with_timeout
+wrappedevent21:
+- vFpiwpp:
+  - event_set
 wrappedexpat:
 - vFpp:
   - XML_SetAttlistDeclHandler
@@ -3837,6 +3842,7 @@ wrappedkrb5:
 - iFppppppipp:
   - krb5_get_init_creds_password
 wrappedlber:
+wrappedlcms2:
 wrappedldapr:
 - iFpppppupp:
   - ldap_sasl_interactive_bind_s
diff --git a/src/wrapped/generated/wrappedevent21defs.h b/src/wrapped/generated/wrappedevent21defs.h
new file mode 100644
index 00000000..12285f34
--- /dev/null
+++ b/src/wrapped/generated/wrappedevent21defs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedevent21DEFS_H_
+#define __wrappedevent21DEFS_H_
+
+
+#endif // __wrappedevent21DEFS_H_
diff --git a/src/wrapped/generated/wrappedevent21types.h b/src/wrapped/generated/wrappedevent21types.h
new file mode 100644
index 00000000..6c38c02f
--- /dev/null
+++ b/src/wrapped/generated/wrappedevent21types.h
@@ -0,0 +1,19 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedevent21TYPES_H_
+#define __wrappedevent21TYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void (*vFpiwpp_t)(void*, int32_t, int16_t, void*, void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(event_set, vFpiwpp_t)
+
+#endif // __wrappedevent21TYPES_H_
diff --git a/src/wrapped/generated/wrappedevent21undefs.h b/src/wrapped/generated/wrappedevent21undefs.h
new file mode 100644
index 00000000..85410abc
--- /dev/null
+++ b/src/wrapped/generated/wrappedevent21undefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedevent21UNDEFS_H_
+#define __wrappedevent21UNDEFS_H_
+
+
+#endif // __wrappedevent21UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlcms2defs.h b/src/wrapped/generated/wrappedlcms2defs.h
new file mode 100644
index 00000000..300dd9c5
--- /dev/null
+++ b/src/wrapped/generated/wrappedlcms2defs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedlcms2DEFS_H_
+#define __wrappedlcms2DEFS_H_
+
+
+#endif // __wrappedlcms2DEFS_H_
diff --git a/src/wrapped/generated/wrappedlcms2types.h b/src/wrapped/generated/wrappedlcms2types.h
new file mode 100644
index 00000000..8044d3d0
--- /dev/null
+++ b/src/wrapped/generated/wrappedlcms2types.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedlcms2TYPES_H_
+#define __wrappedlcms2TYPES_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 // __wrappedlcms2TYPES_H_
diff --git a/src/wrapped/generated/wrappedlcms2undefs.h b/src/wrapped/generated/wrappedlcms2undefs.h
new file mode 100644
index 00000000..e7c6de09
--- /dev/null
+++ b/src/wrapped/generated/wrappedlcms2undefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedlcms2UNDEFS_H_
+#define __wrappedlcms2UNDEFS_H_
+
+
+#endif // __wrappedlcms2UNDEFS_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index b197c9f8..632414de 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1757,6 +1757,7 @@ typedef int32_t (*iWpppuu_t)(void*, void*, void*, uint32_t, uint32_t);
 typedef int32_t (*iWpppup_t)(void*, void*, void*, uint32_t, void*);
 typedef int32_t (*iWppppp_t)(void*, void*, void*, void*, void*);
 typedef void (*vFEiiipp_t)(x64emu_t*, int32_t, int32_t, int32_t, void*, void*);
+typedef void (*vFEpiwpp_t)(x64emu_t*, void*, int32_t, int16_t, void*, void*);
 typedef void (*vFEpiLpp_t)(x64emu_t*, void*, int32_t, uintptr_t, void*, void*);
 typedef void (*vFEpippp_t)(x64emu_t*, void*, int32_t, void*, void*, void*);
 typedef void (*vFEpuipp_t)(x64emu_t*, void*, uint32_t, int32_t, void*, void*);
@@ -2398,6 +2399,7 @@ typedef void* (*pFppuippp_t)(void*, void*, uint32_t, int32_t, void*, void*, void
 typedef void* (*pFppuuupp_t)(void*, void*, uint32_t, uint32_t, uint32_t, void*, void*);
 typedef void* (*pFppuuppp_t)(void*, void*, uint32_t, uint32_t, void*, void*, void*);
 typedef void* (*pFppuLLip_t)(void*, void*, uint32_t, uintptr_t, uintptr_t, int32_t, void*);
+typedef void* (*pFppupuuu_t)(void*, void*, uint32_t, void*, uint32_t, uint32_t, uint32_t);
 typedef void* (*pFppliuip_t)(void*, void*, intptr_t, int32_t, uint32_t, int32_t, void*);
 typedef void* (*pFpplipup_t)(void*, void*, intptr_t, int32_t, void*, uint32_t, void*);
 typedef void* (*pFppLipip_t)(void*, void*, uintptr_t, int32_t, void*, int32_t, void*);
@@ -4697,6 +4699,7 @@ void iWpppuu(x64emu_t *emu, uintptr_t fcn) { iWpppuu_t fn = (iWpppuu_t)fcn; R_RA
 void iWpppup(x64emu_t *emu, uintptr_t fcn) { iWpppup_t fn = (iWpppup_t)fcn; R_RAX=(int32_t)fn((void*)R_RCX, (void*)R_RDX, (void*)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 40)); }
 void iWppppp(x64emu_t *emu, uintptr_t fcn) { iWppppp_t fn = (iWppppp_t)fcn; R_RAX=(int32_t)fn((void*)R_RCX, (void*)R_RDX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 40)); }
 void vFEiiipp(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFEpiwpp(x64emu_t *emu, uintptr_t fcn) { vFEpiwpp_t fn = (vFEpiwpp_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int16_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void vFEpiLpp(x64emu_t *emu, uintptr_t fcn) { vFEpiLpp_t fn = (vFEpiLpp_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void vFEpippp(x64emu_t *emu, uintptr_t fcn) { vFEpippp_t fn = (vFEpippp_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void vFEpuipp(x64emu_t *emu, uintptr_t fcn) { vFEpuipp_t fn = (vFEpuipp_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
@@ -5338,6 +5341,7 @@ void pFppuippp(x64emu_t *emu, uintptr_t fcn) { pFppuippp_t fn = (pFppuippp_t)fcn
 void pFppuuupp(x64emu_t *emu, uintptr_t fcn) { pFppuuupp_t fn = (pFppuuupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFppuuppp(x64emu_t *emu, uintptr_t fcn) { pFppuuppp_t fn = (pFppuuppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFppuLLip(x64emu_t *emu, uintptr_t fcn) { pFppuLLip_t fn = (pFppuLLip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void pFppupuuu(x64emu_t *emu, uintptr_t fcn) { pFppupuuu_t fn = (pFppupuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
 void pFppliuip(x64emu_t *emu, uintptr_t fcn) { pFppliuip_t fn = (pFppliuip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFpplipup(x64emu_t *emu, uintptr_t fcn) { pFpplipup_t fn = (pFpplipup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFppLipip(x64emu_t *emu, uintptr_t fcn) { pFppLipip_t fn = (pFppLipip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 02d10f13..0e758a90 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1758,6 +1758,7 @@ void iWpppuu(x64emu_t *emu, uintptr_t fnc);
 void iWpppup(x64emu_t *emu, uintptr_t fnc);
 void iWppppp(x64emu_t *emu, uintptr_t fnc);
 void vFEiiipp(x64emu_t *emu, uintptr_t fnc);
+void vFEpiwpp(x64emu_t *emu, uintptr_t fnc);
 void vFEpiLpp(x64emu_t *emu, uintptr_t fnc);
 void vFEpippp(x64emu_t *emu, uintptr_t fnc);
 void vFEpuipp(x64emu_t *emu, uintptr_t fnc);
@@ -2399,6 +2400,7 @@ void pFppuippp(x64emu_t *emu, uintptr_t fnc);
 void pFppuuupp(x64emu_t *emu, uintptr_t fnc);
 void pFppuuppp(x64emu_t *emu, uintptr_t fnc);
 void pFppuLLip(x64emu_t *emu, uintptr_t fnc);
+void pFppupuuu(x64emu_t *emu, uintptr_t fnc);
 void pFppliuip(x64emu_t *emu, uintptr_t fnc);
 void pFpplipup(x64emu_t *emu, uintptr_t fnc);
 void pFppLipip(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedevent21.c b/src/wrapped/wrappedevent21.c
new file mode 100644
index 00000000..1cf4fe3a
--- /dev/null
+++ b/src/wrapped/wrappedevent21.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#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 "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+
+const char* event21Name = "libevent-2.1.so.7";
+#define LIBNAME event21
+
+#include "generated/wrappedevent21types.h"
+
+#include "wrappercallback.h"
+
+#define SUPER() \
+    GO(0)   \
+    GO(1)   \
+    GO(2)   \
+    GO(3)
+
+// event_set
+#define GO(A)   \
+static uintptr_t my_event_set_fct_##A = 0;                  \
+static void my_event_set_##A(int a, short b, void* c)       \
+{                                                           \
+    RunFunctionFmt(my_event_set_fct_##A, "iwp", a, b, c);   \
+}
+SUPER()
+#undef GO
+static void* findevent_setFct(void* fct)
+{
+    if(!fct) return NULL;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_event_set_fct_##A == (uintptr_t)fct) return my_event_set_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_event_set_fct_##A == 0) {my_event_set_fct_##A = (uintptr_t)fct; return my_event_set_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libevent-2.1 event_set callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+EXPORT void my_event_set(x64emu_t* emu, void* evt, int sock, short i, void* f, void* data)
+{
+    my->event_set(evt, sock, i, findevent_setFct(f), data);
+}
+
+#define CUSTOM_INIT \
+    getMy(lib);
+
+#define CUSTOM_FINI \
+    freeMy();
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedevent21_private.h b/src/wrapped/wrappedevent21_private.h
new file mode 100644
index 00000000..727916f1
--- /dev/null
+++ b/src/wrapped/wrappedevent21_private.h
@@ -0,0 +1,646 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh....
+#endif
+
+//GO(bufferevent_add_event_, 
+//GO(bufferevent_add_to_rate_limit_group, 
+//GO(bufferevent_base_set, 
+//GO(bufferevent_decref, 
+//GO(bufferevent_decref_and_unlock_, 
+//GO(bufferevent_decrement_read_buckets_, 
+//GO(bufferevent_decrement_read_limit, 
+//GO(bufferevent_decrement_write_buckets_, 
+//GO(bufferevent_decrement_write_limit, 
+//GO(bufferevent_disable, 
+//GO(bufferevent_disable_hard_, 
+//GO(bufferevent_enable, 
+//GO(bufferevent_enable_locking_, 
+//GO(bufferevent_filter_new, 
+//GO(bufferevent_flush, 
+//GO(bufferevent_free, 
+//GO(bufferevent_generic_adj_existing_timeouts_, 
+//GO(bufferevent_generic_adj_timeouts_, 
+//GO(bufferevent_get_base, 
+//GO(bufferevent_getcb, 
+//GO(bufferevent_get_enabled, 
+//GO(bufferevent_getfd, 
+//GO(bufferevent_get_input, 
+//GO(bufferevent_get_max_single_read, 
+//GO(bufferevent_get_max_single_write, 
+//GO(bufferevent_get_max_to_read, 
+//GO(bufferevent_get_max_to_write, 
+//GO(bufferevent_get_options_, 
+//GO(bufferevent_get_output, 
+//GO(bufferevent_get_priority, 
+//GO(bufferevent_get_read_limit, 
+//GO(bufferevent_get_read_max_, 
+//GO(bufferevent_get_token_bucket_cfg, 
+//GO(bufferevent_get_underlying, 
+//GO(bufferevent_getwatermark, 
+//GO(bufferevent_get_write_limit, 
+//GO(bufferevent_get_write_max_, 
+//GO(bufferevent_incref, 
+//GO(bufferevent_incref_and_lock_, 
+//GO(bufferevent_init_common_, 
+//GO(bufferevent_init_generic_timeout_cbs_, 
+//GO(bufferevent_lock, 
+//GO(bufferevent_new, 
+//DATA(bufferevent_ops_filter, 
+//DATA(bufferevent_ops_pair, 
+//DATA(bufferevent_ops_socket, 
+//GO(bufferevent_pair_get_partner, 
+//GO(bufferevent_pair_new, 
+//GO(bufferevent_priority_set, 
+//GO(bufferevent_ratelim_init_, 
+//GO(bufferevent_rate_limit_group_decrement_read, 
+//GO(bufferevent_rate_limit_group_decrement_write, 
+//GO(bufferevent_rate_limit_group_free, 
+//GO(bufferevent_rate_limit_group_get_read_limit, 
+//GO(bufferevent_rate_limit_group_get_totals, 
+//GO(bufferevent_rate_limit_group_get_write_limit, 
+//GO(bufferevent_rate_limit_group_new, 
+//GO(bufferevent_rate_limit_group_reset_totals, 
+//GO(bufferevent_rate_limit_group_set_cfg, 
+//GO(bufferevent_rate_limit_group_set_min_share, 
+//GO(bufferevent_read, 
+//GO(bufferevent_read_buffer, 
+//GO(bufferevent_remove_from_rate_limit_group, 
+//GO(bufferevent_remove_from_rate_limit_group_internal_, 
+//GO(bufferevent_run_eventcb_, 
+//GO(bufferevent_run_readcb_, 
+//GO(bufferevent_run_writecb_, 
+//GO(bufferevent_setcb, 
+//GO(bufferevent_setfd, 
+//GO(bufferevent_set_max_single_read, 
+//GO(bufferevent_set_max_single_write, 
+//GO(bufferevent_set_rate_limit, 
+//GO(bufferevent_settimeout, 
+//GO(bufferevent_set_timeouts, 
+//GO(bufferevent_setwatermark, 
+//GO(bufferevent_socket_connect, 
+//GO(bufferevent_socket_connect_hostname, 
+//GO(bufferevent_socket_get_conn_address_, 
+//GO(bufferevent_socket_get_dns_error, 
+//GO(bufferevent_socket_new, 
+//GO(bufferevent_socket_set_conn_address_, 
+//GO(bufferevent_socket_set_conn_address_fd_, 
+//GO(bufferevent_suspend_read_, 
+//GO(bufferevent_suspend_write_, 
+//GO(bufferevent_trigger, 
+//GO(bufferevent_trigger_event, 
+//GO(bufferevent_unlock, 
+//GO(bufferevent_unsuspend_read_, 
+//GO(bufferevent_unsuspend_write_, 
+//GO(bufferevent_write, 
+//GO(bufferevent_write_buffer, 
+//DATA(epollops, 
+//GO(evbuffer_add, 
+//GO(evbuffer_add_buffer, 
+//GO(evbuffer_add_buffer_reference, 
+//GO(evbuffer_add_cb, 
+//GO(evbuffer_add_file, 
+//GO(evbuffer_add_file_segment, 
+//GO(evbuffer_add_iovec, 
+//GO(evbuffer_add_printf, 
+//GO(evbuffer_add_reference, 
+//GO(evbuffer_add_vprintf, 
+//GO(evbuffer_cb_clear_flags, 
+//GO(evbuffer_cb_set_flags, 
+//GO(evbuffer_chain_pin_, 
+//GO(evbuffer_chain_unpin_, 
+//GO(evbuffer_clear_flags, 
+//GO(evbuffer_commit_space, 
+//GO(evbuffer_copyout, 
+//GO(evbuffer_copyout_from, 
+//GO(evbuffer_decref_and_unlock_, 
+//GO(evbuffer_defer_callbacks, 
+//GO(evbuffer_drain, 
+//GO(evbuffer_enable_locking, 
+//GO(evbuffer_expand, 
+//GO(evbuffer_expand_fast_, 
+//GO(evbuffer_file_segment_add_cleanup_cb, 
+//GO(evbuffer_file_segment_free, 
+//GO(evbuffer_file_segment_new, 
+//GO(evbuffer_find, 
+//GO(evbuffer_free, 
+//GO(evbuffer_freeze, 
+//GO(evbuffer_get_callbacks_, 
+//GO(evbuffer_get_contiguous_space, 
+//GO(evbuffer_get_length, 
+//GO(evbuffer_incref_, 
+//GO(evbuffer_incref_and_lock_, 
+//GO(evbuffer_invoke_callbacks_, 
+//GO(evbuffer_lock, 
+//GO(evbuffer_new, 
+//GO(evbuffer_peek, 
+//GO(evbuffer_prepend, 
+//GO(evbuffer_prepend_buffer, 
+//GO(evbuffer_ptr_set, 
+//GO(evbuffer_pullup, 
+//GO(evbuffer_read, 
+//GO(evbuffer_readline, 
+//GO(evbuffer_readln, 
+//GO(evbuffer_read_setup_vecs_, 
+//GO(evbuffer_remove, 
+//GO(evbuffer_remove_buffer, 
+//GO(evbuffer_remove_cb, 
+//GO(evbuffer_remove_cb_entry, 
+//GO(evbuffer_reserve_space, 
+//GO(evbuffer_search, 
+//GO(evbuffer_search_eol, 
+//GO(evbuffer_search_range, 
+//GO(evbuffer_setcb, 
+//GO(evbuffer_set_flags, 
+//GO(evbuffer_set_parent_, 
+//GO(evbuffer_unfreeze, 
+//GO(evbuffer_unlock, 
+//GO(evbuffer_write, 
+//GO(evbuffer_write_atmost, 
+//GO(evconnlistener_disable, 
+//GO(evconnlistener_enable, 
+//GO(evconnlistener_free, 
+//GO(evconnlistener_get_base, 
+//GO(evconnlistener_get_fd, 
+//GO(evconnlistener_new, 
+//GO(evconnlistener_new_bind, 
+//GO(evconnlistener_set_cb, 
+//GO(evconnlistener_set_error_cb, 
+//GO(evdns_add_server_port, 
+//GO(evdns_add_server_port_with_base, 
+//GO(evdns_base_clear_host_addresses, 
+//GO(evdns_base_clear_nameservers_and_suspend, 
+//GO(evdns_base_count_nameservers, 
+//GO(evdns_base_free, 
+//GO(evdns_base_get_nameserver_addr, 
+//GO(evdns_base_load_hosts, 
+//GO(evdns_base_nameserver_add, 
+//GO(evdns_base_nameserver_ip_add, 
+//GO(evdns_base_nameserver_sockaddr_add, 
+//GO(evdns_base_new, 
+//GO(evdns_base_resolv_conf_parse, 
+//GO(evdns_base_resolve_ipv4, 
+//GO(evdns_base_resolve_ipv6, 
+//GO(evdns_base_resolve_reverse, 
+//GO(evdns_base_resolve_reverse_ipv6, 
+//GO(evdns_base_resume, 
+//GO(evdns_base_search_add, 
+//GO(evdns_base_search_clear, 
+//GO(evdns_base_search_ndots_set, 
+//GO(evdns_base_set_option, 
+//GO(evdns_cancel_request, 
+//GO(evdns_clear_nameservers_and_suspend, 
+//GO(evdns_close_server_port, 
+//GO(evdns_count_nameservers, 
+//GO(evdns_err_to_string, 
+//GO(evdns_getaddrinfo, 
+//GO(evdns_getaddrinfo_cancel, 
+//GO(evdns_get_global_base, 
+//GO(evdns_init, 
+//GO(evdns_nameserver_add, 
+//GO(evdns_nameserver_ip_add, 
+//GO(evdns_resolv_conf_parse, 
+//GO(evdns_resolve_ipv4, 
+//GO(evdns_resolve_ipv6, 
+//GO(evdns_resolve_reverse, 
+//GO(evdns_resolve_reverse_ipv6, 
+//GO(evdns_resume, 
+//GO(evdns_search_add, 
+//GO(evdns_search_clear, 
+//GO(evdns_search_ndots_set, 
+//GO(evdns_server_request_add_aaaa_reply, 
+//GO(evdns_server_request_add_a_reply, 
+//GO(evdns_server_request_add_cname_reply, 
+//GO(evdns_server_request_add_ptr_reply, 
+//GO(evdns_server_request_add_reply, 
+//GO(evdns_server_request_drop, 
+//GO(evdns_server_request_get_requesting_addr, 
+//GO(evdns_server_request_respond, 
+//GO(evdns_server_request_set_flags, 
+//GO(evdns_set_log_fn, 
+//GO(evdns_set_option, 
+//GO(evdns_set_random_bytes_fn, 
+//GO(evdns_set_transaction_id_fn, 
+//GO(evdns_shutdown, 
+//GO(event_active, 
+//GO(event_active_later_, 
+//GO(event_active_later_nolock_, 
+//GO(event_active_nolock_, 
+GO(event_add, iFpp)
+//GO(event_add_nolock_, 
+//GO(event_assign, 
+//GO(event_base_active_by_fd, 
+//GO(event_base_active_by_signal, 
+//GO(event_base_add_virtual_, 
+//GO(event_base_assert_ok_, 
+//GO(event_base_assert_ok_nolock_, 
+//GO(event_base_del_virtual_, 
+//GO(event_base_dispatch, 
+//GO(event_base_dump_events, 
+//GO(event_base_foreach_event, 
+//GO(event_base_foreach_event_nolock_, 
+GO(event_base_free, vFp)
+//GO(event_base_free_nofinalize, 
+//GO(event_base_get_features, 
+//GO(event_base_get_max_events, 
+//GO(event_base_get_method, 
+//GO(event_base_get_npriorities, 
+//GO(event_base_get_num_events, 
+//GO(event_base_get_running_event, 
+//GO(event_base_gettimeofday_cached, 
+//GO(event_base_got_break, 
+//GO(event_base_got_exit, 
+//GO(event_base_init_common_timeout, 
+GO(event_base_loop, iFpi)
+GO(event_base_loopbreak, iFp)
+//GO(event_base_loopcontinue, 
+//GO(event_base_loopexit, 
+GO(event_base_new, pFv)
+//GO(event_base_new_with_config, 
+//GO(event_base_once, 
+//GO(event_base_priority_init, 
+GO(event_base_set, iFpp)
+//GO(event_base_start_iocp_, 
+//GO(event_base_stop_iocp_, 
+//GO(event_base_update_cache_time, 
+//GO(event_callback_activate_, 
+//GO(event_callback_activate_later_nolock_, 
+//GO(event_callback_activate_nolock_, 
+//GO(event_callback_cancel_, 
+//GO(event_callback_cancel_nolock_, 
+//GO(event_callback_finalize_, 
+//GO(event_callback_finalize_many_, 
+//GO(event_callback_finalize_nolock_, 
+//GO(event_callback_init_, 
+//GO(event_changelist_add_, 
+//GO(event_changelist_del_, 
+//GO(event_changelist_freemem_, 
+//GO(event_changelist_init_, 
+//GO(event_changelist_remove_all_, 
+//GO(event_config_avoid_method, 
+//GO(event_config_free, 
+//GO(event_config_new, 
+//GO(event_config_require_features, 
+//GO(event_config_set_flag, 
+//GO(event_config_set_max_dispatch_interval, 
+//GO(event_config_set_num_cpus_hint, 
+//DATAB(event_debug_created_threadable_ctx_, 
+//DATAB(event_debug_logging_mask_, 
+//GO(event_debug_map_HT_CLEAR, 
+//GO(event_debug_map_HT_GROW, 
+//GO(event_debug_map_HT_REP_IS_BAD_, 
+//DATAB(event_debug_mode_on_, 
+//GO(event_debug_unassign, 
+//GO(event_debugx_, 
+//GO(event_deferred_cb_cancel_, 
+//GO(event_deferred_cb_init_, 
+//GO(event_deferred_cb_schedule_, 
+//GO(event_deferred_cb_set_priority_, 
+GO(event_del, iFp)
+//GO(event_del_block, 
+//GO(event_del_noblock, 
+//GO(event_del_nolock_, 
+//GO(event_disable_debug_mode, 
+//GO(event_dispatch, 
+//GO(event_enable_debug_logging, 
+//GO(event_enable_debug_mode, 
+//GO(event_err, 
+//GO(event_errx, 
+//GO(event_finalize, 
+//GO(event_free, 
+//GO(event_free_finalize, 
+//GO(event_get_assignment, 
+//GO(event_get_base, 
+//GO(event_get_callback, 
+//GO(event_get_callback_arg, 
+//GO(event_get_events, 
+GO(event_get_fd, iFp)
+//GO(event_get_method, 
+//GO(event_get_priority, 
+//GO(event_get_struct_event_size, 
+//GO(event_get_supported_methods, 
+//GO(event_gettime_monotonic, 
+//GO(event_get_version, 
+//GO(event_get_version_number, 
+//DATAB(event_global_current_base_, 
+//GO(event_global_setup_locks_, 
+//GO(event_init, 
+//GO(event_initialized, 
+//GO(event_logv_, 
+//GO(event_loop, 
+//GO(event_loopbreak, 
+//GO(event_loopexit, 
+//GO(event_mm_calloc_, 
+//GO(event_mm_free_, 
+//GO(event_mm_malloc_, 
+//GO(event_mm_realloc_, 
+//GO(event_mm_strdup_, 
+//GO(event_msgx, 
+//GO(event_new, 
+//GO(event_once, 
+//GO(event_pending, 
+//GO(event_priority_init, 
+//GO(event_priority_set, 
+//GO(event_reinit, 
+//GO(event_remove_timer, 
+//GO(event_remove_timer_nolock_, 
+//GO(event_self_cbarg, 
+GOM(event_set, vFEpiwpp)
+//GO(event_set_fatal_callback, 
+//GO(event_set_log_callback, 
+//GO(event_set_mem_functions, 
+//GO(event_sock_err, 
+//GO(event_sock_warn, 
+//GO(event_strlcpy_, 
+//GO(event_warn, 
+//GO(event_warnx, 
+//GO(evhttp_accept_socket, 
+//GO(evhttp_accept_socket_with_handle, 
+//GO(evhttp_add_header, 
+//GO(evhttp_add_server_alias, 
+//GO(evhttp_add_virtual_host, 
+//GO(evhttp_bind_listener, 
+//GO(evhttp_bind_socket, 
+//GO(evhttp_bind_socket_with_handle, 
+//GO(evhttp_bound_socket_get_fd, 
+//GO(evhttp_bound_socket_get_listener, 
+//GO(evhttp_cancel_request, 
+//GO(evhttp_clear_headers, 
+//GO(evhttp_connection_base_bufferevent_new, 
+//GO(evhttp_connection_base_new, 
+//GO(evhttp_connection_connect_, 
+//GO(evhttp_connection_fail_, 
+//GO(evhttp_connection_free, 
+//GO(evhttp_connection_free_on_completion, 
+//GO(evhttp_connection_get_addr, 
+//GO(evhttp_connection_get_base, 
+//GO(evhttp_connection_get_bufferevent, 
+//GO(evhttp_connection_get_peer, 
+//GO(evhttp_connection_get_server, 
+//GO(evhttp_connection_new, 
+//GO(evhttp_connection_reset_, 
+//GO(evhttp_connection_set_base, 
+//GO(evhttp_connection_set_closecb, 
+//GO(evhttp_connection_set_family, 
+//GO(evhttp_connection_set_flags, 
+//GO(evhttp_connection_set_initial_retry_tv, 
+//GO(evhttp_connection_set_local_address, 
+//GO(evhttp_connection_set_local_port, 
+//GO(evhttp_connection_set_max_body_size, 
+//GO(evhttp_connection_set_max_headers_size, 
+//GO(evhttp_connection_set_retries, 
+//GO(evhttp_connection_set_timeout, 
+//GO(evhttp_connection_set_timeout_tv, 
+//GO(evhttp_decode_uri, 
+//GO(evhttp_decode_uri_internal, 
+//GO(evhttp_del_accept_socket, 
+//GO(evhttp_del_cb, 
+//GO(evhttp_encode_uri, 
+//GO(evhttp_find_header, 
+//GO(evhttp_foreach_bound_socket, 
+//GO(evhttp_free, 
+//GO(evhttp_htmlescape, 
+//GO(evhttp_make_request, 
+//GO(evhttp_new, 
+//GO(evhttp_parse_firstline_, 
+//GO(evhttp_parse_headers_, 
+//GO(evhttp_parse_query, 
+//GO(evhttp_parse_query_str, 
+//GO(evhttp_remove_header, 
+//GO(evhttp_remove_server_alias, 
+//GO(evhttp_remove_virtual_host, 
+//GO(evhttp_request_free, 
+//GO(evhttp_request_get_command, 
+//GO(evhttp_request_get_connection, 
+//GO(evhttp_request_get_evhttp_uri, 
+//GO(evhttp_request_get_host, 
+//GO(evhttp_request_get_input_buffer, 
+//GO(evhttp_request_get_input_headers, 
+//GO(evhttp_request_get_output_buffer, 
+//GO(evhttp_request_get_output_headers, 
+//GO(evhttp_request_get_response_code, 
+//GO(evhttp_request_get_response_code_line, 
+//GO(evhttp_request_get_uri, 
+//GO(evhttp_request_is_owned, 
+//GO(evhttp_request_new, 
+//GO(evhttp_request_own, 
+//GO(evhttp_request_set_chunked_cb, 
+//GO(evhttp_request_set_error_cb, 
+//GO(evhttp_request_set_header_cb, 
+//GO(evhttp_request_set_on_complete_cb, 
+//GO(evhttp_response_code_, 
+//GO(evhttp_send_error, 
+//GO(evhttp_send_page_, 
+//GO(evhttp_send_reply, 
+//GO(evhttp_send_reply_chunk, 
+//GO(evhttp_send_reply_chunk_with_cb, 
+//GO(evhttp_send_reply_end, 
+//GO(evhttp_send_reply_start, 
+//GO(evhttp_set_allowed_methods, 
+//GO(evhttp_set_bevcb, 
+//GO(evhttp_set_cb, 
+//GO(evhttp_set_default_content_type, 
+//GO(evhttp_set_flags, 
+//GO(evhttp_set_gencb, 
+//GO(evhttp_set_max_body_size, 
+//GO(evhttp_set_max_headers_size, 
+//GO(evhttp_set_timeout, 
+//GO(evhttp_set_timeout_tv, 
+//GO(evhttp_start, 
+//GO(evhttp_start_read_, 
+//GO(evhttp_start_write_, 
+//GO(evhttp_uridecode, 
+//GO(evhttp_uriencode, 
+//GO(evhttp_uri_free, 
+//GO(evhttp_uri_get_fragment, 
+//GO(evhttp_uri_get_host, 
+//GO(evhttp_uri_get_path, 
+//GO(evhttp_uri_get_port, 
+//GO(evhttp_uri_get_query, 
+//GO(evhttp_uri_get_scheme, 
+//GO(evhttp_uri_get_userinfo, 
+//GO(evhttp_uri_join, 
+//GO(evhttp_uri_new, 
+//GO(evhttp_uri_parse, 
+//GO(evhttp_uri_parse_with_flags, 
+//GO(evhttp_uri_set_flags, 
+//GO(evhttp_uri_set_fragment, 
+//GO(evhttp_uri_set_host, 
+//GO(evhttp_uri_set_path, 
+//GO(evhttp_uri_set_port, 
+//GO(evhttp_uri_set_query, 
+//GO(evhttp_uri_set_scheme, 
+//GO(evhttp_uri_set_userinfo, 
+//GO(evmap_check_integrity_, 
+//GO(evmap_delete_all_, 
+//GO(evmap_foreach_event_, 
+//GO(evmap_io_active_, 
+//GO(evmap_io_add_, 
+//GO(evmap_io_clear_, 
+//GO(evmap_io_del_, 
+//GO(evmap_io_get_fdinfo_, 
+//GO(evmap_io_initmap_, 
+//GO(evmap_reinit_, 
+//GO(evmap_signal_active_, 
+//GO(evmap_signal_add_, 
+//GO(evmap_signal_clear_, 
+//GO(evmap_signal_del_, 
+//GO(evmap_signal_initmap_, 
+//GO(evrpc_add_hook, 
+//GO(evrpc_free, 
+//GO(evrpc_get_reply, 
+//GO(evrpc_get_request, 
+//GO(evrpc_hook_add_meta, 
+//GO(evrpc_hook_find_meta, 
+//GO(evrpc_hook_get_connection, 
+//GO(evrpc_init, 
+//GO(evrpc_make_request, 
+//GO(evrpc_make_request_ctx, 
+//GO(evrpc_pool_add_connection, 
+//GO(evrpc_pool_free, 
+//GO(evrpc_pool_new, 
+//GO(evrpc_pool_remove_connection, 
+//GO(evrpc_pool_set_timeout, 
+//GO(evrpc_register_generic, 
+//GO(evrpc_register_rpc, 
+//GO(evrpc_remove_hook, 
+//GO(evrpc_reqstate_free_, 
+//GO(evrpc_request_done, 
+//GO(evrpc_request_get_pool, 
+//GO(evrpc_request_set_cb, 
+//GO(evrpc_request_set_pool, 
+//GO(evrpc_resume_request, 
+//GO(evrpc_send_request_generic, 
+//GO(evrpc_unregister_rpc, 
+//GO(evsig_dealloc_, 
+//GO(evsig_free_globals_, 
+//GO(evsig_global_setup_locks_, 
+//GO(evsig_init_, 
+//GO(evsig_restore_handler_, 
+//GO(evsig_set_base_, 
+//GO(evsig_set_handler_, 
+//GO(evtag_consume, 
+//GO(evtag_decode_int, 
+//GO(evtag_decode_int64, 
+//GO(evtag_decode_tag, 
+//GO(evtag_encode_int, 
+//GO(evtag_encode_int64, 
+//GO(evtag_encode_tag, 
+//GO(evtag_init, 
+//GO(evtag_marshal, 
+//GO(evtag_marshal_buffer, 
+//GO(evtag_marshal_int, 
+//GO(evtag_marshal_int64, 
+//GO(evtag_marshal_string, 
+//GO(evtag_marshal_timeval, 
+//GO(evtag_payload_length, 
+//GO(evtag_peek, 
+//GO(evtag_peek_length, 
+//GO(evtag_unmarshal, 
+//GO(evtag_unmarshal_fixed, 
+//GO(evtag_unmarshal_header, 
+//GO(evtag_unmarshal_int, 
+//GO(evtag_unmarshal_int64, 
+//GO(evtag_unmarshal_string, 
+//GO(evtag_unmarshal_timeval, 
+//DATAB(evthread_cond_fns_, 
+//GO(evthread_debug_get_real_lock_, 
+//GO(evthread_enable_lock_debugging, 
+//GO(evthread_enable_lock_debuging, 
+//GO(evthread_get_condition_callbacks, 
+//GO(evthread_get_lock_callbacks, 
+//DATAB(evthread_id_fn_, 
+//GO(evthreadimpl_disable_lock_debugging_, 
+//GO(evthread_is_debug_lock_held_, 
+//DATAB(evthread_lock_debugging_enabled_, 
+//DATAB(evthread_lock_fns_, 
+//GO(evthread_make_base_notifiable, 
+//GO(evthread_set_condition_callbacks, 
+//GO(evthread_set_id_callback, 
+//GO(evthread_set_lock_callbacks, 
+//GO(evthread_setup_global_lock_, 
+//GO(ev_token_bucket_cfg_free, 
+//GO(ev_token_bucket_cfg_new, 
+//GO(ev_token_bucket_get_tick_, 
+//GO(ev_token_bucket_init_, 
+//GO(ev_token_bucket_update_, 
+//GO(evutil_accept4_, 
+//GO(evutil_addrinfo_append_, 
+//GO(evutil_adjust_hints_for_addrconfig_, 
+//GO(evutil_ascii_strcasecmp, 
+//GO(evutil_ascii_strncasecmp, 
+//GO(evutil_closesocket, 
+//GO(evutil_configure_monotonic_time, 
+//GO(evutil_configure_monotonic_time_, 
+//GO(evutil_date_rfc1123, 
+//GO(evutil_ersatz_socketpair_, 
+//GO(evutil_eventfd_, 
+//GO(evutil_format_sockaddr_port_, 
+//GO(evutil_freeaddrinfo, 
+//GO(evutil_free_globals_, 
+//GO(evutil_free_secure_rng_globals_, 
+//GO(evutil_gai_strerror, 
+//GO(evutil_getaddrinfo, 
+//GO(evutil_getaddrinfo_async_, 
+//GO(evutil_getaddrinfo_cancel_async_, 
+//GO(evutil_getaddrinfo_common_, 
+//GO(evutil_getenv_, 
+//GO(evutil_gettime_monotonic, 
+//GO(evutil_gettime_monotonic_, 
+//GO(evutil_global_setup_locks_, 
+//GO(evutil_hex_char_to_int_, 
+//GO(evutil_inet_ntop, 
+//GO(evutil_inet_pton, 
+//GO(evutil_inet_pton_scope, 
+//GO(EVUTIL_ISALNUM_, 
+//GO(EVUTIL_ISALPHA_, 
+//GO(EVUTIL_ISDIGIT_, 
+//GO(EVUTIL_ISLOWER_, 
+//GO(EVUTIL_ISPRINT_, 
+//GO(EVUTIL_ISSPACE_, 
+//GO(EVUTIL_ISUPPER_, 
+//GO(EVUTIL_ISXDIGIT_, 
+//GO(evutil_make_internal_pipe_, 
+//GO(evutil_make_listen_socket_ipv6only, 
+//GO(evutil_make_listen_socket_reuseable, 
+//GO(evutil_make_listen_socket_reuseable_port, 
+//GO(evutil_make_socket_closeonexec, 
+//GO(evutil_make_socket_nonblocking, 
+//GO(evutil_make_tcp_listen_socket_deferred, 
+//GO(evutil_memclear_, 
+//DATA(evutil_memset_volatile_, 
+//GO(evutil_monotonic_timer_free, 
+//GO(evutil_monotonic_timer_new, 
+//GO(evutil_new_addrinfo_, 
+//GO(evutil_open_closeonexec_, 
+//GO(evutil_parse_sockaddr_port, 
+//GO(evutil_read_file_, 
+//GO(evutil_rtrim_lws_, 
+//GO(evutil_secure_rng_add_bytes, 
+//GO(evutil_secure_rng_get_bytes, 
+//GO(evutil_secure_rng_global_setup_locks_, 
+//GO(evutil_secure_rng_init, 
+//GO(evutil_secure_rng_set_urandom_device_file, 
+//GO(evutil_set_evdns_getaddrinfo_cancel_fn_, 
+//GO(evutil_set_evdns_getaddrinfo_fn_, 
+//GO(evutil_snprintf, 
+//GO(evutil_sockaddr_cmp, 
+//GO(evutil_sockaddr_is_loopback_, 
+//GO(evutil_socket_, 
+//GO(evutil_socket_connect_, 
+//GO(evutil_socket_finished_connecting_, 
+//GO(evutil_socketpair, 
+//GO(evutil_strtoll, 
+//GO(EVUTIL_TOLOWER_, 
+//GO(EVUTIL_TOUPPER_, 
+//GO(evutil_tv_to_msec_, 
+//GO(evutil_usleep_, 
+//GO(evutil_v4addr_is_local_, 
+//GO(evutil_v6addr_is_local_, 
+//GO(evutil_vsnprintf, 
+//GO(evutil_weakrand_, 
+//GO(evutil_weakrand_range_, 
+//GO(evutil_weakrand_seed_, 
+//GO(libevent_global_shutdown, 
+//DATA(nil_eventop, 
+//DATA(pollops, 
+//DATA(selectops, 
diff --git a/src/wrapped/wrappedlcms2.c b/src/wrapped/wrappedlcms2.c
new file mode 100644
index 00000000..e7b39e75
--- /dev/null
+++ b/src/wrapped/wrappedlcms2.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* lcms2Name = "liblcms2.so.2";
+#define LIBNAME lcms2
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedlcms2_private.h b/src/wrapped/wrappedlcms2_private.h
new file mode 100644
index 00000000..61ec0ade
--- /dev/null
+++ b/src/wrapped/wrappedlcms2_private.h
@@ -0,0 +1,368 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh....
+#endif
+
+//GO(_cms15Fixed16toDouble, 
+//GO(_cms8Fixed8toDouble, 
+//GO(cmsAdaptToIlluminant, 
+//GO(_cmsAdjustEndianess16, 
+//GO(_cmsAdjustEndianess32, 
+//GO(_cmsAdjustEndianess64, 
+//GO(cmsAllocNamedColorList, 
+//GO(cmsAllocProfileSequenceDescription, 
+//GO(cmsAppendNamedColor, 
+//GO(cmsBFDdeltaE, 
+//GO(cmsBuildGamma, 
+//GO(cmsBuildParametricToneCurve, 
+//GO(cmsBuildSegmentedToneCurve, 
+//GO(cmsBuildTabulatedToneCurve16, 
+//GO(cmsBuildTabulatedToneCurveFloat, 
+//GO(_cmsCalloc, 
+//GO(cmsChangeBuffersFormat, 
+GO(cmsChannelsOf, uFu)
+//GO(cmsCIE2000DeltaE, 
+//GO(cmsCIE94DeltaE, 
+//GO(cmsCIECAM02Done, 
+//GO(cmsCIECAM02Forward, 
+//GO(cmsCIECAM02Init, 
+//GO(cmsCIECAM02Reverse, 
+//GO(cmsCloseIOhandler, 
+GO(cmsCloseProfile, iFp)
+//GO(cmsCMCdeltaE, 
+//GO(_cmsComputeInterpParams, 
+//GO(cmsCreateBCHSWabstractProfile, 
+//GO(cmsCreateBCHSWabstractProfileTHR, 
+//GO(cmsCreateContext, 
+//GO(cmsCreateExtendedTransform, 
+//GO(cmsCreateGrayProfile, 
+//GO(cmsCreateGrayProfileTHR, 
+//GO(cmsCreateInkLimitingDeviceLink, 
+//GO(cmsCreateInkLimitingDeviceLinkTHR, 
+//GO(cmsCreateLab2Profile, 
+//GO(cmsCreateLab2ProfileTHR, 
+//GO(cmsCreateLab4Profile, 
+//GO(cmsCreateLab4ProfileTHR, 
+//GO(cmsCreateLinearizationDeviceLink, 
+//GO(cmsCreateLinearizationDeviceLinkTHR, 
+//GO(cmsCreateMultiprofileTransform, 
+//GO(cmsCreateMultiprofileTransformTHR, 
+//GO(_cmsCreateMutex, 
+//GO(cmsCreateNULLProfile, 
+//GO(cmsCreateNULLProfileTHR, 
+//GO(cmsCreateProfilePlaceholder, 
+//GO(cmsCreateProofingTransform, 
+//GO(cmsCreateProofingTransformTHR, 
+//GO(cmsCreateRGBProfile, 
+//GO(cmsCreateRGBProfileTHR, 
+GO(cmsCreate_sRGBProfile, pFp)
+//GO(cmsCreate_sRGBProfileTHR, 
+GO(cmsCreateTransform, pFppupuuu)
+//GO(cmsCreateTransformTHR, 
+//GO(cmsCreateXYZProfile, 
+//GO(cmsCreateXYZProfileTHR, 
+//GO(cmsD50_xyY, 
+//GO(cmsD50_XYZ, 
+//GO(_cmsDecodeDateTimeNumber, 
+//GO(_cmsDefaultICCintents, 
+//GO(cmsDeleteContext, 
+GO(cmsDeleteTransform, vFp)
+//GO(cmsDeltaE, 
+//GO(cmsDesaturateLab, 
+//GO(_cmsDestroyMutex, 
+//GO(cmsDetectBlackPoint, 
+//GO(cmsDetectDestinationBlackPoint, 
+//GO(cmsDetectTAC, 
+//GO(cmsDictAddEntry, 
+//GO(cmsDictAlloc, 
+//GO(cmsDictDup, 
+//GO(cmsDictFree, 
+//GO(cmsDictGetEntryList, 
+//GO(cmsDictNextEntry, 
+GO(cmsDoTransform, vFpppu)
+//GO(cmsDoTransformLineStride, 
+//GO(cmsDoTransformStride, 
+//GO(_cmsDoubleTo15Fixed16, 
+//GO(_cmsDoubleTo8Fixed8, 
+//GO(cmsDupContext, 
+//GO(_cmsDupMem, 
+//GO(cmsDupNamedColorList, 
+//GO(cmsDupProfileSequenceDescription, 
+//GO(cmsDupToneCurve, 
+//GO(_cmsEncodeDateTimeNumber, 
+//GO(cmsEstimateGamma, 
+//GO(cmsEvalToneCurve16, 
+//GO(cmsEvalToneCurveFloat, 
+//GO(cmsfilelength, 
+//GO(_cmsFloat2Half, 
+//GO(cmsFloat2LabEncoded, 
+//GO(cmsFloat2LabEncodedV2, 
+//GO(cmsFloat2XYZEncoded, 
+//GO(cmsFormatterForColorspaceOfProfile, 
+//GO(cmsFormatterForPCSOfProfile, 
+//GO(_cmsFree, 
+//GO(_cmsFreeInterpParams, 
+//GO(cmsFreeNamedColorList, 
+//GO(cmsFreeProfileSequenceDescription, 
+//GO(cmsFreeToneCurve, 
+//GO(cmsFreeToneCurveTriple, 
+//GO(cmsGBDAlloc, 
+//GO(cmsGBDFree, 
+//GO(cmsGDBAddPoint, 
+//GO(cmsGDBCheckPoint, 
+//GO(cmsGDBCompute, 
+//GO(cmsGetAlarmCodes, 
+//GO(cmsGetAlarmCodesTHR, 
+GO(cmsGetColorSpace, iFp)
+//GO(cmsGetContextUserData, 
+//GO(cmsGetDeviceClass, 
+//GO(cmsGetEncodedCMMversion, 
+//GO(cmsGetEncodedICCversion, 
+//GO(_cmsGetFormatter, 
+//GO(cmsGetHeaderAttributes, 
+//GO(cmsGetHeaderCreationDateTime, 
+//GO(cmsGetHeaderCreator, 
+//GO(cmsGetHeaderFlags, 
+//GO(cmsGetHeaderManufacturer, 
+//GO(cmsGetHeaderModel, 
+//GO(cmsGetHeaderProfileID, 
+//GO(cmsGetHeaderRenderingIntent, 
+//GO(cmsGetNamedColorList, 
+//GO(cmsGetPCS, 
+//GO(cmsGetPipelineContextID, 
+//GO(cmsGetPostScriptColorResource, 
+//GO(cmsGetPostScriptCRD, 
+//GO(cmsGetPostScriptCSA, 
+//GO(cmsGetProfileContextID, 
+//GO(cmsGetProfileInfo, 
+//GO(cmsGetProfileInfoASCII, 
+//GO(cmsGetProfileIOhandler, 
+//GO(cmsGetProfileVersion, 
+//GO(cmsGetSupportedIntents, 
+//GO(cmsGetSupportedIntentsTHR, 
+//GO(cmsGetTagCount, 
+//GO(cmsGetTagSignature, 
+//GO(cmsGetToneCurveEstimatedTable, 
+//GO(cmsGetToneCurveEstimatedTableEntries, 
+//GO(cmsGetToneCurveParametricType, 
+//GO(cmsGetToneCurveParams, 
+//GO(cmsGetTransformContextID, 
+//GO(_cmsGetTransformFlags, 
+//GO(_cmsGetTransformFormatters16, 
+//GO(_cmsGetTransformFormattersFloat, 
+//GO(cmsGetTransformInputFormat, 
+//GO(cmsGetTransformOutputFormat, 
+//GO(_cmsGetTransformUserData, 
+//GO(_cmsHalf2Float, 
+//GO(_cmsICCcolorSpace, 
+//GO(_cmsIOPrintf, 
+//GO(cmsIsCLUT, 
+//GO(cmsIsIntentSupported, 
+//GO(cmsIsMatrixShaper, 
+//GO(cmsIsTag, 
+//GO(cmsIsToneCurveDescending, 
+//GO(cmsIsToneCurveLinear, 
+//GO(cmsIsToneCurveMonotonic, 
+//GO(cmsIsToneCurveMultisegment, 
+//GO(cmsIT8Alloc, 
+//GO(cmsIT8DefineDblFormat, 
+//GO(cmsIT8EnumDataFormat, 
+//GO(cmsIT8EnumProperties, 
+//GO(cmsIT8EnumPropertyMulti, 
+//GO(cmsIT8FindDataFormat, 
+//GO(cmsIT8Free, 
+//GO(cmsIT8GetData, 
+//GO(cmsIT8GetDataDbl, 
+//GO(cmsIT8GetDataRowCol, 
+//GO(cmsIT8GetDataRowColDbl, 
+//GO(cmsIT8GetPatchByName, 
+//GO(cmsIT8GetPatchName, 
+//GO(cmsIT8GetProperty, 
+//GO(cmsIT8GetPropertyDbl, 
+//GO(cmsIT8GetPropertyMulti, 
+//GO(cmsIT8GetSheetType, 
+//GO(cmsIT8LoadFromFile, 
+//GO(cmsIT8LoadFromMem, 
+//GO(cmsIT8SaveToFile, 
+//GO(cmsIT8SaveToMem, 
+//GO(cmsIT8SetComment, 
+//GO(cmsIT8SetData, 
+//GO(cmsIT8SetDataDbl, 
+//GO(cmsIT8SetDataFormat, 
+//GO(cmsIT8SetDataRowCol, 
+//GO(cmsIT8SetDataRowColDbl, 
+//GO(cmsIT8SetIndexColumn, 
+//GO(cmsIT8SetPropertyDbl, 
+//GO(cmsIT8SetPropertyHex, 
+//GO(cmsIT8SetPropertyMulti, 
+//GO(cmsIT8SetPropertyStr, 
+//GO(cmsIT8SetPropertyUncooked, 
+//GO(cmsIT8SetSheetType, 
+//GO(cmsIT8SetTable, 
+//GO(cmsIT8SetTableByLabel, 
+//GO(cmsIT8TableCount, 
+//GO(cmsJoinToneCurve, 
+//GO(cmsLab2LCh, 
+//GO(cmsLab2XYZ, 
+//GO(cmsLabEncoded2Float, 
+//GO(cmsLabEncoded2FloatV2, 
+//GO(cmsLCh2Lab, 
+//GO(_cmsLCMScolorSpace, 
+//GO(cmsLinkTag, 
+//GO(_cmsLockMutex, 
+//GO(_cmsMalloc, 
+//GO(_cmsMallocZero, 
+//GO(_cmsMAT3eval, 
+//GO(_cmsMAT3identity, 
+//GO(_cmsMAT3inverse, 
+//GO(_cmsMAT3isIdentity, 
+//GO(_cmsMAT3per, 
+//GO(_cmsMAT3solve, 
+//GO(cmsMD5add, 
+//GO(cmsMD5alloc, 
+//GO(cmsMD5computeID, 
+//GO(cmsMD5finish, 
+//GO(cmsMLUalloc, 
+//GO(cmsMLUdup, 
+//GO(cmsMLUfree, 
+//GO(cmsMLUgetASCII, 
+//GO(cmsMLUgetTranslation, 
+//GO(cmsMLUgetWide, 
+//GO(cmsMLUsetASCII, 
+//GO(cmsMLUsetWide, 
+//GO(cmsMLUtranslationsCodes, 
+//GO(cmsMLUtranslationsCount, 
+//GO(cmsNamedColorCount, 
+//GO(cmsNamedColorIndex, 
+//GO(cmsNamedColorInfo, 
+//GO(cmsOpenIOhandlerFromFile, 
+//GO(cmsOpenIOhandlerFromMem, 
+//GO(cmsOpenIOhandlerFromNULL, 
+//GO(cmsOpenIOhandlerFromStream, 
+//GO(cmsOpenProfileFromFile, 
+//GO(cmsOpenProfileFromFileTHR, 
+//GO(cmsOpenProfileFromIOhandler2THR, 
+//GO(cmsOpenProfileFromIOhandlerTHR, 
+GO(cmsOpenProfileFromMem, pFpu)
+//GO(cmsOpenProfileFromMemTHR, 
+//GO(cmsOpenProfileFromStream, 
+//GO(cmsOpenProfileFromStreamTHR, 
+//GO(_cmsOptimizePipeline, 
+//GO(cmsPipelineAlloc, 
+//GO(cmsPipelineCat, 
+//GO(cmsPipelineCheckAndRetreiveStages, 
+//GO(cmsPipelineDup, 
+//GO(cmsPipelineEval16, 
+//GO(cmsPipelineEvalFloat, 
+//GO(cmsPipelineEvalReverseFloat, 
+//GO(cmsPipelineFree, 
+//GO(cmsPipelineGetPtrToFirstStage, 
+//GO(cmsPipelineGetPtrToLastStage, 
+//GO(cmsPipelineInputChannels, 
+//GO(cmsPipelineInsertStage, 
+//GO(cmsPipelineOutputChannels, 
+//GO(_cmsPipelineSetOptimizationParameters, 
+//GO(cmsPipelineSetSaveAs8bitsFlag, 
+//GO(cmsPipelineStageCount, 
+//GO(cmsPipelineUnlinkStage, 
+//GO(cmsPlugin, 
+//GO(cmsPluginTHR, 
+//GO(_cmsQuantizeVal, 
+//GO(_cmsRead15Fixed16Number, 
+//GO(_cmsReadAlignment, 
+//GO(_cmsReadDevicelinkLUT, 
+//GO(_cmsReadFloat32Number, 
+//GO(_cmsReadInputLUT, 
+//GO(_cmsReadOutputLUT, 
+//GO(cmsReadRawTag, 
+//GO(cmsReadTag, 
+//GO(_cmsReadTypeBase, 
+//GO(_cmsReadUInt16Array, 
+//GO(_cmsReadUInt16Number, 
+//GO(_cmsReadUInt32Number, 
+//GO(_cmsReadUInt64Number, 
+//GO(_cmsReadUInt8Number, 
+//GO(_cmsReadXYZNumber, 
+//GO(_cmsRealloc, 
+//GO(_cmsReasonableGridpointsByColorspace, 
+//GO(cmsReverseToneCurve, 
+//GO(cmsReverseToneCurveEx, 
+//GO(cmsSaveProfileToFile, 
+//GO(cmsSaveProfileToIOhandler, 
+//GO(cmsSaveProfileToMem, 
+//GO(cmsSaveProfileToStream, 
+//GO(cmsSetAdaptationState, 
+//GO(cmsSetAdaptationStateTHR, 
+//GO(cmsSetAlarmCodes, 
+//GO(cmsSetAlarmCodesTHR, 
+//GO(cmsSetColorSpace, 
+//GO(cmsSetDeviceClass, 
+//GO(cmsSetEncodedICCversion, 
+//GO(cmsSetHeaderAttributes, 
+//GO(cmsSetHeaderFlags, 
+//GO(cmsSetHeaderManufacturer, 
+//GO(cmsSetHeaderModel, 
+//GO(cmsSetHeaderProfileID, 
+//GO(cmsSetHeaderRenderingIntent, 
+//GO(cmsSetLogErrorHandler, 
+//GO(cmsSetLogErrorHandlerTHR, 
+//GO(cmsSetPCS, 
+//GO(cmsSetProfileVersion, 
+//GO(_cmsSetTransformUserData, 
+//GO(cmsSignalError, 
+//GO(cmsSliceSpace16, 
+//GO(cmsSliceSpaceFloat, 
+//GO(cmsSmoothToneCurve, 
+//GO(cmsStageAllocCLut16bit, 
+//GO(cmsStageAllocCLut16bitGranular, 
+//GO(cmsStageAllocCLutFloat, 
+//GO(cmsStageAllocCLutFloatGranular, 
+//GO(cmsStageAllocIdentity, 
+//GO(_cmsStageAllocIdentityCLut, 
+//GO(_cmsStageAllocIdentityCurves, 
+//GO(_cmsStageAllocLab2XYZ, 
+//GO(_cmsStageAllocLabV2ToV4, 
+//GO(_cmsStageAllocLabV4ToV2, 
+//GO(cmsStageAllocMatrix, 
+//GO(_cmsStageAllocNamedColor, 
+//GO(_cmsStageAllocPlaceholder, 
+//GO(cmsStageAllocToneCurves, 
+//GO(_cmsStageAllocXYZ2Lab, 
+//GO(cmsStageData, 
+//GO(cmsStageDup, 
+//GO(cmsStageFree, 
+//GO(cmsStageInputChannels, 
+//GO(cmsStageNext, 
+//GO(cmsStageOutputChannels, 
+//GO(cmsStageSampleCLut16bit, 
+//GO(cmsStageSampleCLutFloat, 
+//GO(cmsStageType, 
+//GO(cmsstrcasecmp, 
+//GO(cmsTagLinkedTo, 
+//GO(cmsTempFromWhitePoint, 
+//GO(cmsTransform2DeviceLink, 
+//GO(_cmsUnlockMutex, 
+//GO(cmsUnregisterPlugins, 
+//GO(cmsUnregisterPluginsTHR, 
+//GO(_cmsVEC3cross, 
+//GO(_cmsVEC3distance, 
+//GO(_cmsVEC3dot, 
+//GO(_cmsVEC3init, 
+//GO(_cmsVEC3length, 
+//GO(_cmsVEC3minus, 
+//GO(cmsWhitePointFromTemp, 
+//GO(_cmsWrite15Fixed16Number, 
+//GO(_cmsWriteAlignment, 
+//GO(_cmsWriteFloat32Number, 
+//GO(cmsWriteRawTag, 
+//GO(cmsWriteTag, 
+//GO(_cmsWriteTypeBase, 
+//GO(_cmsWriteUInt16Array, 
+//GO(_cmsWriteUInt16Number, 
+//GO(_cmsWriteUInt32Number, 
+//GO(_cmsWriteUInt64Number, 
+//GO(_cmsWriteUInt8Number, 
+//GO(_cmsWriteXYZNumber, 
+//GO(cmsxyY2XYZ, 
+//GO(cmsXYZ2Lab, 
+//GO(cmsXYZ2xyY, 
+//GO(cmsXYZEncoded2Float,