Module Name:    src
Committed By:   kamil
Date:           Sat Jan 18 07:33:24 UTC 2020

Modified Files:
        src/sys/compat/netbsd32: netbsd32_syscall.h netbsd32_syscallargs.h
            netbsd32_syscalls.c netbsd32_syscalls_autoload.c netbsd32_sysent.c
            netbsd32_systrace_args.c syscalls.master

Log Message:
Catch up after getpid/getgid/getuid changes in native ABI in 2008

getpid(), getuid() and getgid() used to call respectively sys_getpid(),
sys_getuid() and sys_getgid(). In the BSD4.3 compat mode there was a
fallback to call sys_getpid_with_ppid() and related functions.

In 2008 the compat ifdef was removed in sys/kern/syscalls.master r. 1.216.

For purity reasons we probably shall restore the NetBSD original behavior
and implement BSD4.3 one as a compat module, however it is not worth the
complexity.

Align the netbsd32 compat ABI to native ABI and call functions that return
two integers as in BSD4.3.


To generate a diff of this commit:
cvs rdiff -u -r1.146 -r1.147 src/sys/compat/netbsd32/netbsd32_syscall.h
cvs rdiff -u -r1.145 -r1.146 src/sys/compat/netbsd32/netbsd32_syscallargs.h \
    src/sys/compat/netbsd32/netbsd32_syscalls.c
cvs rdiff -u -r1.25 -r1.26 \
    src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c
cvs rdiff -u -r1.144 -r1.145 src/sys/compat/netbsd32/netbsd32_sysent.c
cvs rdiff -u -r1.36 -r1.37 src/sys/compat/netbsd32/netbsd32_systrace_args.c
cvs rdiff -u -r1.130 -r1.131 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_syscall.h
diff -u src/sys/compat/netbsd32/netbsd32_syscall.h:1.146 src/sys/compat/netbsd32/netbsd32_syscall.h:1.147
--- src/sys/compat/netbsd32/netbsd32_syscall.h:1.146	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_syscall.h	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscall.h,v 1.146 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscall.h,v 1.147 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call numbers.

