This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Broken autoconf mmap test


On Fri, Mar 25, 2011 at 02:05:28PM +0100, Corinna Vinschen wrote:
>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.

I pretty much never think that specific cheats like this are worthwhile
but, in this case, I think it's the lesser of all evils so you've got
my vote.

cgf


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]