This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi!
Seems ppc64 is not restoring r2 and so crashes when _exit is called
with bogus toc register. I haven't tested this patch yet, but
will do RSN, certainly if tst-getpid1.c is modified to call _exit (1)
resp. _exit (0) instead of return {1,0}, it succeeds (well, I have one day
old glibc, so fails with wrong signal value, but the child doesn't crash).
2004-12-15 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Save
and restore r2 around call to fn.
--- libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S.jj 2004-12-15 12:21:04.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2004-12-15 12:26:22.049075256 +0100
@@ -104,12 +104,14 @@ L(nomoregetpid):
L(oldpid):
#endif
+ std r2,40(r1)
/* Call procedure. */
ld r0,0(r29)
ld r2,8(r29)
mtctr r0
mr r3,r31
bctrl
+ ld r2,40(r1)
/* Call _exit with result from procedure. */
#ifdef SHARED
b JUMPTARGET(__GI__exit)
Jakub
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |