From 59e959932704c7a500e97fda11bbae7ccca50020 Mon Sep 17 00:00:00 2001 From: Greg Steuck Date: Tue, 25 Apr 2023 13:24:12 +0100 Subject: sys/targets: switch openbsd to SyscallNumbers: false This relies on sendsyslog in sys/syslog.h which will be in OpenBSD HEAD soon. --- executor/common_bsd.h | 25 +++++++++++++++++++++++-- executor/executor_bsd.h | 4 ++++ pkg/csource/generated.go | 22 +++++++++++++++++++++- sys/targets/targets.go | 2 +- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/executor/common_bsd.h b/executor/common_bsd.h index 2bfce1826..eac88fd3c 100644 --- a/executor/common_bsd.h +++ b/executor/common_bsd.h @@ -11,6 +11,24 @@ #include #include +#if GOOS_openbsd +// Needed syscall libc stubs. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif // GOOS_openbsd + #if GOOS_netbsd #if SYZ_EXECUTOR || __NR_syz_usb_connect @@ -91,9 +109,12 @@ static int fault_injected(int fd) #endif -#if GOOS_openbsd || GOOS_darwin +#if GOOS_openbsd +#define CAST +#endif // GOOS_openbsd +#if GOOS_darwin #define __syscall syscall -#endif // GOOS_openbsd || GOOS_darwin +#endif // GOOS_darwin #if GOOS_openbsd && (SYZ_EXECUTOR || __NR_syz_open_pts) #include diff --git a/executor/executor_bsd.h b/executor/executor_bsd.h index 1af99f4fc..d88922417 100644 --- a/executor/executor_bsd.h +++ b/executor/executor_bsd.h @@ -47,7 +47,11 @@ static intptr_t execute_syscall(const call_t* c, intptr_t a[kMaxArgs]) { if (c->call) return c->call(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); +#if GOOS_openbsd + failmsg("no call", "missing target for %s", c->name); +#else return __syscall(c->sys_nr, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); +#endif } static void cover_open(cover_t* cov, bool extra) diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index 204d6d2ee..84565a4fe 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -490,6 +490,23 @@ void child() #include #include +#if GOOS_openbsd +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + #if GOOS_netbsd #if SYZ_EXECUTOR || __NR_syz_usb_connect @@ -1681,7 +1698,10 @@ static int fault_injected(int fd) #endif -#if GOOS_openbsd || GOOS_darwin +#if GOOS_openbsd +#define CAST +#endif +#if GOOS_darwin #define __syscall syscall #endif diff --git a/sys/targets/targets.go b/sys/targets/targets.go index 67c3161e4..b81b0ce70 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -540,7 +540,7 @@ var oses = map[string]osCommon{ KernelObject: "netbsd.gdb", }, OpenBSD: { - SyscallNumbers: true, + SyscallNumbers: false, SyscallPrefix: "SYS_", ExecutorUsesShmem: true, ExecutorUsesForkServer: true, -- cgit mrf-deployment