diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-20 13:43:09 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-20 13:48:07 -0800 |
commit | 34a407de9661ff8e938d152445b750becb247f7c (patch) | |
tree | 8f8ec7689f91cb5dfc655ecdfac4f4235cbb8f0e | |
parent | 2daff75bab89a597b2a29bc6f3c7f88e12352355 (diff) | |
download | glibc-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-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c | 2 |
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); |