aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-17 20:22:39 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-17 20:22:39 +0000
commitc36213513490412941512daccf447513e442651b (patch)
treed5be56d7d716470d892ca65d847c73165866a28b /include
parentFix ttyslot namespace (bug 18547). (diff)
downloadglibc-c36213513490412941512daccf447513e442651b.tar.gz
glibc-c36213513490412941512daccf447513e442651b.tar.bz2
glibc-c36213513490412941512daccf447513e442651b.zip
Fix nice getpriority, setpriority namespace (bug 18553).
nice (XPG3) calls getpriority and setpriority (in XPG4 but not XPG3, i.e. UX-shaded in XPG4). This patch fixes this by making those functions into weak aliases of __* functions and calling the __* versions as needed. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by this patch). This completes cleaning up the unsorted linknamespace test XFAILs. [BZ #18553] * resource/getpriority.c (getpriority): Rename to __getpriority and define as weak alias of __getpriority. * resource/setpriority.c (setpriority): Rename to __setpriority and define as weak alias of __setpriority. * sysdeps/mach/hurd/getpriority.c (getpriority): Rename to __getpriority and define as weak alias of __getpriority. * sysdeps/mach/hurd/setpriority.c (setpriority): Rename to __setpriority and define as weak alias of __setpriority. * sysdeps/unix/syscalls.list (getpriority): Use __getpriority as strong name. (setpriority): Use __setpriority as strong name. * sysdeps/unix/sysv/linux/getpriority.c (getpriority): Rename to __getpriority and define as weak alias of __getpriority. * include/sys/resource.h (__getpriority): Declare. Use libc_hidden_proto. (__setpriority): Likewise. (getpriority): Don't use libc_hidden_proto. (setpriority): Likewise. * sysdeps/posix/nice.c (nice): Call __getpriority instead of getpriority. Call __setpriority instead of setpriority. * conform/Makefile (test-xfail-XPG3/unistd.h/linknamespace): Remove variable.
Diffstat (limited to 'include')
-rw-r--r--include/sys/resource.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/include/sys/resource.h b/include/sys/resource.h
index 7622da969a..688c46c4ae 100644
--- a/include/sys/resource.h
+++ b/include/sys/resource.h
@@ -2,8 +2,14 @@
#include <resource/sys/resource.h>
#ifndef _ISOMAC
-libc_hidden_proto (getpriority)
-libc_hidden_proto (setpriority)
+/* Prototypes repeated instead of using __typeof because
+ sys/resource.h is included in C++ tests, and declaring functions
+ with __typeof and __THROW doesn't work for C++. */
+extern int __getpriority (__priority_which_t __which, id_t __who) __THROW;
+libc_hidden_proto (__getpriority)
+extern int __setpriority (__priority_which_t __which, id_t __who, int __prio)
+ __THROW;
+libc_hidden_proto (__setpriority)
libc_hidden_proto (getrlimit64)
extern __typeof (getrlimit64) __getrlimit64;
libc_hidden_proto (__getrlimit64);