Wed Oct 17 16:16:19 2012: Request 80217 was acted upon. Transaction: Correspondence added by BULKDD Queue: Win32-API Subject: Build failure under Cygwin on Windows Broken in: 0.72 Severity: Critical Owner: Nobody Requestors: jdhed...@cpan.org Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=80217 >
The culprit from cygwin.asm _______________________________________________________ #ifdef L_chkstk /* Function prologue calls _alloca to probe the stack when allocating more than CHECK_STACK_LIMIT bytes in one go. Touching the stack at 4K increments is necessary to ensure that the guard pages used by the OS virtual memory manger are allocated in correct sequence. */ .global ___chkstk .global __alloca #ifndef _WIN64 ___chkstk: __alloca: pushl %ecx /* save temp */ leal 8(%esp), %ecx /* point past return addr */ cmpl $0x1000, %eax /* > 4k ?*/ jb Ldone Lprobe: subl $0x1000, %ecx /* yes, move pointer down 4k*/ orl $0x0, (%ecx) /* probe there */ subl $0x1000, %eax /* decrement count */ cmpl $0x1000, %eax ja Lprobe /* and do it again */ Ldone: subl %eax, %ecx orl $0x0, (%ecx) /* less than 4k, just peek here */ movl %esp, %eax /* save old stack pointer */ movl %ecx, %esp /* decrement stack */ movl (%eax), %ecx /* recover saved temp */ movl 4(%eax), %eax /* recover return address */ /* Push the return value back. Doing this instead of just jumping to %eax preserves the cached call-return stack used by most modern processors. */ pushl %eax ret #else ___________CUT______________________