*BSD News Article 17104


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!uunet!noc.near.net!howland.reston.ans.net!agate!agate.berkeley.edu!cgd
From: cgd@erewhon.CS.Berkeley.EDU (Chris G. Demetriou)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: shared libs (SysV 3.2 style by J. Lohse) failing with NetBSD
Date: 13 Jun 93 23:02:24
Organization: Kernel Hackers 'r' Us
Lines: 48
Distribution: world
Message-ID: <CGD.93Jun13230224@erewhon.CS.Berkeley.EDU>
References: <TMH.93Jun13010835@condor.first.gmd.de> <1vfqvt$7nn@wzv.win.tue.nl>
NNTP-Posting-Host: erewhon.cs.berkeley.edu
In-reply-to: guido@gvr.win.tue.nl's message of 13 Jun 1993 18:17:33 GMT

In article <1vfqvt$7nn@wzv.win.tue.nl> guido@gvr.win.tue.nl (Guido van Rooij) writes:
> Hmmm..I think this might be a problem related to a partially applied
> patch in the NeeBSD-0.8 release. If you have the netbsd sources, check
> in vm_mmap.c if the following piece of code is present. If so, that's
> probably the error. Change it to the piece below and your problems
> will be solved, I hope. 

that is, in fact, the problem.  a diff -bc is supplied below,
but may not apply perfectly (e.g. line numbers may be off,
but other than that should be OK) because the version of the
file in netbsd 0.8 was 1.3, and this is a diff from revision
1.5 to 1.6...




chris

===================================================================
RCS file: /b/source/CVS/src/sys/vm/vm_mmap.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -c -r1.5 -r1.6
*** 1.5 1993/04/10 15:06:01
--- 1.6 1993/05/07 01:58:11
***************
*** 198,208 ****
--- 198,212 ----
                /*
                 * Map protections to MACH style
                 */
+               if(flags & MAP_SHARED) {
                        maxprot = VM_PROT_EXECUTE;
                        if (fp->f_flag & FREAD)
                                maxprot |= VM_PROT_READ;
                        if (fp->f_flag & FWRITE)
                                maxprot |= VM_PROT_WRITE;
+               } else {
+                       maxprot = VM_PROT_ALL;
+               }
        } else if (uap->fd != -1) {
                  maxprot = VM_PROT_ALL;
                handle = (caddr_t)fp;
--
Chris G. Demetriou                                    cgd@cs.berkeley.edu

   "386bsd as depth first search: whenever you go to fix something you
       find that 3 more things are actually broken." -- Adam Glass