The test for generating 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 isn't necessary 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 <[email protected]> --- libc/sysdeps/linux/common/getpgrp.c | 5 ++--- libc/sysdeps/linux/common/stubs.c | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libc/sysdeps/linux/common/getpgrp.c b/libc/sysdeps/linux/common/getpgrp.c index 0af9dc4..14912c3 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 a4c16b9..a821647 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 -- 1.7.9.1 _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
