POWERPC: if GETREGS fails with EIO, don't try it again
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
diff --git a/syscall.c b/syscall.c
index fc7cd06..a44ac0c 100644
--- a/syscall.c
+++ b/syscall.c
@@ -1070,9 +1070,15 @@
# elif defined(SPARC) || defined(SPARC64)
get_regs_error = ptrace(PTRACE_GETREGS, pid, (char *)&sparc_regs, 0);
# elif defined(POWERPC)
+ static bool old_kernel = 0;
+ if (old_kernel)
+ goto old;
get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, (long) &ppc_regs);
- if (get_regs_error && errno == EIO)
+ if (get_regs_error && errno == EIO) {
+ old_kernel = 1;
+ old:
get_regs_error = powerpc_getregs_old(pid);
+ }
/* try PTRACE_GETREGSET first, fallback to PTRACE_GETREGS */
# else