OSDN Git Service

getpgrp: fix fallback handling
authorMark Salter <msalter@redhat.com>
Thu, 26 Apr 2012 14:14:01 +0000 (10:14 -0400)
committerMike Frysinger <vapier@gentoo.org>
Fri, 27 Apr 2012 02:48:22 +0000 (22:48 -0400)
The test for generating a stub for getpgrp was wrong and would
result in duplicate symbols when building without __NR_getpgrp,
but with __NR_getpgid and __NR_getpid.

A closer look at the getpgrp implementation using getpgid showed
that getpid was being called to pass the current pid to getpgid.
This is unnecessary because passing 0 to getpgid returns the
pgid of the current process.

This patch cleans up the getpgrp implementation and the stub test.

Signed-off-by: Mark Salter <msalter@redhat.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
libc/sysdeps/linux/common/getpgrp.c
libc/sysdeps/linux/common/stubs.c

index 0af9dc4..14912c3 100644 (file)
 #ifdef __NR_getpgrp
 /* According to the manpage the POSIX.1 version is favoured */
 _syscall_noerr0(pid_t, getpgrp)
-#elif defined __NR_getpgid && (defined __NR_getpid || defined __NR_getxpid)
-/* IA64 doesn't have a getpgrp syscall */
+#elif defined __NR_getpgid
 pid_t getpgrp(void)
 {
-       return getpgid(getpid());
+       return getpgid(0);
 }
 #endif
index a4c16b9..3567b07 100644 (file)
@@ -150,7 +150,7 @@ make_stub(get_kernel_syms)
 make_stub(getpeername)
 #endif
 
-#if !defined(__NR_getpgrp) && (defined(__NR_getpgid) && (defined(__NR_getpid) || defined(__NR_getxpid)))
+#if !defined __NR_getpgrp && !defined __NR_getpgid
 make_stub(getpgrp)
 #endif