=================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/makecontext.S,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- libc/sysdeps/unix/sysv/linux/i386/makecontext.S 2007/12/03 04:56:56 1.8 +++ libc/sysdeps/unix/sysv/linux/i386/makecontext.S 2008/01/09 19:35:15 1.9 @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2005, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -41,13 +41,15 @@ movl 12(%esp), %ecx movl %ecx, oEBX(%eax) - /* Make room on the new stack for the parameters. */ + /* Make room on the new stack for the parameters. + Room for the arguments, return address (== L(exitcode)) and + oLINK pointer is needed. One of the pointer sizes is subtracted + after aligning the stack. */ negl %ecx - leal -8(%edx,%ecx,4), %edx + leal -4(%edx,%ecx,4), %edx negl %ecx /* Align the stack. */ - addl $16, %edx andl $0xfffffff0, %edx subl $4, %edx