Index: src/sys/compat/netbsd32/netbsd32_syscallargs.h
diff -u src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.145 src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.146
--- src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.145	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_syscallargs.h	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscallargs.h,v 1.145 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscallargs.h,v 1.146 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call argument lists.
@@ -2693,7 +2693,7 @@ int	compat_20_netbsd32_getfsstat(struct 
 
 int	compat_43_netbsd32_olseek(struct lwp *, const struct compat_43_netbsd32_olseek_args *, register_t *);
 
-int	sys_getpid(struct lwp *, const void *, register_t *);
+int	sys_getpid_with_ppid(struct lwp *, const void *, register_t *);
 
 int	compat_40_netbsd32_mount(struct lwp *, const struct compat_40_netbsd32_mount_args *, register_t *);
 
@@ -2701,7 +2701,7 @@ int	netbsd32_unmount(struct lwp *, const
 
 int	netbsd32_setuid(struct lwp *, const struct netbsd32_setuid_args *, register_t *);
 
-int	sys_getuid(struct lwp *, const void *, register_t *);
+int	sys_getuid_with_euid(struct lwp *, const void *, register_t *);
 
 int	sys_geteuid(struct lwp *, const void *, register_t *);
 
@@ -2747,7 +2747,7 @@ int	netbsd32_ktrace(struct lwp *, const 
 
 int	netbsd32_sigaction(struct lwp *, const struct netbsd32_sigaction_args *, register_t *);
 
-int	sys_getgid(struct lwp *, const void *, register_t *);
+int	sys_getgid_with_egid(struct lwp *, const void *, register_t *);
 
 int	compat_13_netbsd32_sigprocmask(struct lwp *, const struct compat_13_netbsd32_sigprocmask_args *, register_t *);
 
Index: src/sys/compat/netbsd32/netbsd32_syscalls.c
diff -u src/sys/compat/netbsd32/netbsd32_syscalls.c:1.145 src/sys/compat/netbsd32/netbsd32_syscalls.c:1.146
--- src/sys/compat/netbsd32/netbsd32_syscalls.c:1.145	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_syscalls.c	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscalls.c,v 1.145 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscalls.c,v 1.146 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call names.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.145 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.146 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #if defined(_KERNEL_OPT)
@@ -584,11 +584,11 @@ const char *const altnetbsd32_syscallnam
 	/*  17 */	"break",
 	/*  18 */	NULL, /* compat_20_netbsd32_getfsstat */
 	/*  19 */	NULL, /* compat_43_netbsd32_olseek */
-	/*  20 */	NULL, /* getpid */
+	/*  20 */	"getpid_with_ppid",
 	/*  21 */	NULL, /* compat_40_netbsd32_mount */
 	/*  22 */	"unmount",
 	/*  23 */	"setuid",
-	/*  24 */	NULL, /* getuid */
+	/*  24 */	"getuid_with_euid",
 	/*  25 */	NULL, /* geteuid */
 	/*  26 */	"ptrace",
 	/*  27 */	"recvmsg",
@@ -611,7 +611,7 @@ const char *const altnetbsd32_syscallnam
 	/*  44 */	"profil",
 	/*  45 */	"ktrace",
 	/*  46 */	"sigaction",
-	/*  47 */	NULL, /* getgid */
+	/*  47 */	"getgid_with_egid",
 	/*  48 */	NULL, /* compat_13_sigprocmask13 */
 	/*  49 */	"__getlogin",
 	/*  50 */	"setlogin",

Index: src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c
diff -u src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.25 src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.26
--- src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.25	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.25 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.26 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call autoload table.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls_autoload.c,v 1.25 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls_autoload.c,v 1.26 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"

Index: src/sys/compat/netbsd32/netbsd32_sysent.c
diff -u src/sys/compat/netbsd32/netbsd32_sysent.c:1.144 src/sys/compat/netbsd32/netbsd32_sysent.c:1.145
--- src/sys/compat/netbsd32/netbsd32_sysent.c:1.144	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_sysent.c	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_sysent.c,v 1.144 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_sysent.c,v 1.145 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call switch table.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.144 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.145 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -212,7 +212,7 @@ struct sysent netbsd32_sysent[] = {
 		.sy_call = (sy_call_t *)sys_nomodule
 	},		/* 19 = compat_43_netbsd32_olseek */
 	{
-		.sy_call = (sy_call_t *)sys_getpid
+		.sy_call = (sy_call_t *)sys_getpid_with_ppid
 	},		/* 20 = getpid */
 	{
 		ns(struct compat_40_netbsd32_mount_args),
@@ -227,7 +227,7 @@ struct sysent netbsd32_sysent[] = {
 		.sy_call = (sy_call_t *)netbsd32_setuid
 	},		/* 23 = netbsd32_setuid */
 	{
-		.sy_call = (sy_call_t *)sys_getuid
+		.sy_call = (sy_call_t *)sys_getuid_with_euid
 	},		/* 24 = getuid */
 	{
 		.sy_call = (sy_call_t *)sys_geteuid
@@ -313,7 +313,7 @@ struct sysent netbsd32_sysent[] = {
 		.sy_call = (sy_call_t *)netbsd32_sigaction
 	},		/* 46 = netbsd32_sigaction */
 	{
-		.sy_call = (sy_call_t *)sys_getgid
+		.sy_call = (sy_call_t *)sys_getgid_with_egid
 	},		/* 47 = getgid */
 	{
 		ns(struct compat_13_netbsd32_sigprocmask_args),

Index: src/sys/compat/netbsd32/netbsd32_systrace_args.c
diff -u src/sys/compat/netbsd32/netbsd32_systrace_args.c:1.36 src/sys/compat/netbsd32/netbsd32_systrace_args.c:1.37
--- src/sys/compat/netbsd32/netbsd32_systrace_args.c:1.36	Mon Nov  4 11:33:01 2019
+++ src/sys/compat/netbsd32/netbsd32_systrace_args.c	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_systrace_args.c,v 1.36 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_systrace_args.c,v 1.37 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call argument to DTrace register array converstion.
@@ -164,7 +164,7 @@ systrace_args(register_t sysnum, const v
 		*n_args = 3;
 		break;
 	}
-	/* sys_getpid */
+	/* sys_getpid_with_ppid */
 	case 20: {
 		*n_args = 0;
 		break;
@@ -194,7 +194,7 @@ systrace_args(register_t sysnum, const v
 		*n_args = 1;
 		break;
 	}
-	/* sys_getuid */
+	/* sys_getuid_with_euid */
 	case 24: {
 		*n_args = 0;
 		break;
@@ -375,7 +375,7 @@ systrace_args(register_t sysnum, const v
 		*n_args = 3;
 		break;
 	}
-	/* sys_getgid */
+	/* sys_getgid_with_egid */
 	case 47: {
 		*n_args = 0;
 		break;
@@ -3785,7 +3785,7 @@ systrace_entry_setargdesc(int sysnum, in
 			break;
 		};
 		break;
-	/* sys_getpid */
+	/* sys_getpid_with_ppid */
 	case 20:
 		break;
 	/* netbsd32_mount */
@@ -3830,7 +3830,7 @@ systrace_entry_setargdesc(int sysnum, in
 			break;
 		};
 		break;
-	/* sys_getuid */
+	/* sys_getuid_with_euid */
 	case 24:
 		break;
 	/* sys_geteuid */
@@ -4114,7 +4114,7 @@ systrace_entry_setargdesc(int sysnum, in
 			break;
 		};
 		break;
-	/* sys_getgid */
+	/* sys_getgid_with_egid */
 	case 47:
 		break;
 	/* netbsd32_sigprocmask */
@@ -9633,7 +9633,7 @@ systrace_return_setargdesc(int sysnum, i
 		if (ndx == 0 || ndx == 1)
 			p = "netbsd32_long";
 		break;
-	/* sys_getpid */
+	/* sys_getpid_with_ppid */
 	case 20:
 	/* netbsd32_mount */
 	case 21:
@@ -9650,7 +9650,7 @@ systrace_return_setargdesc(int sysnum, i
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;
-	/* sys_getuid */
+	/* sys_getuid_with_euid */
 	case 24:
 	/* sys_geteuid */
 	case 25:
@@ -9747,7 +9747,7 @@ systrace_return_setargdesc(int sysnum, i
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;
-	/* sys_getgid */
+	/* sys_getgid_with_egid */
 	case 47:
 	/* netbsd32_sigprocmask */
 	case 48:

Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.130 src/sys/compat/netbsd32/syscalls.master:1.131
--- src/sys/compat/netbsd32/syscalls.master:1.130	Mon Nov  4 11:32:22 2019
+++ src/sys/compat/netbsd32/syscalls.master	Sat Jan 18 07:33:24 2020
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.130 2019/11/04 11:32:22 rin Exp $
+	$NetBSD: syscalls.master,v 1.131 2020/01/18 07:33:24 kamil Exp $
 
 ;	from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
@@ -97,7 +97,7 @@
 19	COMPAT_43 MODULAR compat_netbsd32_43	\
 			{ netbsd32_long|netbsd32||olseek(int fd, \
 			    netbsd32_long offset, int whence); }
-20	NOARGS 		{ pid_t|sys||getpid(void); }
+20	NOARGS 		{ pid_t|sys||getpid_with_ppid(void); } getpid
 21	COMPAT_40 MODULAR compat_netbsd32_40	\
 			{ int|netbsd32||mount(netbsd32_charp type, \
 			    netbsd32_charp path, int flags, \
@@ -105,7 +105,7 @@
 22	STD		{ int|netbsd32||unmount(netbsd32_charp path, \
 			    int flags); }
 23	STD		{ int|netbsd32||setuid(uid_t uid); }
-24	NOARGS 		{ uid_t|sys||getuid(void); }
+24	NOARGS 		{ uid_t|sys||getuid_with_euid(void); } getuid
 25	NOARGS		{ uid_t|sys||geteuid(void); }
 26	STD MODULAR compat_netbsd32_ptrace \
 			{ int|netbsd32||ptrace(int req, pid_t pid, \
@@ -150,7 +150,7 @@
 46	STD		{ int|netbsd32||sigaction(int signum, \
 			    netbsd32_sigactionp_t nsa, \
 			    netbsd32_sigactionp_t osa); }
-47	NOARGS 		{ gid_t|sys||getgid(void); }
+47	NOARGS 		{ gid_t|sys||getgid_with_egid(void); } getgid
 48	COMPAT_13 MODULAR compat_netbsd32_13	\
 			{ int|netbsd32||sigprocmask(int how, \
 			    int mask); } sigprocmask13

Reply via email to