alpha, ia64, sh, sparc, sparc64: fix pipe and pipe2 syscalls decoding

Fix pipe syscall decoding on alpha.
Fix pipe2 syscall decoding on ia64, sh, sparc, and sparc64.

* configure.ac (AC_CHECK_FUNCS): Add pipe2.
* defs.h [ALPHA || IA64 || SH || SPARC || SPARC64] (HAVE_GETRVAL2):
Define.
* net.c (do_pipe): Check HAVE_GETRVAL2 instead of architecture macros.
Do not use getrval2 for pipe2 decoding.
Print address if umove call fails.
* syscall.c (getrval2): Check HAVE_GETRVAL2 instead of architecture
macros.  Implement for [ALPHA].
* tests/pipe.c: New file.
* tests/pipe.expected: New file.
* tests/pipe.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add pipe.
(TESTS): Add pipe.test.
(EXTRA_DIST): Add pipe.expected.
* tests/.gitignore: Add pipe.
diff --git a/syscall.c b/syscall.c
index 67af9fd..e42b805 100644
--- a/syscall.c
+++ b/syscall.c
@@ -779,7 +779,7 @@
 
 static long get_regs_error;
 
-#if defined(SPARC) || defined(SPARC64) || defined(IA64) || defined(SH)
+#ifdef HAVE_GETRVAL2
 long
 getrval2(struct tcb *tcp)
 {
@@ -790,6 +790,9 @@
 # elif defined(SH)
 	if (upeek(tcp->pid, 4*(REG_REG0+1), &val) < 0)
 		return -1;
+# elif defined ALPHA
+	if (upeek(tcp->pid, 20, &val) < 0)
+		return -1;
 # elif defined(IA64)
 	val = ia64_regs.gr[9];
 # endif