On Tue, 01 Dec 2009 18:38:27 +0100, Veaceslav Falico wrote: > Instead of using fork(), call syscall(__NR_fork) in step-fork.c > to avoid looping on powerpc arch in libc.
Checked-in. (Not seen any problems with syscall and using glibc afterwards as in the clone-multi-ptrace.c case so left it as is.) Regards, Jan > Signed-off-by: Veaceslav Falico <vfal...@redhat.com> > --- > > --- a/ptrace-tests/tests/step-fork.c 2009-12-01 17:17:14.000000000 +0100 > +++ b/ptrace-tests/tests/step-fork.c 2009-12-01 18:35:15.000000000 +0100 > @@ -29,6 +29,7 @@ > #include <unistd.h> > #include <sys/wait.h> > #include <string.h> > +#include <sys/syscall.h> > #include <signal.h> > > #ifndef PTRACE_SINGLESTEP > @@ -78,7 +79,12 @@ main (int argc, char **argv) > sigprocmask (SIG_BLOCK, &mask, NULL); > ptrace (PTRACE_TRACEME); > raise (SIGUSR1); > - if (fork () == 0) > + > + /* > + * Can't use fork() directly because on powerpc it loops inside libc > under > + * PTRACE_SINGLESTEP. See > http://marc.info/?l=linux-kernel&m=125927241130695 > + */ > + if (syscall(__NR_fork) == 0) > { > read (-1, NULL, 0); > _exit (22);