Subject: port-alpha/26116: osf1 emul needs fix to run netscape
To: None <gnats-bugs@gnats.netbsd.org>
From: Dieter <netbsd@sopwith.solgatos.com>
List: netbsd-bugs
Date: 06/29/2004 19:34:25
>Number:         26116
>Category:       port-alpha
>Synopsis:       netscape does not run due to unimplemented osf1 system calls
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-alpha-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jun 29 20:19:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Dieter
>Release:        NetBSD 1.6.2
>Organization:
	
>Environment:
	
	
System: NetBSD sopwith.uucp 1.6.2 NetBSD 1.6.2 (ALPHA-$Revision: 1.4 $) #11: Tue Jun 29 12:05:05 PDT 2004 root@sopwith.uucp:/usr/src/sys/arch/alpha/compile/SOPWITH alpha
Architecture: alpha
Machine: alpha
>Description:
	Netscape does not run due to unimplemented osf1 system calls.
Appariently it does run for some people, but not for others?
>How-To-Repeat:
	Attempt to run a Digital Unix version of Netscape on an Alpha.
It dies.  ktrace(1) is helpful.
>Fix:

===================================================================
RCS file: RCS/osf1_syscall.h,v
retrieving revision 1.1
diff -r1.1 osf1_syscall.h
360a361,369
> /* syscall: "msgget" ret: "int" args: "key_t" "int" */
> #define       OSF1_SYS_msgget 201
> 
> /* syscall: "msgrcv" ret: "int" args: "int" "void *" "size_t" "int" */
> #define       OSF1_SYS_msgrcv 202
> 
> /* syscall: "msgsnd" ret: "int" args: "int" "void *" "size_t" "int" */
> #define       OSF1_SYS_msgsnd 203
> 

===================================================================
RCS file: RCS/osf1_syscallargs.h,v
retrieving revision 1.1
diff -r1.1 osf1_syscallargs.h
483a484,488
> 
> int   sys_msgget      __P((struct proc *, void *, register_t *));
> int   sys_msgrcv      __P((struct proc *, void *, register_t *));
> int   sys_msgsnd      __P((struct proc *, void *, register_t *));
> 

===================================================================
RCS file: RCS/osf1_syscalls.c,v
retrieving revision 1.1
diff -r1.1 osf1_syscalls.c
229,231c229,231
< 	"#201 (unimplemented msgget)",		/* 201 = unimplemented msgget */
< 	"#202 (unimplemented msgrcv)",		/* 202 = unimplemented msgrcv */
< 	"#203 (unimplemented msgsnd)",		/* 203 = unimplemented msgsnd */
---
> 	"msgget",		/* 201 = msgget */
> 	"msgrcv",		/* 202 = msgrcv */
> 	"msgsnd",		/* 203 = msgsnd */

===================================================================
RCS file: RCS/osf1_sysent.c,v
retrieving revision 1.1
diff -r1.1 osf1_sysent.c
430,435c430,435
< 	{ 0, 0, 0,
< 	    sys_nosys },			/* 201 = unimplemented msgget */
< 	{ 0, 0, 0,
< 	    sys_nosys },			/* 202 = unimplemented msgrcv */
< 	{ 0, 0, 0,
< 	    sys_nosys },			/* 203 = unimplemented msgsnd */
---
> 	{ 2, s(struct sys_msgget_args), 0,
> 	    sys_msgget },			/* 201 = msgget */
> 	{ 4, s(struct sys_msgrcv_args), 0,
> 	    sys_msgrcv },			/* 202 = msgrcv */
> 	{ 4, s(struct sys_msgsnd_args), 0,
> 	    sys_msgsnd },			/* 203 = msgsnd */

===================================================================
RCS file: RCS/syscalls.master,v
retrieving revision 1.1
diff -r1.1 syscalls.master
316,318c316,318
< 201	UNIMPL		msgget
< 202	UNIMPL		msgrcv
< 203	UNIMPL		msgsnd
---
> 201	NOARGS		{ int sys_msgget(key_t key, int msgflg); }
> 202	NOARGS		{ int sys_msgrcv(int msqid, void *msgp, size_t msgsz, int msgflg); }
> 203	NOARGS		{ int sys_msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg); }


>Release-Note:
>Audit-Trail:
>Unformatted: