summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Salter <msalter@redhat.com>2012-04-26 10:14:01 -0400
committerMike Frysinger <vapier@gentoo.org>2012-04-26 22:48:22 -0400
commit9f096becc4b9a49051eceb6c94a3c088c519c04d (patch)
tree1e868e629830b98da8fca2e1892b296c2fc25e8a
parent9756397b620c3880b94b9db3da96892fa952a3cf (diff)
getpgrp: fix fallback handling
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>
-rw-r--r--libc/sysdeps/linux/common/getpgrp.c5
-rw-r--r--libc/sysdeps/linux/common/stubs.c2
2 files changed, 3 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/common/getpgrp.c b/libc/sysdeps/linux/common/getpgrp.c
index 0af9dc499..14912c376 100644
--- a/libc/sysdeps/linux/common/getpgrp.c
+++ b/libc/sysdeps/linux/common/getpgrp.c
@@ -13,10 +13,9 @@
#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
diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c
index a4c16b9b9..3567b0786 100644
--- a/libc/sysdeps/linux/common/stubs.c
+++ b/libc/sysdeps/linux/common/stubs.c
@@ -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