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/.
This commit is contained in:
Zack Weinberg 2019-09-04 08:18:57 +02:00 committed by Florian Weimer
parent b5367a08ae
commit 7b5af2d8f2
72 changed files with 382 additions and 243 deletions

104
ChangeLog
View File

@ -1,3 +1,107 @@
2019-09-04 Zack Weinberg <zackw@panix.com>
[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 <aurelien@aurel32.net>
* sysdeps/alpha/fpu/libm-test-ulps: Regenerated using GCC 9.2.

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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
<http://www.gnu.org/licenses/>. */
#include <shlib-compat.h>
/* 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 <time.h>
#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

View File

@ -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

View File

@ -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

View File

@ -22,7 +22,7 @@
#include <unistd.h>
#include <sys/param.h>
#include <libc-internal.h>
#include <shlib-compat.h>
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

View File

@ -17,24 +17,9 @@
<http://www.gnu.org/licenses/>. */
#include <errno.h>
#include <stdint.h>
#include <time.h>
#include <sys/time.h>
#include <libc-internal.h>
#include <ldsodefs.h>
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 <shlib-compat.h>
/* 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

View File

@ -20,6 +20,7 @@
#include <errno.h>
#include <time.h>
#include <sysdep-cancel.h>
#include <shlib-compat.h>
/* 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

View File

@ -18,8 +18,7 @@
#include <errno.h>
#include <time.h>
#include <sys/time.h>
#include <ldsodefs.h>
#include <shlib-compat.h>
/* 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -20,6 +20,7 @@
#include <time.h>
#include <unistd.h>
#include "kernel-posix-cpu-timers.h"
#include <shlib-compat.h>
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

View File

@ -26,10 +26,19 @@
#endif
#include <sysdep-vdso.h>
#include <shlib-compat.h>
/* 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

View File

@ -26,11 +26,20 @@
#endif
#include <sysdep-vdso.h>
#include <shlib-compat.h>
/* 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

View File

@ -21,6 +21,7 @@
#include <sysdep-cancel.h>
#include "kernel-posix-cpu-timers.h"
#include <shlib-compat.h>
/* 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

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <sysdep.h>
#include <time.h>
#include <shlib-compat.h>
#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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}
}

View File

@ -19,6 +19,7 @@
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <shlib-compat.h>
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

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <time.h>
#include <shlib-compat.h>
/* 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)

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <time.h>
#include <shlib-compat.h>
/* 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)

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <time.h>
#include <shlib-compat.h>
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)

View File

@ -18,6 +18,7 @@
#include <errno.h>
#include <time.h>
#include <shlib-compat.h>
/* 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)