diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-12-06 23:40:48 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-12-06 23:40:48 +0000 |
commit | c5c2b7c3fd823fc5c4a52506292a90eba60b0c62 (patch) | |
tree | 31f5ede458fed1e5ae15b6023e733c33683d088c /resource | |
parent | 9752c3cdbce2b3b8338abf09c8b9dd9e78908b8a (diff) | |
download | glibc-c5c2b7c3fd823fc5c4a52506292a90eba60b0c62.tar.gz glibc-c5c2b7c3fd823fc5c4a52506292a90eba60b0c62.tar.xz glibc-c5c2b7c3fd823fc5c4a52506292a90eba60b0c62.zip |
Fix pthreads getrlimit, gettimeofday namespace (bug 17682).
Some pthreads functions use getrlimit and gettimeofday, but these functions are XSI, not base POSIX; this is a namespace issue for dynamic linking as well as static linking. This patch makes them use __getrlimit and __gettimeofday instead - the former needed to be newly exported from libc.so at GLIBC_PRIVATE (and so now needs libc_hidden_proto / libc_hidden_def), the latter was already exported. Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #17682] * resource/Versions (libc): Add __getrlimit at GLIBC_PRIVATE. * resource/getrlimit.c (__getrlimit): Use libc_hidden_def. * sysdeps/mach/hurd/getrlimit.c (__getrlimit): Likewise. * include/sys/resource.h (__getrlimit): Use libc_hidden_proto. * nptl/nptl-init.c (__pthread_initialize_minimal_internal): Use __getrlimit instead of getrlimit. * nptl/pthread_cond_timedwait.c (__pthread_cond_timedwait): Use __gettimeofday instead of gettimeofday. * nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Likewise. * nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise. * sysdeps/pthread/aio_misc.c (handle_fildes_io): Likewise. * conform/Makefile (test-xfail-POSIX2008/aio.h/linknamespace): Remove variable. (test-xfail-POSIX2008/pthread.h/linknamespace): Likewise. (test-xfail-POSIX2008/time.h/linknamespace): Likewise.
Diffstat (limited to 'resource')
-rw-r--r-- | resource/Versions | 3 | ||||
-rw-r--r-- | resource/getrlimit.c | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/resource/Versions b/resource/Versions index caff6a2f50..d6c2ccee1b 100644 --- a/resource/Versions +++ b/resource/Versions @@ -22,4 +22,7 @@ libc { # s* setrlimit64; } + GLIBC_PRIVATE { + __getrlimit; + } } diff --git a/resource/getrlimit.c b/resource/getrlimit.c index 6920622922..799ee6eb49 100644 --- a/resource/getrlimit.c +++ b/resource/getrlimit.c @@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__getrlimit) weak_alias (__getrlimit, getrlimit) stub_warning (getrlimit) |