From 9b6bf8a30292288c9536efb72d80020f189bf9a6 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 23 Jul 2009 08:02:07 -0700 Subject: Preserve stack alignment in i386 makecontext. --- sysdeps/unix/sysv/linux/i386/makecontext.S | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'sysdeps/unix/sysv/linux/i386') diff --git a/sysdeps/unix/sysv/linux/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S index ad2340555a..5b98e64db2 100644 --- a/sysdeps/unix/sysv/linux/i386/makecontext.S +++ b/sysdeps/unix/sysv/linux/i386/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2001, 2002, 2005, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2001,2002,2005,2007,2008,2009 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -105,17 +105,15 @@ L(exitcode): 1: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx #endif - popl %eax /* This is the next context. */ - testl %eax, %eax + cmpl $0, (%esp) /* Check the next context. */ je 2f /* If it is zero exit. */ - pushl %eax call JUMPTARGET(__setcontext) /* If this returns (which can happen if the syscall fails) we'll exit the program with the return error value (-1). */ -2: pushl %eax - call HIDDEN_JUMPTARGET(exit) + movl %eax, (%esp) +2: call HIDDEN_JUMPTARGET(exit) /* The 'exit' call should never return. In case it does cause the process to terminate. */ hlt -- cgit 1.4.1