From: Zack Weinberg Date: Wed, 4 Sep 2019 06:18:57 +0000 (+0200) Subject: Finish move of clock_* functions to libc. [BZ #24959] X-Git-Tag: changelog-ends-here~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b5af2d8f2a2b;p=thirdparty%2Fglibc.git Finish move of clock_* functions to libc. [BZ #24959] In glibc 2.17, the functions clock_getcpuclockid, clock_getres, clock_gettime, clock_nanosleep, and clock_settime were moved from librt.so to libc.so, leaving compatibility stubs behind. Now that the dynamic linker no longer insists on finding versioned symbols in the same library that originally defined them, we do not need the stubs anymore, and this means we don't need GLIBC_PRIVATE __-prefix aliases for most of the functions anymore either. (clock_gettime still needs one.) For ports added before 2.17, libc.so needs to provide two symbol versions for each, the default at GLIBC_2.17 plus a compat version matching what librt had. While I'm at it, move the clock_*.c files and their tests from rt/ to time/. --- diff --git a/ChangeLog b/ChangeLog index 46fd5f2a24d..7903eb95565 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,107 @@ +2019-09-04 Zack Weinberg + + [BZ #24959] + * rt/clock_getcpuclockid.c: Move to time/clock_getcpuclockid.c. + * rt/clock_getres.c: Move to time/clock_getres.c. + * rt/clock_gettime.c: Move to time/clock_gettime.c. + * rt/clock_nanosleep.c: Move to time/clock_nanosleep.c. + * rt/clock_settime.c: Move to time/clock_settime.c. + * rt/tst-clock.c: Move to time/tst-clock.c. + * rt/tst-clock2.c: Move to time/tst-clock2.c. + * rt/tst-clock_nanosleep.c: Move to time/tst-clock_nanosleep.c. + * rt/tst-cpuclock1.c: Move to time/tst-cpuclock1.c. + * rt/clock-compat.c: Delete file. + + * time/clock_getcpuclockid.c + * time/clock_getres.c + * time/clock_gettime.c + * time/clock_nanosleep.c + * time/clock_settime.c + * sysdeps/posix/clock_getres.c + * sysdeps/unix/clock_gettime.c + * sysdeps/unix/clock_nanosleep.c + * sysdeps/unix/clock_settime.c + * sysdeps/unix/sysv/linux/clock_getcpuclockid.c + * sysdeps/unix/sysv/linux/clock_getres.c + * sysdeps/unix/sysv/linux/clock_gettime.c + * sysdeps/unix/sysv/linux/clock_nanosleep.c + * sysdeps/unix/sysv/linux/clock_settime.c: Define the function + defined by this file with default symbol version GLIBC_2_17, + and optionally a compatibility alias at symbol version GLIBC_2_2. + * include/time.h: Remove internal prototypes for clock_getres, + clock_nanosleep, and clock_getcpuclockid. + + * sysdeps/unix/sysv/linux/clock_gettime.c: Prune includes. + Remove unused function realtime_gettime. + + * rt/Makefile (clock-routines, routines): Remove variable. + (librt-routines): Remove clock-compat. + (tests): Remove tst-clock, tst-clock2, tst-clock_nanosleep, + and tst-cpuclock1. + * time/Makefile (routines): Add clock_getres, clock_gettime, + clock_settime, clock_getcpuclockid, and clock_nanosleep. + (tests): Add tst-clock, tst-clock2, tst-clock_nanosleep, + and tst-cpuclock1. + + * rt/Versions (libc): Remove entire stanza. + (librt GLIBC_2.2): Remove all clock_* functions. + * time/Versions (libc GLIBC_2.2, libc GLIBC_2.17): + Add clock_getres, clock_gettime, clock_settime, + clock_getcpuclockid, and clock_nanosleep. + (libc GLIBC_PRIVATE): Add __clock_gettime. + + * sysdeps/mach/hurd/i386/librt.abilist + * sysdeps/unix/sysv/linux/alpha/librt.abilist + * sysdeps/unix/sysv/linux/arm/be/librt.abilist + * sysdeps/unix/sysv/linux/arm/le/librt.abilist + * sysdeps/unix/sysv/linux/hppa/librt.abilist + * sysdeps/unix/sysv/linux/i386/librt.abilist + * sysdeps/unix/sysv/linux/ia64/librt.abilist + * sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist + * sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist + * sysdeps/unix/sysv/linux/microblaze/be/librt.abilist + * sysdeps/unix/sysv/linux/microblaze/le/librt.abilist + * sysdeps/unix/sysv/linux/mips/mips32/librt.abilist + * sysdeps/unix/sysv/linux/mips/mips64/librt.abilist + * sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist + * sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist + * sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist + * sysdeps/unix/sysv/linux/sh/librt.abilist + * sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist + * sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist + * sysdeps/unix/sysv/linux/x86_64/64/librt.abilist + * sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist: + Remove entries for clock_getres, clock_gettime, clock_settime, + clock_getcpuclockid, and clock_nanosleep. + + * sysdeps/mach/hurd/i386/libc.abilist + * sysdeps/unix/sysv/linux/alpha/libc.abilist + * sysdeps/unix/sysv/linux/arm/libc.abilist + * sysdeps/unix/sysv/linux/hppa/libc.abilist + * sysdeps/unix/sysv/linux/i386/libc.abilist + * sysdeps/unix/sysv/linux/ia64/libc.abilist + * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist + * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist + * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist + * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist + * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist + * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist + * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist + * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist + * sysdeps/unix/sysv/linux/sh/be/libc.abilist + * sysdeps/unix/sysv/linux/sh/le/libc.abilist + * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist + * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist + * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist + * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: + Add another set of entries for clock_getres, clock_gettime, + clock_settime, clock_getcpuclockid, and clock_nanosleep at + whatever version GLIBC_2.2 maps to. + 2019-09-03 Aurelien Jarno * sysdeps/alpha/fpu/libm-test-ulps: Regenerated using GCC 9.2. diff --git a/include/time.h b/include/time.h index ac3163c2a54..dcf91855add 100644 --- a/include/time.h +++ b/include/time.h @@ -18,12 +18,10 @@ libc_hidden_proto (localtime) libc_hidden_proto (strftime) libc_hidden_proto (strptime) -extern __typeof (clock_getres) __clock_getres; extern __typeof (clock_gettime) __clock_gettime; libc_hidden_proto (__clock_gettime) extern __typeof (clock_settime) __clock_settime; -extern __typeof (clock_nanosleep) __clock_nanosleep; -extern __typeof (clock_getcpuclockid) __clock_getcpuclockid; +libc_hidden_proto (__clock_settime) /* Now define the internal interfaces. */ struct tm; diff --git a/rt/Makefile b/rt/Makefile index 9ea83945658..e6fbc32438c 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -28,9 +28,6 @@ aio-routines := aio_cancel aio_error aio_fsync aio_misc aio_read \ aio_read64 aio_return aio_suspend aio_write \ aio_write64 lio_listio lio_listio64 aio_sigqueue \ aio_notify -clock-routines := clock_getcpuclockid \ - clock_getres clock_gettime clock_settime \ - clock_nanosleep timer-routines := timer_create timer_delete timer_getoverr \ timer_gettime timer_settime shm-routines := shm_open shm_unlink @@ -38,22 +35,18 @@ mq-routines := mq_open mq_close mq_unlink mq_getattr mq_setattr \ mq_notify mq_send mq_receive mq_timedsend \ mq_timedreceive -routines = $(clock-routines) - librt-routines = $(aio-routines) \ $(timer-routines) \ - $(shm-routines) $(mq-routines) \ - clock-compat + $(shm-routines) $(mq-routines) -tests := tst-shm tst-clock tst-clock_nanosleep tst-timer tst-timer2 \ +tests := tst-shm tst-timer tst-timer2 \ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \ tst-aio7 tst-aio8 tst-aio9 tst-aio10 \ tst-mqueue1 tst-mqueue2 tst-mqueue3 tst-mqueue4 \ tst-mqueue5 tst-mqueue6 tst-mqueue7 tst-mqueue8 tst-mqueue9 \ tst-timer3 tst-timer4 tst-timer5 \ - tst-cpuclock1 tst-cpuclock2 \ - tst-cputimer1 tst-cputimer2 tst-cputimer3 \ - tst-clock2 tst-shm-cancel + tst-cpuclock2 tst-cputimer1 tst-cputimer2 tst-cputimer3 \ + tst-shm-cancel extra-libs := librt extra-libs-others := $(extra-libs) diff --git a/rt/Versions b/rt/Versions index 91e3fd2a204..84d1345420d 100644 --- a/rt/Versions +++ b/rt/Versions @@ -1,15 +1,3 @@ -libc { - GLIBC_2.17 { - # c* - clock_getres; clock_gettime; clock_settime; clock_getcpuclockid; - clock_nanosleep; - } - GLIBC_PRIVATE { - __clock_getres; __clock_gettime; __clock_settime; __clock_getcpuclockid; - __clock_nanosleep; - } -} - librt { GLIBC_2.1 { # AIO functions. @@ -18,10 +6,6 @@ librt { aio_suspend64; aio_write; aio_write64; lio_listio; lio_listio64; } GLIBC_2.2 { - # These have moved to libc and are still here only for compatibility. - clock_getres; clock_gettime; clock_settime; clock_getcpuclockid; - clock_nanosleep; - # s* shm_open; shm_unlink; diff --git a/rt/clock-compat.c b/rt/clock-compat.c deleted file mode 100644 index d8ced3cdc1f..00000000000 --- a/rt/clock-compat.c +++ /dev/null @@ -1,63 +0,0 @@ -/* ABI compatibility redirects for clock_* symbols in librt. - Copyright (C) 2012-2019 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -/* The clock_* symbols were originally defined in librt and so - are part of its ABI. As of 2.17, they have moved to libc. - So we supply definitions for librt that just redirect to - their libc counterparts. */ - -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_17) - -#include - -#if HAVE_IFUNC -# undef INIT_ARCH -# define INIT_ARCH() -# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name) \ - compat_symbol (librt, name, name, GLIBC_2_2); -#else -# define COMPAT_REDIRECT(name, proto, arglist) \ - int \ - name proto \ - { \ - return __##name arglist; \ - } \ - compat_symbol (librt, name, name, GLIBC_2_2); -#endif - -COMPAT_REDIRECT (clock_getres, - (clockid_t clock_id, struct timespec *res), - (clock_id, res)) -COMPAT_REDIRECT (clock_gettime, - (clockid_t clock_id, struct timespec *tp), - (clock_id, tp)) -COMPAT_REDIRECT (clock_settime, - (clockid_t clock_id, const struct timespec *tp), - (clock_id, tp)) -COMPAT_REDIRECT (clock_getcpuclockid, - (pid_t pid, clockid_t *clock_id), - (pid, clock_id)) -COMPAT_REDIRECT (clock_nanosleep, - (clockid_t clock_id, int flags, - const struct timespec *req, - struct timespec *rem), - (clock_id, flags, req, rem)) - -#endif diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 1fc7ab2433f..7c2cb2b05a7 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -711,6 +711,11 @@ GLIBC_2.2.6 clntudp_bufcreate F GLIBC_2.2.6 clntudp_create F GLIBC_2.2.6 clntunix_create F GLIBC_2.2.6 clock F +GLIBC_2.2.6 clock_getcpuclockid F +GLIBC_2.2.6 clock_getres F +GLIBC_2.2.6 clock_gettime F +GLIBC_2.2.6 clock_nanosleep F +GLIBC_2.2.6 clock_settime F GLIBC_2.2.6 close F GLIBC_2.2.6 closedir F GLIBC_2.2.6 closelog F diff --git a/sysdeps/mach/hurd/i386/librt.abilist b/sysdeps/mach/hurd/i386/librt.abilist index d5fe32b3a99..3726e41f06c 100644 --- a/sysdeps/mach/hurd/i386/librt.abilist +++ b/sysdeps/mach/hurd/i386/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.2.6 aio_suspend F GLIBC_2.2.6 aio_suspend64 F GLIBC_2.2.6 aio_write F GLIBC_2.2.6 aio_write64 F -GLIBC_2.2.6 clock_getcpuclockid F -GLIBC_2.2.6 clock_getres F -GLIBC_2.2.6 clock_gettime F -GLIBC_2.2.6 clock_nanosleep F -GLIBC_2.2.6 clock_settime F GLIBC_2.2.6 lio_listio F GLIBC_2.2.6 lio_listio64 F GLIBC_2.2.6 shm_open F diff --git a/sysdeps/posix/clock_getres.c b/sysdeps/posix/clock_getres.c index 01024a3f558..e529cadb1f8 100644 --- a/sysdeps/posix/clock_getres.c +++ b/sysdeps/posix/clock_getres.c @@ -22,7 +22,7 @@ #include #include #include - +#include static inline int realtime_getres (struct timespec *res) @@ -62,4 +62,11 @@ __clock_getres (clockid_t clock_id, struct timespec *res) return retval; } -weak_alias (__clock_getres, clock_getres) + +versioned_symbol (libc, __clock_getres, clock_getres, GLIBC_2_17); +/* clock_getres moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_getres, __clock_getres_2); +compat_symbol (libc, __clock_getres_2, clock_getres, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/clock_gettime.c b/sysdeps/unix/clock_gettime.c index 10a6c96d9d6..2a82fc10666 100644 --- a/sysdeps/unix/clock_gettime.c +++ b/sysdeps/unix/clock_gettime.c @@ -17,24 +17,9 @@ . */ #include -#include #include #include -#include -#include - - -static inline int -realtime_gettime (struct timespec *tp) -{ - struct timeval tv; - int retval = __gettimeofday (&tv, NULL); - if (retval == 0) - /* Convert into `timespec'. */ - TIMEVAL_TO_TIMESPEC (&tv, tp); - return retval; -} - +#include /* Get current value of CLOCK and store it in TP. */ int @@ -60,5 +45,12 @@ __clock_gettime (clockid_t clock_id, struct timespec *tp) return retval; } -weak_alias (__clock_gettime, clock_gettime) libc_hidden_def (__clock_gettime) + +versioned_symbol (libc, __clock_gettime, clock_gettime, GLIBC_2_17); +/* clock_gettime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_gettime, __clock_gettime_2); +compat_symbol (libc, __clock_gettime_2, clock_gettime, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/clock_nanosleep.c b/sysdeps/unix/clock_nanosleep.c index b27608570ca..6a477520d11 100644 --- a/sysdeps/unix/clock_nanosleep.c +++ b/sysdeps/unix/clock_nanosleep.c @@ -20,6 +20,7 @@ #include #include #include +#include /* This implementation assumes that these is only a `nanosleep' system call. So we have to remap all other activities. */ @@ -76,4 +77,11 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, return __nanosleep (req, rem), 0 ? errno : 0; } -weak_alias (__clock_nanosleep, clock_nanosleep) + +versioned_symbol (libc, __clock_nanosleep, clock_nanosleep, GLIBC_2_17); +/* clock_nanosleep moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_nanosleep, __clock_nanosleep_2); +compat_symbol (libc, __clock_nanosleep_2, clock_nanosleep, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/clock_settime.c b/sysdeps/unix/clock_settime.c index 109a1ad8726..5b398491abc 100644 --- a/sysdeps/unix/clock_settime.c +++ b/sysdeps/unix/clock_settime.c @@ -18,8 +18,7 @@ #include #include #include -#include - +#include /* Set CLOCK to value TP. */ int @@ -51,4 +50,12 @@ __clock_settime (clockid_t clock_id, const struct timespec *tp) return retval; } -weak_alias (__clock_settime, clock_settime) +libc_hidden_def (__clock_settime) + +versioned_symbol (libc, __clock_settime, clock_settime, GLIBC_2_17); +/* clock_settime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_settime, __clock_settime_2); +compat_symbol (libc, __clock_settime_2, clock_settime, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index fe85a356200..e7f2174ac21 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -1863,6 +1863,11 @@ GLIBC_2.2 __xpg_sigpause F GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x48 GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist index d7a049cf600..71f86e03ce6 100644 --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index bc3df8dcea3..93719279270 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -766,6 +766,11 @@ GLIBC_2.4 clntudp_bufcreate F GLIBC_2.4 clntudp_create F GLIBC_2.4 clntunix_create F GLIBC_2.4 clock F +GLIBC_2.4 clock_getcpuclockid F +GLIBC_2.4 clock_getres F +GLIBC_2.4 clock_gettime F +GLIBC_2.4 clock_nanosleep F +GLIBC_2.4 clock_settime F GLIBC_2.4 clone F GLIBC_2.4 close F GLIBC_2.4 closedir F diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist index cfbbd275576..3c0647b2516 100644 --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.4 aio_suspend F GLIBC_2.4 aio_suspend64 F GLIBC_2.4 aio_write F GLIBC_2.4 aio_write64 F -GLIBC_2.4 clock_getcpuclockid F -GLIBC_2.4 clock_getres F -GLIBC_2.4 clock_gettime F -GLIBC_2.4 clock_nanosleep F -GLIBC_2.4 clock_settime F GLIBC_2.4 lio_listio F GLIBC_2.4 lio_listio64 F GLIBC_2.4 mq_close F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index bc3df8dcea3..93719279270 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -766,6 +766,11 @@ GLIBC_2.4 clntudp_bufcreate F GLIBC_2.4 clntudp_create F GLIBC_2.4 clntunix_create F GLIBC_2.4 clock F +GLIBC_2.4 clock_getcpuclockid F +GLIBC_2.4 clock_getres F +GLIBC_2.4 clock_gettime F +GLIBC_2.4 clock_nanosleep F +GLIBC_2.4 clock_settime F GLIBC_2.4 clone F GLIBC_2.4 close F GLIBC_2.4 closedir F diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist index cfbbd275576..3c0647b2516 100644 --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.4 aio_suspend F GLIBC_2.4 aio_suspend64 F GLIBC_2.4 aio_write F GLIBC_2.4 aio_write64 F -GLIBC_2.4 clock_getcpuclockid F -GLIBC_2.4 clock_getres F -GLIBC_2.4 clock_gettime F -GLIBC_2.4 clock_nanosleep F -GLIBC_2.4 clock_settime F GLIBC_2.4 lio_listio F GLIBC_2.4 lio_listio64 F GLIBC_2.4 mq_close F diff --git a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c index f4a652966fe..f2d8b916cb2 100644 --- a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c +++ b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c @@ -20,6 +20,7 @@ #include #include #include "kernel-posix-cpu-timers.h" +#include int __clock_getcpuclockid (pid_t pid, clockid_t *clock_id) @@ -45,4 +46,11 @@ __clock_getcpuclockid (pid_t pid, clockid_t *clock_id) else return INTERNAL_SYSCALL_ERRNO (r, err); } -weak_alias (__clock_getcpuclockid, clock_getcpuclockid) + +versioned_symbol (libc, __clock_getcpuclockid, clock_getcpuclockid, GLIBC_2_17); +/* clock_getcpuclockid moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_getcpuclockid, __clock_getcpuclockid_2); +compat_symbol (libc, __clock_getcpuclockid_2, clock_getcpuclockid, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c index 24b2299938c..18a7ce53c0a 100644 --- a/sysdeps/unix/sysv/linux/clock_getres.c +++ b/sysdeps/unix/sysv/linux/clock_getres.c @@ -26,10 +26,19 @@ #endif #include +#include + /* Get resolution of clock. */ int __clock_getres (clockid_t clock_id, struct timespec *res) { return INLINE_VSYSCALL (clock_getres, 2, clock_id, res); } -weak_alias (__clock_getres, clock_getres) + +versioned_symbol (libc, __clock_getres, clock_getres, GLIBC_2_17); +/* clock_getres moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_getres, __clock_getres_2); +compat_symbol (libc, __clock_getres_2, clock_getres, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/clock_gettime.c b/sysdeps/unix/sysv/linux/clock_gettime.c index 5fc47fb7dc7..7ad1c91be68 100644 --- a/sysdeps/unix/sysv/linux/clock_gettime.c +++ b/sysdeps/unix/sysv/linux/clock_gettime.c @@ -26,11 +26,20 @@ #endif #include +#include + /* Get current value of CLOCK and store it in TP. */ int __clock_gettime (clockid_t clock_id, struct timespec *tp) { return INLINE_VSYSCALL (clock_gettime, 2, clock_id, tp); } -weak_alias (__clock_gettime, clock_gettime) libc_hidden_def (__clock_gettime) + +versioned_symbol (libc, __clock_gettime, clock_gettime, GLIBC_2_17); +/* clock_gettime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_gettime, __clock_gettime_2); +compat_symbol (libc, __clock_gettime_2, clock_gettime, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/clock_nanosleep.c b/sysdeps/unix/sysv/linux/clock_nanosleep.c index 0cb6614dc92..e19e09d197d 100644 --- a/sysdeps/unix/sysv/linux/clock_nanosleep.c +++ b/sysdeps/unix/sysv/linux/clock_nanosleep.c @@ -21,6 +21,7 @@ #include #include "kernel-posix-cpu-timers.h" +#include /* We can simply use the syscall. The CPU clocks are not supported with this function. */ @@ -41,4 +42,11 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, return (INTERNAL_SYSCALL_ERROR_P (r, err) ? INTERNAL_SYSCALL_ERRNO (r, err) : 0); } -weak_alias (__clock_nanosleep, clock_nanosleep) + +versioned_symbol (libc, __clock_nanosleep, clock_nanosleep, GLIBC_2_17); +/* clock_nanosleep moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_nanosleep, __clock_nanosleep_2); +compat_symbol (libc, __clock_nanosleep_2, clock_nanosleep, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/clock_settime.c b/sysdeps/unix/sysv/linux/clock_settime.c index d837e3019c6..0586d157222 100644 --- a/sysdeps/unix/sysv/linux/clock_settime.c +++ b/sysdeps/unix/sysv/linux/clock_settime.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "kernel-posix-cpu-timers.h" @@ -34,4 +35,12 @@ __clock_settime (clockid_t clock_id, const struct timespec *tp) return INLINE_SYSCALL_CALL (clock_settime, clock_id, tp); } -weak_alias (__clock_settime, clock_settime) +libc_hidden_def (__clock_settime) + +versioned_symbol (libc, __clock_settime, clock_settime, GLIBC_2_17); +/* clock_settime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_settime, __clock_settime_2); +compat_symbol (libc, __clock_settime_2, clock_settime, GLIBC_2_2); +#endif diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 75edece94a1..df6d96fbae0 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -615,6 +615,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 clone F GLIBC_2.2 close F GLIBC_2.2 closedir F diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index edeaf8e7220..fcb625b6bf2 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -1869,6 +1869,11 @@ GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 alphasort64 F GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/i386/librt.abilist +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index b5d460eeb21..cb556c59987 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -627,6 +627,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 close F GLIBC_2.2 closedir F GLIBC_2.2 closelog F diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist index 804622a14ab..08384c90651 100644 --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 05633b3cb82..f3aa47d0902 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -755,6 +755,11 @@ GLIBC_2.4 clntudp_bufcreate F GLIBC_2.4 clntudp_create F GLIBC_2.4 clntunix_create F GLIBC_2.4 clock F +GLIBC_2.4 clock_getcpuclockid F +GLIBC_2.4 clock_getres F +GLIBC_2.4 clock_gettime F +GLIBC_2.4 clock_nanosleep F +GLIBC_2.4 clock_settime F GLIBC_2.4 clone F GLIBC_2.4 close F GLIBC_2.4 closedir F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist index cfbbd275576..3c0647b2516 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.4 aio_suspend F GLIBC_2.4 aio_suspend64 F GLIBC_2.4 aio_write F GLIBC_2.4 aio_write64 F -GLIBC_2.4 clock_getcpuclockid F -GLIBC_2.4 clock_getres F -GLIBC_2.4 clock_gettime F -GLIBC_2.4 clock_nanosleep F -GLIBC_2.4 clock_settime F GLIBC_2.4 lio_listio F GLIBC_2.4 lio_listio64 F GLIBC_2.4 mq_close F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 47eb7b46082..64d4623b6b1 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -1825,6 +1825,11 @@ GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 alphasort64 F GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist index fb85d8729e1..889dfbc0eef 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist @@ -14,11 +14,6 @@ GLIBC_2.18 aio_suspend F GLIBC_2.18 aio_suspend64 F GLIBC_2.18 aio_write F GLIBC_2.18 aio_write64 F -GLIBC_2.18 clock_getcpuclockid F -GLIBC_2.18 clock_getres F -GLIBC_2.18 clock_gettime F -GLIBC_2.18 clock_nanosleep F -GLIBC_2.18 clock_settime F GLIBC_2.18 lio_listio F GLIBC_2.18 lio_listio64 F GLIBC_2.18 mq_close F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist index fb85d8729e1..889dfbc0eef 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist @@ -14,11 +14,6 @@ GLIBC_2.18 aio_suspend F GLIBC_2.18 aio_suspend64 F GLIBC_2.18 aio_write F GLIBC_2.18 aio_write64 F -GLIBC_2.18 clock_getcpuclockid F -GLIBC_2.18 clock_getres F -GLIBC_2.18 clock_gettime F -GLIBC_2.18 clock_nanosleep F -GLIBC_2.18 clock_settime F GLIBC_2.18 lio_listio F GLIBC_2.18 lio_listio64 F GLIBC_2.18 mq_close F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index e49dc4272eb..06c2e64edde 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -1612,6 +1612,11 @@ GLIBC_2.2 capget F GLIBC_2.2 capset F GLIBC_2.2 cbc_crypt F GLIBC_2.2 clntunix_create F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 creat64 F GLIBC_2.2 dcngettext F GLIBC_2.2 des_setparity F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist index 84837c8a2ef..1539c1cef92 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.2 aio_suspend F GLIBC_2.2 aio_suspend64 F GLIBC_2.2 aio_write F GLIBC_2.2 aio_write64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 lio_listio F GLIBC_2.2 lio_listio64 F GLIBC_2.2 shm_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index daa3b60c5b0..bdfd073b860 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -1610,6 +1610,11 @@ GLIBC_2.2 capget F GLIBC_2.2 capset F GLIBC_2.2 cbc_crypt F GLIBC_2.2 clntunix_create F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 creat64 F GLIBC_2.2 dcngettext F GLIBC_2.2 des_setparity F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist index 84837c8a2ef..1539c1cef92 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.2 aio_suspend F GLIBC_2.2 aio_suspend64 F GLIBC_2.2 aio_write F GLIBC_2.2 aio_write64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 lio_listio F GLIBC_2.2 lio_listio64 F GLIBC_2.2 shm_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 457ce0b6f2a..3d61d4974a2 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -1611,6 +1611,11 @@ GLIBC_2.2 capget F GLIBC_2.2 capset F GLIBC_2.2 cbc_crypt F GLIBC_2.2 clntunix_create F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 creat64 F GLIBC_2.2 dcngettext F GLIBC_2.2 des_setparity F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 63d5c03bfb1..675acca5db2 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -1607,6 +1607,11 @@ GLIBC_2.2 capget F GLIBC_2.2 capset F GLIBC_2.2 cbc_crypt F GLIBC_2.2 clntunix_create F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 creat64 F GLIBC_2.2 dcngettext F GLIBC_2.2 des_setparity F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 9200a543098..1e8ff6f83e4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -1830,6 +1830,11 @@ GLIBC_2.2 __xstat64 F GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index ef7779905f6..b5a0751d90b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -1834,6 +1834,11 @@ GLIBC_2.2 __xstat64 F GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index 2860df8ebca..0c86217fc6c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -673,6 +673,11 @@ GLIBC_2.3 clntudp_bufcreate F GLIBC_2.3 clntudp_create F GLIBC_2.3 clntunix_create F GLIBC_2.3 clock F +GLIBC_2.3 clock_getcpuclockid F +GLIBC_2.3 clock_getres F +GLIBC_2.3 clock_gettime F +GLIBC_2.3 clock_nanosleep F +GLIBC_2.3 clock_settime F GLIBC_2.3 clone F GLIBC_2.3 close F GLIBC_2.3 closedir F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist index e76b7eb4956..6a5bd96963e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.3 aio_suspend F GLIBC_2.3 aio_suspend64 F GLIBC_2.3 aio_write F GLIBC_2.3 aio_write64 F -GLIBC_2.3 clock_getcpuclockid F -GLIBC_2.3 clock_getres F -GLIBC_2.3 clock_gettime F -GLIBC_2.3 clock_nanosleep F -GLIBC_2.3 clock_settime F GLIBC_2.3 lio_listio F GLIBC_2.3 lio_listio64 F GLIBC_2.3 shm_open F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 576295deff3..122d0fb65a5 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -1829,6 +1829,11 @@ GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 alphasort64 F GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index abf04736831..efe588a0728 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -632,6 +632,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 clone F GLIBC_2.2 close F GLIBC_2.2 closedir F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist index 41be3bb84b6..5905498a488 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.2 aio_suspend F GLIBC_2.2 aio_suspend64 F GLIBC_2.2 aio_write F GLIBC_2.2 aio_write64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 lio_listio F GLIBC_2.2 lio_listio64 F GLIBC_2.2 shm_open F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 41977f6e9c7..4b057bf4a2d 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -618,6 +618,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 clone F GLIBC_2.2 close F GLIBC_2.2 closedir F diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 41977f6e9c7..4b057bf4a2d 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -618,6 +618,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 clone F GLIBC_2.2 close F GLIBC_2.2 closedir F diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist index 595f1b712a4..bb03781dcc0 100644 --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 3d2f00ca527..49cd597fd65 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -1826,6 +1826,11 @@ GLIBC_2.2 __xstat64 F GLIBC_2.2 _flushlbf F GLIBC_2.2 _res_hconf D 0x30 GLIBC_2.2 bind_textdomain_codeset F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 dcngettext F GLIBC_2.2 dngettext F GLIBC_2.2 fgetpos F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist index cb874f41477..38f0aad7917 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 2f20643e8ec..95e68e0ba16 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -660,6 +660,11 @@ GLIBC_2.2 clntudp_bufcreate F GLIBC_2.2 clntudp_create F GLIBC_2.2 clntunix_create F GLIBC_2.2 clock F +GLIBC_2.2 clock_getcpuclockid F +GLIBC_2.2 clock_getres F +GLIBC_2.2 clock_gettime F +GLIBC_2.2 clock_nanosleep F +GLIBC_2.2 clock_settime F GLIBC_2.2 clone F GLIBC_2.2 close F GLIBC_2.2 closedir F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist index d7a049cf600..71f86e03ce6 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist @@ -15,11 +15,6 @@ GLIBC_2.1 aio_write F GLIBC_2.1 aio_write64 F GLIBC_2.1 lio_listio F GLIBC_2.1 lio_listio64 F -GLIBC_2.2 clock_getcpuclockid F -GLIBC_2.2 clock_getres F -GLIBC_2.2 clock_gettime F -GLIBC_2.2 clock_nanosleep F -GLIBC_2.2 clock_settime F GLIBC_2.2 shm_open F GLIBC_2.2 shm_unlink F GLIBC_2.2 timer_create F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 59f85d93736..1f2dbd1451f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -621,6 +621,11 @@ GLIBC_2.2.5 clntudp_bufcreate F GLIBC_2.2.5 clntudp_create F GLIBC_2.2.5 clntunix_create F GLIBC_2.2.5 clock F +GLIBC_2.2.5 clock_getcpuclockid F +GLIBC_2.2.5 clock_getres F +GLIBC_2.2.5 clock_gettime F +GLIBC_2.2.5 clock_nanosleep F +GLIBC_2.2.5 clock_settime F GLIBC_2.2.5 clone F GLIBC_2.2.5 close F GLIBC_2.2.5 closedir F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist index e2e8b60bf8e..95e3f22daa0 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist @@ -13,11 +13,6 @@ GLIBC_2.2.5 aio_suspend F GLIBC_2.2.5 aio_suspend64 F GLIBC_2.2.5 aio_write F GLIBC_2.2.5 aio_write64 F -GLIBC_2.2.5 clock_getcpuclockid F -GLIBC_2.2.5 clock_getres F -GLIBC_2.2.5 clock_gettime F -GLIBC_2.2.5 clock_nanosleep F -GLIBC_2.2.5 clock_settime F GLIBC_2.2.5 lio_listio F GLIBC_2.2.5 lio_listio64 F GLIBC_2.2.5 shm_open F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 67a4e238d63..59da85a5d8d 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -660,6 +660,11 @@ GLIBC_2.16 clntudp_create F GLIBC_2.16 clntunix_create F GLIBC_2.16 clock F GLIBC_2.16 clock_adjtime F +GLIBC_2.16 clock_getcpuclockid F +GLIBC_2.16 clock_getres F +GLIBC_2.16 clock_gettime F +GLIBC_2.16 clock_nanosleep F +GLIBC_2.16 clock_settime F GLIBC_2.16 clone F GLIBC_2.16 close F GLIBC_2.16 closedir F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist index 94e84e4dcfa..66969fb9ab8 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist @@ -14,11 +14,6 @@ GLIBC_2.16 aio_suspend F GLIBC_2.16 aio_suspend64 F GLIBC_2.16 aio_write F GLIBC_2.16 aio_write64 F -GLIBC_2.16 clock_getcpuclockid F -GLIBC_2.16 clock_getres F -GLIBC_2.16 clock_gettime F -GLIBC_2.16 clock_nanosleep F -GLIBC_2.16 clock_settime F GLIBC_2.16 lio_listio F GLIBC_2.16 lio_listio64 F GLIBC_2.16 mq_close F diff --git a/time/Makefile b/time/Makefile index a428f552457..85a62c0376b 100644 --- a/time/Makefile +++ b/time/Makefile @@ -36,14 +36,18 @@ routines := offtime asctime clock ctime ctime_r difftime \ stime dysize timegm ftime \ getdate strptime strptime_l \ strftime wcsftime strftime_l wcsftime_l \ - timespec_get + timespec_get \ + clock_getcpuclockid clock_getres \ + clock_gettime clock_settime clock_nanosleep + aux := era alt_digit lc-time-cleanup tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \ tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \ - tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 + tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ + tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 include ../Rules diff --git a/time/Versions b/time/Versions index fd838181e4f..8788e192ce3 100644 --- a/time/Versions +++ b/time/Versions @@ -49,6 +49,10 @@ libc { GLIBC_2.2 { # w* wcsftime; + + # c*; actually in librt in version 2.2, moved to libc in 2.17 + clock_getres; clock_gettime; clock_settime; clock_getcpuclockid; + clock_nanosleep; } GLIBC_2.3 { # these internal names are used by libstdc++ @@ -65,4 +69,13 @@ libc { GLIBC_2.16 { timespec_get; } + GLIBC_2.17 { + # c* + clock_getres; clock_gettime; clock_settime; clock_getcpuclockid; + clock_nanosleep; + } + GLIBC_PRIVATE { + # same as clock_gettime; used in other libraries + __clock_gettime; + } } diff --git a/rt/clock_getcpuclockid.c b/time/clock_getcpuclockid.c similarity index 75% rename from rt/clock_getcpuclockid.c rename to time/clock_getcpuclockid.c index 22b9f1383c8..8d205abfa96 100644 --- a/rt/clock_getcpuclockid.c +++ b/time/clock_getcpuclockid.c @@ -19,6 +19,7 @@ #include #include #include +#include int __clock_getcpuclockid (pid_t pid, clockid_t *clock_id) @@ -37,4 +38,10 @@ __clock_getcpuclockid (pid_t pid, clockid_t *clock_id) return ENOENT; #endif } -weak_alias (__clock_getcpuclockid, clock_getcpuclockid) +versioned_symbol (libc, __clock_getcpuclockid, clock_getcpuclockid, GLIBC_2_17); +/* clock_getcpuclockid moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_getcpuclockid, __clock_getcpuclockid_2); +compat_symbol (libc, __clock_getcpuclockid_2, clock_getcpuclockid, GLIBC_2_2); +#endif diff --git a/rt/clock_getres.c b/time/clock_getres.c similarity index 73% rename from rt/clock_getres.c rename to time/clock_getres.c index b990bf0af0f..412f80fbec3 100644 --- a/rt/clock_getres.c +++ b/time/clock_getres.c @@ -18,6 +18,7 @@ #include #include +#include /* Get resolution of clock. */ int @@ -26,5 +27,13 @@ __clock_getres (clockid_t clock_id, struct timespec *res) __set_errno (ENOSYS); return -1; } -weak_alias (__clock_getres, clock_getres) + +versioned_symbol (libc, __clock_getres, clock_getres, GLIBC_2_17); +/* clock_getres moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_getres, __clock_getres_2); +compat_symbol (libc, __clock_getres_2, clock_getres, GLIBC_2_2); +#endif + stub_warning (clock_getres) diff --git a/rt/clock_gettime.c b/time/clock_gettime.c similarity index 74% rename from rt/clock_gettime.c rename to time/clock_gettime.c index 0426dd2c764..92c6081dcb2 100644 --- a/rt/clock_gettime.c +++ b/time/clock_gettime.c @@ -18,6 +18,7 @@ #include #include +#include /* Get current value of CLOCK and store it in TP. */ int @@ -26,6 +27,14 @@ __clock_gettime (clockid_t clock_id, struct timespec *tp) __set_errno (ENOSYS); return -1; } -weak_alias (__clock_gettime, clock_gettime) libc_hidden_def (__clock_gettime) + +versioned_symbol (libc, __clock_gettime, clock_gettime, GLIBC_2_17); +/* clock_gettime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_gettime, __clock_gettime_2); +compat_symbol (libc, __clock_gettime_2, clock_gettime, GLIBC_2_2); +#endif + stub_warning (clock_gettime) diff --git a/rt/clock_nanosleep.c b/time/clock_nanosleep.c similarity index 76% rename from rt/clock_nanosleep.c rename to time/clock_nanosleep.c index 5b724e593bf..c53c820880a 100644 --- a/rt/clock_nanosleep.c +++ b/time/clock_nanosleep.c @@ -18,6 +18,7 @@ #include #include +#include int __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, @@ -33,5 +34,13 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, /* Not implemented. */ return ENOSYS; } -weak_alias (__clock_nanosleep, clock_nanosleep) + +versioned_symbol (libc, __clock_nanosleep, clock_nanosleep, GLIBC_2_17); +/* clock_nanosleep moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_nanosleep, __clock_nanosleep_2); +compat_symbol (libc, __clock_nanosleep_2, clock_nanosleep, GLIBC_2_2); +#endif + stub_warning (clock_nanosleep) diff --git a/rt/clock_settime.c b/time/clock_settime.c similarity index 71% rename from rt/clock_settime.c rename to time/clock_settime.c index 891925ab2c2..dd86a1c189d 100644 --- a/rt/clock_settime.c +++ b/time/clock_settime.c @@ -18,6 +18,7 @@ #include #include +#include /* Set CLOCK to value TP. */ int @@ -26,5 +27,14 @@ __clock_settime (clockid_t clock_id, const struct timespec *tp) __set_errno (ENOSYS); return -1; } -weak_alias (__clock_settime, clock_settime) +libc_hidden_def (__clock_settime) + +versioned_symbol (libc, __clock_settime, clock_settime, GLIBC_2_17); +/* clock_settime moved to libc in version 2.17; + old binaries may expect the symbol version it had in librt. */ +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17) +strong_alias (__clock_settime, __clock_settime_2); +compat_symbol (libc, __clock_settime_2, clock_settime, GLIBC_2_2); +#endif + stub_warning (clock_settime) diff --git a/rt/tst-clock.c b/time/tst-clock.c similarity index 100% rename from rt/tst-clock.c rename to time/tst-clock.c diff --git a/rt/tst-clock2.c b/time/tst-clock2.c similarity index 100% rename from rt/tst-clock2.c rename to time/tst-clock2.c diff --git a/rt/tst-clock_nanosleep.c b/time/tst-clock_nanosleep.c similarity index 100% rename from rt/tst-clock_nanosleep.c rename to time/tst-clock_nanosleep.c diff --git a/rt/tst-cpuclock1.c b/time/tst-cpuclock1.c similarity index 100% rename from rt/tst-cpuclock1.c rename to time/tst-cpuclock1.c