summaryrefslogtreecommitdiffstats
path: root/abs/core/glibc/fix-makecontext.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/glibc/fix-makecontext.patch')
-rw-r--r--abs/core/glibc/fix-makecontext.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/abs/core/glibc/fix-makecontext.patch b/abs/core/glibc/fix-makecontext.patch
new file mode 100644
index 0000000..f507b7a
--- /dev/null
+++ b/abs/core/glibc/fix-makecontext.patch
@@ -0,0 +1,33 @@
+===================================================================
+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 <drepper@redhat.com>, 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
+