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______________________

Reply via email to