Module Name: src Committed By: pgoyette Date: Sat Mar 7 00:56:41 UTC 2020
Modified Files: src/sys/compat/netbsd32: netbsd32_compat_43.c syscalls.master Log Message: Properly mark netbsd32_compat_43 syscalls that are directly implemented by calling their compat_43 equivalents. With these changes, and with built-in versions of COMPAT_NETBSD32, COMPAT_NOMID, and COMPAT_09, I can now run a netbsd-0.9 statically linked i386 (32-bit) version of /bin/ls on a 9.99.x amd64 host! Addresses PR kern/55047 but more changes coming to handle non-built-in modules. XXX pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/compat/netbsd32/netbsd32_compat_43.c cvs rdiff -u -r1.131 -r1.132 src/sys/compat/netbsd32/syscalls.master Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/netbsd32/netbsd32_compat_43.c diff -u src/sys/compat/netbsd32/netbsd32_compat_43.c:1.59 src/sys/compat/netbsd32/netbsd32_compat_43.c:1.60 --- src/sys/compat/netbsd32/netbsd32_compat_43.c:1.59 Wed Jan 1 09:17:45 2020 +++ src/sys/compat/netbsd32/netbsd32_compat_43.c Sat Mar 7 00:56:41 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_compat_43.c,v 1.59 2020/01/01 09:17:45 maxv Exp $ */ +/* $NetBSD: netbsd32_compat_43.c,v 1.60 2020/03/07 00:56:41 pgoyette Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.59 2020/01/01 09:17:45 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.60 2020/03/07 00:56:41 pgoyette Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_43.h" @@ -769,6 +769,26 @@ static struct syscall_package compat_net (sy_call_t *)compat_43_netbsd32_sigsetmask }, { NETBSD32_SYS_compat_43_netbsd32_osigstack, 0, (sy_call_t *)compat_43_netbsd32_osigstack }, +/* + * These syscalls are provided by emul_netbsd compat_43 code, but their + * entry points must still be loaded in the emul_netbsd32 disatch table + */ + { NETBSD32_SYS_compat_43_ogetpagesize, 0, + (sy_call_t *)compat_43_sys_getpagesize }, + { NETBSD32_SYS_compat_43_ogetdtablesize, 0, + (sy_call_t *)compat_43_sys_getdtablesize}, + { NETBSD32_SYS_compat_43_ogethostid, 0, + (sy_call_t *)compat_43_sys_gethostid }, + { NETBSD32_SYS_compat_43_owait, 0, + (sy_call_t *)compat_43_sys_wait }, +/* + * Skip oquota since it isn't part of compat_43 + * { NETBSD32_SYS_compat_43_oquota, 0, + * (sy_call_t *)compat_43_sys_quota }, + */ + +/* End of compat_43 syscalls */ + { 0, 0, NULL } }; Index: src/sys/compat/netbsd32/syscalls.master diff -u src/sys/compat/netbsd32/syscalls.master:1.131 src/sys/compat/netbsd32/syscalls.master:1.132 --- src/sys/compat/netbsd32/syscalls.master:1.131 Sat Jan 18 07:33:24 2020 +++ src/sys/compat/netbsd32/syscalls.master Sat Mar 7 00:56:41 2020 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.131 2020/01/18 07:33:24 kamil Exp $ + $NetBSD: syscalls.master,v 1.132 2020/03/07 00:56:41 pgoyette Exp $ ; from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp ; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -183,7 +183,7 @@ { int|netbsd32||ogetkerninfo(int op, \ netbsd32_charp where, netbsd32_intp size, \ int arg); } -64 COMPAT_43 MODULAR compat_netbsd32_43 \ +64 COMPAT_43 MODULAR compat_43 \ { int|sys||getpagesize(void); } ogetpagesize 65 COMPAT_12 MODULAR compat_netbsd32_12 \ { int|netbsd32||msync(netbsd32_voidp addr, \ @@ -219,7 +219,7 @@ { int|netbsd32||setitimer(int which, \ netbsd32_itimerval50p_t itv, \ netbsd32_itimerval50p_t oitv); } -84 COMPAT_43 MODULAR compat_netbsd32_43 \ +84 COMPAT_43 MODULAR compat_43 \ { int|sys||wait(void); } owait 85 COMPAT_12 MODULAR compat_netbsd32_12 \ { int|netbsd32||oswapon(netbsd32_charp name); } @@ -232,7 +232,7 @@ 88 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||osethostname(netbsd32_charp hostname, \ u_int len); } -89 COMPAT_43 MODULAR compat_netbsd32_43 \ +89 COMPAT_43 MODULAR compat_43 \ { int|sys||getdtablesize(void); } ogetdtablesize 90 STD { int|netbsd32||dup2(int from, int to); } 91 UNIMPL getdopt @@ -343,7 +343,7 @@ 141 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||ogetpeername(int fdes, \ netbsd32_voidp asa, netbsd32_intp alen); } -142 COMPAT_43 MODULAR compat_netbsd32_43 \ +142 COMPAT_43 MODULAR compat_43 \ { int32_t|sys||gethostid(void); } ogethostid 143 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||sethostid(int32_t hostid); } @@ -360,12 +360,10 @@ 148 COMPAT_50 MODULAR compat_netbsd32_50 \ { int|netbsd32||quotactl(netbsd32_charp path, int cmd, \ int uid, netbsd32_voidp arg); } -149 COMPAT_43 MODULAR compat_netbsd32_43 \ - { int|sys||quota(void); } oquota #else 148 EXCL compat_netbsd32_quotactl -149 EXCL compat_netbsd32_quota #endif +149 EXCL compat_netbsd32_quota 150 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||ogetsockname(int fdec, \ netbsd32_voidp asa, netbsd32_intp alen); }