@@ -44,6 +44,8 @@
#include "signal-common.h"
#include "user/syscall-trace.h"
+/* BSD independent syscall shims */
+#include "bsd-socket.h"
#include "bsd-file.h"
#include "bsd-proc.h"
@@ -508,6 +510,25 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1,
ret = do_freebsd_sysarch(cpu_env, arg1, arg2);
break;
+ /*
+ * socket related system calls
+ */
+ case TARGET_FREEBSD_NR_accept: /* accept(2) */
+ ret = do_bsd_accept(arg1, arg2, arg3);
+ break;
+
+ case TARGET_FREEBSD_NR_bind: /* bind(2) */
+ ret = do_bsd_bind(arg1, arg2, arg3);
+ break;
+
+ case TARGET_FREEBSD_NR_connect: /* connect(2) */
+ ret = do_bsd_connect(arg1, arg2, arg3);
+ break;
+
+ case TARGET_FREEBSD_NR_getpeername: /* getpeername(2) */
+ ret = do_bsd_getpeername(arg1, arg2, arg3);
+ break;
+
default:
qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num);
ret = -TARGET_ENOSYS;
From: Warner Losh <imp@bsdimp.com> added the bind(2), connect(2), accept(2), getpeername(2) syscalls to freebsd_syscall function defined in bsd-user/freebsd/os-syscall.c --- bsd-user/freebsd/os-syscall.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)