aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource
diff options
context:
space:
mode:
authorAnton Lindqvist <anton@basename.se>2018-08-28 19:07:26 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-28 10:07:26 -0700
commitb771b17ec95715c24715d730363f6f07bc46fd4f (patch)
treecfdb14bb69866ad3bd3b35d21d6c803530b1f8b0 /pkg/csource
parent7ef1de9ea4b02a8799b3a7f4b1d7b06a586b3f37 (diff)
Add mandatory OpenBSD bits (#689)
all: add openbsd support squash of the following commits: * openbsd: add mandatory bits * report: add OpenBSD support * executor: skip building kvm on OpenBSD * executor: add OpenBSD support Linking against libutil is necessary due to usage of openpty(3). * executor: fix typo in fail() message * fixup! report: add OpenBSD support * fixup! openbsd: add mandatory bits * fixup! openbsd: add mandatory bits * fixup! openbsd: add mandatory bits * fixup! report: add OpenBSD support * gometalinter: skip sys/openbsd
Diffstat (limited to 'pkg/csource')
-rw-r--r--pkg/csource/generated.go34
1 files changed, 31 insertions, 3 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 4f8d32f15..49fc2ffe8 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -155,7 +155,7 @@ static void use_temporary_dir(void)
#endif
#endif
-#if GOOS_akaros || GOOS_netbsd || GOOS_freebsd || GOOS_test
+#if GOOS_akaros || GOOS_netbsd || GOOS_freebsd || GOOS_openbsd || GOOS_test
#if SYZ_EXECUTOR || SYZ_EXECUTOR_USES_FORK_SERVER && SYZ_REPEAT && SYZ_USE_TMP_DIR
#include <dirent.h>
#include <stdio.h>
@@ -225,7 +225,7 @@ static void thread_start(void* (*fn)(void*), void* arg)
#endif
#endif
-#if GOOS_freebsd || GOOS_netbsd || GOOS_akaros || GOOS_test
+#if GOOS_freebsd || GOOS_netbsd || GOOS_openbsd || GOOS_akaros || GOOS_test
#if SYZ_EXECUTOR || SYZ_THREADED
#include <pthread.h>
@@ -387,7 +387,7 @@ void child()
#define do_sandbox_namespace() 0
#endif
-#elif GOOS_freebsd || GOOS_netbsd
+#elif GOOS_freebsd || GOOS_netbsd || GOOS_openbsd
#include <unistd.h>
@@ -405,6 +405,34 @@ static int do_sandbox_none(void)
#define do_sandbox_namespace() 0
#endif
+#if GOOS_openbsd
+
+#define __syscall syscall
+
+#if SYZ_EXECUTOR || __NR_syz_open_pts
+
+#if defined(__OpenBSD__)
+#include <termios.h>
+#include <util.h>
+#else
+#include <pty.h>
+#endif
+
+static uintptr_t syz_open_pts(void)
+{
+ int master, slave;
+
+ if (openpty(&master, &slave, NULL, NULL, NULL) == -1)
+ return -1;
+ if (dup2(master, master + 100) != -1)
+ close(master);
+ return slave;
+}
+
+#endif
+
+#endif
+
#elif GOOS_fuchsia
#include <fcntl.h>