From: Ulrich Drepper Date: Thu, 23 Jul 2009 15:02:07 +0000 (-0700) Subject: Preserve stack alignment in i386 makecontext. X-Git-Tag: upstream/2.30~13429 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9b6bf8a30292288c9536efb72d80020f189bf9a6;p=external%2Fglibc.git Preserve stack alignment in i386 makecontext. --- diff --git a/ChangeLog b/ChangeLog index 5dc5d41..31ff6a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-07-23 Ulrich Drepper + * sysdeps/unix/sysv/linux/i386/makecontext.S: Ensure we preserve the + stack alignment in the exit code. + * elf/dl-lookup.c (dl_lookup_x): The hashval for unique symbol can potentially be zero. diff --git a/sysdeps/unix/sysv/linux/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S index ad23405..5b98e64 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