Subject: Re: kern/32161: m68k a.out emulation broken
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: netbsd-bugs
Date: 05/04/2006 06:10:02
The following reply was made to PR kern/32161; it has been noted by GNATS.
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
To: christos@zoulas.com
Cc: hauke@Espresso.Rhein-Neckar.DE, gnats-bugs@NetBSD.org,
kern-bug-people@NetBSD.org, gnats-admin@NetBSD.org,
netbsd-bugs@NetBSD.org, tsutsui@ceres.dti.ne.jp
Subject: Re: kern/32161: m68k a.out emulation broken
Date: Thu, 4 May 2006 15:06:49 +0900
It looks compat/aoutm68k/syscalls.master should be updated
for COMPAT_30 getdents(2) and aoutm68k_sys*.[ch] files
should be regenerated.
(Umm, many people didn't read "DO NOT EDIT" comments
in these files...)
BTW, is there no COMPAT_30 support for fhstat(2), which also
takes struct stat * (which has ino_t) as the second arg?
---
Izumi Tsutsui
Index: compat/aoutm68k/aoutm68k_syscall.h
===================================================================
RCS file: /cvsroot/src/sys/compat/aoutm68k/aoutm68k_syscall.h,v
retrieving revision 1.18
diff -u -r1.18 aoutm68k_syscall.h
--- compat/aoutm68k/aoutm68k_syscall.h 11 Dec 2005 12:19:56 -0000 1.18
+++ compat/aoutm68k/aoutm68k_syscall.h 4 May 2006 05:43:10 -0000
@@ -1,12 +1,15 @@
-/* $NetBSD: aoutm68k_syscall.h,v 1.18 2005/12/11 12:19:56 christos Exp $ */
+/* $NetBSD$ */
/*
* System call numbers.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from NetBSD: syscalls.master,v 1.12 2004/09/14 17:39:18 jdolecek Exp
+ * created from NetBSD: syscalls.master,v 1.13 2005/12/11 12:19:56 christos Exp
*/
+#ifndef _AOUTM68K_SYS_SYSCALL_H_
+#define _AOUTM68K_SYS_SYSCALL_H_
+
/* syscall: "syscall" ret: "int" args: "int" "..." */
#define AOUTM68K_SYS_syscall 0
@@ -857,9 +860,13 @@
/* syscall: "swapctl" ret: "int" args: "int" "const void *" "int" */
#define AOUTM68K_SYS_swapctl 271
+#ifdef COMPAT_30
/* syscall: "getdents" ret: "int" args: "int" "char *" "size_t" */
#define AOUTM68K_SYS_getdents 272
+#else
+ /* 272 is excluded compat_30_sys_getdents */
+#endif
/* syscall: "minherit" ret: "int" args: "void *" "size_t" "int" */
#define AOUTM68K_SYS_minherit 273
@@ -992,3 +999,4 @@
#define AOUTM68K_SYS_MAXSYSCALL 308
#define AOUTM68K_SYS_NSYSENT 512
+#endif /* _AOUTM68K_SYS_SYSCALL_H_ */
Index: compat/aoutm68k/aoutm68k_syscallargs.h
===================================================================
RCS file: /cvsroot/src/sys/compat/aoutm68k/aoutm68k_syscallargs.h,v
retrieving revision 1.17
diff -u -r1.17 aoutm68k_syscallargs.h
--- compat/aoutm68k/aoutm68k_syscallargs.h 11 Dec 2005 12:19:56 -0000 1.17
+++ compat/aoutm68k/aoutm68k_syscallargs.h 4 May 2006 05:43:10 -0000
@@ -1,14 +1,14 @@
-/* $NetBSD: aoutm68k_syscallargs.h,v 1.17 2005/12/11 12:19:56 christos Exp $ */
+/* $NetBSD$ */
/*
* System call argument lists.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from NetBSD: syscalls.master,v 1.12 2004/09/14 17:39:18 jdolecek Exp
+ * created from NetBSD: syscalls.master,v 1.13 2005/12/11 12:19:56 christos Exp
*/
-#ifndef _AOUTM68K_SYS__SYSCALLARGS_H_
-#define _AOUTM68K_SYS__SYSCALLARGS_H_
+#ifndef _AOUTM68K_SYS_SYSCALLARGS_H_
+#define _AOUTM68K_SYS_SYSCALLARGS_H_
#ifdef syscallarg
#undef syscallarg
@@ -194,6 +194,9 @@
#endif
#else
#endif
+#ifdef COMPAT_30
+#else
+#endif
struct aoutm68k_sys___stat13_args {
syscallarg(const char *) path;
@@ -786,8 +789,11 @@
int sys_swapctl(struct lwp *, void *, register_t *);
-int sys_getdents(struct lwp *, void *, register_t *);
+#ifdef COMPAT_30
+int compat_30_sys_getdents(struct lwp *, void *, register_t *);
+#else
+#endif
int sys_minherit(struct lwp *, void *, register_t *);
int sys_lchmod(struct lwp *, void *, register_t *);
@@ -877,4 +883,4 @@
int sys_setcontext(struct lwp *, void *, register_t *);
-#endif /* _AOUTM68K_SYS__SYSCALLARGS_H_ */
+#endif /* _AOUTM68K_SYS_SYSCALLARGS_H_ */
Index: compat/aoutm68k/aoutm68k_sysent.c
===================================================================
RCS file: /cvsroot/src/sys/compat/aoutm68k/aoutm68k_sysent.c,v
retrieving revision 1.19
diff -u -r1.19 aoutm68k_sysent.c
--- compat/aoutm68k/aoutm68k_sysent.c 11 Dec 2005 12:19:56 -0000 1.19
+++ compat/aoutm68k/aoutm68k_sysent.c 4 May 2006 05:43:10 -0000
@@ -1,14 +1,14 @@
-/* $NetBSD: aoutm68k_sysent.c,v 1.19 2005/12/11 12:19:56 christos Exp $ */
+/* $NetBSD$ */
/*
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from NetBSD: syscalls.master,v 1.12 2004/09/14 17:39:18 jdolecek Exp
+ * created from NetBSD: syscalls.master,v 1.13 2005/12/11 12:19:56 christos Exp
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aoutm68k_sysent.c,v 1.19 2005/12/11 12:19:56 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD$");
#if defined(_KERNEL_OPT)
#include "opt_ktrace.h"
@@ -889,8 +889,13 @@
sys___posix_rename }, /* 270 = __posix_rename */
{ 3, s(struct sys_swapctl_args), 0,
sys_swapctl }, /* 271 = swapctl */
- { 3, s(struct sys___getdents30_args), 0,
- sys___getdents30 }, /* 272 = getdents */
+#ifdef COMPAT_30
+ { 3, s(struct compat_30_sys_getdents_args), 0,
+ compat_30_sys_getdents }, /* 272 = getdents */
+#else
+ { 0, 0, 0,
+ sys_nosys }, /* 272 = excluded compat_30_sys_getdents */
+#endif
{ 3, s(struct sys_minherit_args), 0,
sys_minherit }, /* 273 = minherit */
{ 2, s(struct sys_lchmod_args), 0,
Index: compat/aoutm68k/syscalls.master
===================================================================
RCS file: /cvsroot/src/sys/compat/aoutm68k/syscalls.master,v
retrieving revision 1.13
diff -u -r1.13 syscalls.master
--- compat/aoutm68k/syscalls.master 11 Dec 2005 12:19:56 -0000 1.13
+++ compat/aoutm68k/syscalls.master 4 May 2006 05:43:11 -0000
@@ -694,7 +694,11 @@
270 NOARGS { int sys___posix_rename(const char *from, \
const char *to); }
271 NOARGS { int sys_swapctl(int cmd, const void *arg, int misc); }
-272 NOARGS { int sys_getdents(int fd, char *buf, size_t count); }
+#ifdef COMPAT_30
+272 NOARGS { int compat_30_sys_getdents(int fd, char *buf, size_t count); }
+#else
+272 EXCL compat_30_sys_getdents
+#endif
273 NOARGS { int sys_minherit(void *addr, size_t len, \
int inherit); }
274 NOARGS { int sys_lchmod(const char *path, mode_t mode); }