+#include <mach/mach.h>
+#include <mach/message.h>
+#include <mach/mach_types.h>
+
+#ifndef __OS_VOUCHER_PRIVATE__
+// We cannot include the actual os/voucher_private.h definition of voucher_t
+// here, as that also marks the voucher_XXX functions as exported, which causes
+// a compile error when we attempt to mark them hidden in the .c file.
+//
+// The Libsystem init.c file does include os/voucher_private.h though, as well
+// as this file, and this typedef causes an error if it is unguarded.
+struct voucher_s;
+typedef struct voucher_s *voucher_t;
+#endif