Broken autoconf mmap test
Corinna Vinschen
corinna-cygwin@cygwin.com
Fri Mar 25 13:05:00 GMT 2011
On Mar 25 11:26, Andy Koppe wrote:
> On 25 March 2011 10:17, Corinna Vinschen wrote:
> >> If you guys think that cheating for autoconf on 64 bit systems is a good
> >> idea, I'm willing to implement it.
> >
> > Here's a patch which works fine for me:
> >
> > Index: mmap.cc
> > ===================================================================
> > RCS file: /cvs/src/src/winsup/cygwin/mmap.cc,v
> > retrieving revision 1.166
> > diff -u -p -r1.166 mmap.cc
> > --- mmap.cc   18 Mar 2011 13:56:56 -0000    1.166
> > +++ mmap.cc   25 Mar 2011 10:17:09 -0000
> > @@ -801,6 +801,38 @@ mmap64 (void *addr, size_t len, int prot
> > Â Â Â /* mmap /dev/zero is like MAP_ANONYMOUS. */
> > Â Â Â if (fh->get_device () == FH_ZERO)
> > Â Â Â Â flags |= MAP_ANONYMOUS;
> > +
> > + Â Â Â /* The autoconf mmap test maps a file of size 1 byte. Â It then tests
> > + Â Â Â Â every byte of the entire mapped page of 64K for 0-bytes since that's
> > + Â Â Â Â what POSIX requires. Â The problem is, we can't create that mapping on
> > + Â Â Â Â 64 bit systems. Â The file mapping will be only a single page, 4K, and
> > + Â Â Â Â since 64 bit systems don't support the AT_ROUND_TO_PAGE flag, the
> > + Â Â Â Â remainder of the 64K slot will result in a SEGV when accessed.
> > +
> > + Â Â Â Â So, what we do here is cheating for autoconf. Â We know exactly what
> > + Â Â Â Â autoconf is doing. Â The file is called conftest.txt, it has a size of
> > + Â Â Â Â 1 byte, the requested mapping size is 64K, the requested protection
> > + Â Â Â Â is PROT_READ | PROT_WRITE, the mapping is MAP_SHARED, the offset is 0.
> > +
> > + Â Â Â Â If all these requirements are given, we just return an anonymous map
> > + Â Â Â Â of 64K. Â This will help to get over the autoconf test even on 64 bit
> > + Â Â Â Â systems. */
>
> This should mention why cheating seems justified, i.e. the assumption
> that "real" programs don't depend on being able to access past EOF.
Prior to doll up the comment, the question is still if we really should
cheat or not.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
More information about the Cygwin-developers
mailing list