+ return _libkernel_string_functions->memset(b, c, len);
+}
+
+__attribute__((visibility("hidden")))
+char *
+strchr(const char *s, int c)
+{
+ return _libkernel_string_functions->strchr(s, c);
+}
+
+__attribute__((visibility("hidden")))
+char *
+index(const char *s, int c)
+{
+ return _libkernel_string_functions->strchr(s, c);
+}
+
+__attribute__((visibility("hidden")))
+int
+strcmp(const char *s1, const char *s2)
+{
+ return _libkernel_string_functions->strcmp(s1, s2);
+}
+
+__attribute__((visibility("hidden")))
+char *
+strcpy(char * restrict dst, const char * restrict src)
+{
+ return _libkernel_string_functions->strcpy(dst, src);
+}
+
+__attribute__((visibility("hidden")))
+size_t
+strlcat(char * restrict dst, const char * restrict src, size_t maxlen)
+{
+ return _libkernel_string_functions->strlcat(dst, src, maxlen);
+}
+
+__attribute__((visibility("hidden")))
+size_t
+strlcpy(char * restrict dst, const char * restrict src, size_t maxlen)
+{
+ return _libkernel_string_functions->strlcpy(dst, src, maxlen);
+}
+
+__attribute__((visibility("hidden")))
+size_t
+strlen(const char *str)
+{
+ return _libkernel_string_functions->strlen(str);
+}
+
+__attribute__((visibility("hidden")))
+int
+strncmp(const char *s1, const char *s2, size_t n)
+{
+ return _libkernel_string_functions->strncmp(s1, s2, n);
+}
+
+__attribute__((visibility("hidden")))
+char *
+strncpy(char * restrict dst, const char * restrict src, size_t maxlen)
+{
+ return _libkernel_string_functions->strncpy(dst, src, maxlen);
+}
+
+__attribute__((visibility("hidden")))
+size_t
+strnlen(const char *s, size_t maxlen)
+{
+ return _libkernel_string_functions->strnlen(s, maxlen);
+}
+
+__attribute__((visibility("hidden")))
+char *
+strstr(const char *s, const char *find)
+{
+ return _libkernel_string_functions->strstr(s, find);
+}
+
+/*
+ * mach/mach.h voucher_mach_msg API
+ */
+
+static const struct _libkernel_voucher_functions
+ _libkernel_voucher_functions_empty;
+static _libkernel_voucher_functions_t _libkernel_voucher_functions =
+ &_libkernel_voucher_functions_empty;
+
+kern_return_t
+__libkernel_voucher_init(_libkernel_voucher_functions_t fns)
+{
+ _libkernel_voucher_functions = fns;
+ return KERN_SUCCESS;
+}
+
+boolean_t
+voucher_mach_msg_set(mach_msg_header_t *msg)
+{
+ if (_libkernel_voucher_functions->voucher_mach_msg_set) {
+ return _libkernel_voucher_functions->voucher_mach_msg_set(msg);
+ }
+ return 0;