about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-02-20 13:43:09 -0800
committerDavid S. Miller <davem@davemloft.net>2010-02-20 13:48:07 -0800
commit34a407de9661ff8e938d152445b750becb247f7c (patch)
tree8f8ec7689f91cb5dfc655ecdfac4f4235cbb8f0e
parent2daff75bab89a597b2a29bc6f3c7f88e12352355 (diff)
downloadglibc-34a407de9661ff8e938d152445b750becb247f7c.tar.gz
glibc-34a407de9661ff8e938d152445b750becb247f7c.tar.xz
glibc-34a407de9661ff8e938d152445b750becb247f7c.zip
sparc: Fix 32-bit makecontext arg passing.
test-makecontext3 fails because we fill in the argument
stack slots past the 5th using the wrong index.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8b91c5f9ea..ac36832f8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,10 @@
 	* sysdeps/sparc/sparc64/memchr.S: Use unsigned branch on greater to
 	test end of buffer.
 
+	* sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c
+	(__makecontext): Adjust arg counter properly when copying arg
+	stack slots.
+
 2009-02-20  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup):
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c b/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c
index 9b48dade63..bcf63db103 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c
@@ -77,7 +77,7 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
       if (i < 6)
 	ucp->uc_mcontext.gregs[REG_O0 + i] = arg;
       else
-	sp[i + 23] = arg;
+	sp[i + 23 - 6] = arg;
     }
 
   va_end (ap);