[33/34] Linux: Move timer_settime, __timer_settime64 from librt to libc

Message ID 4b9505e130a2d1f740c39b5de849aa5a79372a8c.1623956058.git.fweimer@redhat.com
State Superseded
Delegated to: Adhemerval Zanella Netto
Headers
Series Move librt into libc |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Florian Weimer June 17, 2021, 6:59 p.m. UTC
  The symbols were moved using scripts/move-symbol-to-libc.py.

The way the ABI intransition is implemented is changed with this
commit: the implementation is now consolidated in one file with a
TIMER_T_WAS_INT_COMPAT check.

The shared librt is now empty, so this commit adds a placeholder
symbol at the base version, GLIBC_2.2, and potentially at the
GLIBC_2.3.3 version as well (the leftover from the int/timer_t ABI
transition).
---
 include/time.h                                |  6 +-
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  8 +-
 rt/librt-compat.c                             | 16 ++--
 sysdeps/unix/sysv/linux/Versions              | 20 ++---
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 +-
 sysdeps/unix/sysv/linux/alpha/Versions        |  4 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/alpha/librt-compat.c  |  2 +-
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  4 +-
 sysdeps/unix/sysv/linux/alpha/timer_settime.c |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 +-
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  3 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  3 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 +-
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 +-
 sysdeps/unix/sysv/linux/ia64/Versions         |  6 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  4 +-
 sysdeps/unix/sysv/linux/ia64/timer_settime.c  |  1 -
 sysdeps/unix/sysv/linux/librt-compat.c        | 26 +++++++
 .../sysv/linux/m68k/coldfire/libc.abilist     |  3 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |  3 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  3 +
 .../sysv/linux/microblaze/be/librt.abilist    |  3 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  3 +
 .../sysv/linux/microblaze/le/librt.abilist    |  3 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |  3 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 +-
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 +-
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
 .../linux/powerpc/powerpc32/librt.abilist     |  3 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
 .../sysv/linux/powerpc/powerpc64/Versions     |  7 --
 .../linux/powerpc/powerpc64/be/libc.abilist   |  3 +
 .../linux/powerpc/powerpc64/be/librt.abilist  |  4 +-
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 +-
 .../linux/powerpc/powerpc64/timer_settime.c   |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 +-
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 +-
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  3 +-
 sysdeps/unix/sysv/linux/s390/s390-64/Versions |  7 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 +
 .../sysv/linux/s390/s390-64/librt.abilist     |  4 +-
 .../sysv/linux/s390/s390-64/timer_settime.c   |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 +-
 sysdeps/unix/sysv/linux/sparc/librt-compat.c  |  2 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |  3 +-
 .../unix/sysv/linux/sparc/sparc64/Versions    |  7 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc64/librt.abilist    |  4 +-
 .../sysv/linux/sparc/sparc64/timer_settime.c  |  1 -
 sysdeps/unix/sysv/linux/timer_settime.c       | 73 +++++++++++++++----
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 +
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  4 +-
 sysdeps/unix/sysv/linux/x86_64/Versions       |  7 --
 sysdeps/unix/sysv/linux/x86_64/compat-timer.h | 37 ----------
 .../unix/sysv/linux/x86_64/timer_settime.c    | 44 -----------
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 +-
 84 files changed, 245 insertions(+), 212 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_settime.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_settime.c
 create mode 100644 sysdeps/unix/sysv/linux/librt-compat.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/compat-timer.h
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_settime.c
  

Comments

Adhemerval Zanella June 24, 2021, 5:42 p.m. UTC | #1
On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> 
> The way the ABI intransition is implemented is changed with this
> commit: the implementation is now consolidated in one file with a
> TIMER_T_WAS_INT_COMPAT check.
> 
> The shared librt is now empty, so this commit adds a placeholder
> symbol at the base version, GLIBC_2.2, and potentially at the
> GLIBC_2.3.3 version as well (the leftover from the int/timer_t ABI
> transition).

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  include/time.h                                |  6 +-
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  8 +-
>  rt/librt-compat.c                             | 16 ++--
>  sysdeps/unix/sysv/linux/Versions              | 20 ++---
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 +-
>  sysdeps/unix/sysv/linux/alpha/Versions        |  4 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/alpha/librt-compat.c  |  2 +-
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  4 +-
>  sysdeps/unix/sysv/linux/alpha/timer_settime.c |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 +-
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  3 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 +-
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  3 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 +-
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 +-
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 +-
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 +-
>  sysdeps/unix/sysv/linux/ia64/Versions         |  6 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  4 +-
>  sysdeps/unix/sysv/linux/ia64/timer_settime.c  |  1 -
>  sysdeps/unix/sysv/linux/librt-compat.c        | 26 +++++++
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  3 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  3 +-
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 +-
>  .../sysv/linux/microblaze/be/libc.abilist     |  3 +
>  .../sysv/linux/microblaze/be/librt.abilist    |  3 +-
>  .../sysv/linux/microblaze/le/libc.abilist     |  3 +
>  .../sysv/linux/microblaze/le/librt.abilist    |  3 +-
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  3 +-
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 +-
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 +-
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 +-
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
>  .../linux/powerpc/powerpc32/librt.abilist     |  3 +-
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
>  .../sysv/linux/powerpc/powerpc64/Versions     |  7 --
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  3 +
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  4 +-
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 +-
>  .../linux/powerpc/powerpc64/timer_settime.c   |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 +-
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 +-
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |  3 +-
>  sysdeps/unix/sysv/linux/s390/s390-64/Versions |  7 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 +
>  .../sysv/linux/s390/s390-64/librt.abilist     |  4 +-
>  .../sysv/linux/s390/s390-64/timer_settime.c   |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 +-
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 +-
>  sysdeps/unix/sysv/linux/sparc/librt-compat.c  |  2 +-
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  3 +-
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  7 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  4 +-
>  .../sysv/linux/sparc/sparc64/timer_settime.c  |  1 -
>  sysdeps/unix/sysv/linux/timer_settime.c       | 73 +++++++++++++++----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 +
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  4 +-
>  sysdeps/unix/sysv/linux/x86_64/Versions       |  7 --
>  sysdeps/unix/sysv/linux/x86_64/compat-timer.h | 37 ----------
>  .../unix/sysv/linux/x86_64/timer_settime.c    | 44 -----------
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 +-
>  84 files changed, 245 insertions(+), 212 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_settime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_settime.c
>  create mode 100644 sysdeps/unix/sysv/linux/librt-compat.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/compat-timer.h
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> 
> diff --git a/include/time.h b/include/time.h
> index 3f4ff44ac3..22b29ca583 100644
> --- a/include/time.h
> +++ b/include/time.h
> @@ -236,7 +236,11 @@ extern int __timer_settime64 (timer_t timerid, int flags,
>  extern int __timerfd_settime64 (int fd, int flags,
>                                  const struct __itimerspec64 *value,
>                                  struct __itimerspec64 *ovalue);
> -librt_hidden_proto (__timer_settime64);
> +# if PTHREAD_IN_LIBC
> +libc_hidden_proto (__timer_settime64)
> +#else
> +librt_hidden_proto (__timer_settime64)
> +#endif
>  libc_hidden_proto (__timerfd_settime64);
>  #endif
>  

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index e2ef5f4b0b..c1e989ede8 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  timer_settime \
>  
>  librt-shared-only-routines = librt-compat
>  
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    timer_delete \
>    timer_getoverr \
>    timer_gettime \
> +  timer_settime \
>  
>  tests := tst-shm tst-timer tst-timer2 \
>  	 tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index d1f05af013..7e41beae06 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -26,6 +26,7 @@ libc {
>      timer_delete;
>      timer_getoverrun;
>      timer_gettime;
> +    timer_settime;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -89,6 +90,7 @@ libc {
>      timer_delete;
>      timer_getoverrun;
>      timer_gettime;
> +    timer_settime;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -132,13 +134,15 @@ librt {
>  %endif
>    }
>    GLIBC_2.2 {
> -%if !PTHREAD_IN_LIBC
> +%if PTHREAD_IN_LIBC
> +    __librt_version_placeholder;
> +%else
>      timer_create;
>      timer_delete;
>      timer_getoverrun;
>      timer_gettime;
> -%endif
>      timer_settime;
> +%endif
>    }
>    GLIBC_2.3.4 {
>  %if PTHREAD_IN_LIBC

Ok.

> diff --git a/rt/librt-compat.c b/rt/librt-compat.c
> index 24c2ed9db4..84f50c82a9 100644
> --- a/rt/librt-compat.c
> +++ b/rt/librt-compat.c
> @@ -20,6 +20,7 @@
>  # include <shlib-compat.h>
>  # include <sys/cdefs.h>
>  
> +# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
>  void
>  attribute_compat_text_section
>  __attribute_used__
> @@ -27,25 +28,26 @@ __librt_version_placeholder_1 (void)
>  {
>  }
>  
> -# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_2)
>  compat_symbol (librt, __librt_version_placeholder_1,
>                 __librt_version_placeholder, GLIBC_2_1);
>  # endif
>  
> -# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34) \
> -  && ABI_librt_GLIBC_2_3_4 != ABI_librt_GLIBC_2_1
> +# if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_2);
> +# endif
> +
> +# if SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
>  compat_symbol (librt, __librt_version_placeholder_1,
>                 __librt_version_placeholder, GLIBC_2_3_4);
>  # endif
>  
> -# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)        \
> -  && ABI_librt_GLIBC_2_4 != ABI_librt_GLIBC_2_1
> +# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
>  compat_symbol (librt, __librt_version_placeholder_1,
>                 __librt_version_placeholder, GLIBC_2_4);
>  # endif
>  
> -# if SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34) \
> -  && ABI_librt_GLIBC_2_7 != ABI_librt_GLIBC_2_4
> +# if SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34)
>  compat_symbol (librt, __librt_version_placeholder_1,
>                 __librt_version_placeholder, GLIBC_2_7);
>  # endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 9bb9d955a5..578d55e7fd 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -127,6 +127,7 @@ libc {
>      timer_delete;
>      timer_getoverrun;
>      timer_gettime;
> +    timer_settime;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;
> @@ -269,6 +270,7 @@ libc {
>      __time64;
>      __timegm64;
>      __timer_gettime64;
> +    __timer_settime64;
>      __timerfd_gettime64;
>      __timerfd_settime64;
>      __timespec_get64;
> @@ -300,18 +302,18 @@ libc {
>    }
>  }
>  
> -ld {
> -  GLIBC_PRIVATE {
> -    __nptl_change_stack_perm;
> +librt {
> +  GLIBC_2.3.3 {
> +    # Leftover from the int -> timer_t transition.  For ABIs that came later
> +    # and do not have the symbol version, this version node is merged with
> +    # the baseline version.
> +    __librt_version_placeholder;
>    }
>  }
>  
> -librt {
> -  GLIBC_2.34 {
> -%ifdef TIME64_NON_DEFAULT
> -    # 64-bit time_t support
> -    __timer_settime64;
> -%endif
> +ld {
> +  GLIBC_PRIVATE {
> +    __nptl_change_stack_perm;
>    }
>  }
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 23130c3c9e..5ff33f63e3 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2010,6 +2010,7 @@ GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
> +GLIBC_2.17 timer_settime F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2537,6 +2538,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 2cb1369ddb..88d0fc382f 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.17 timer_settime F
> +GLIBC_2.17 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index 0359822d6d..87ef61437d 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -102,8 +102,4 @@ librt {
>    GLIBC_2.3 {
>      __librt_version_placeholder;
>    }
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 1f2fff3443..503a96b255 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2097,6 +2097,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2361,6 +2362,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 _OtsAddX F
>  GLIBC_2.3.4 _OtsConvertFloatTX F
>  GLIBC_2.3.4 _OtsConvertFloatXT F
> @@ -2635,6 +2637,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt-compat.c b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
> index 96e92e1637..7c699d3395 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt-compat.c
> +++ b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
> @@ -16,7 +16,7 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <rt/librt-compat.c>
> +#include <sysdeps/unix/sysv/linux/librt-compat.c>
>  
>  #if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
>  compat_symbol (librt, __librt_version_placeholder_1,

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index a2de1ecd94..f68e03dfde 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,7 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_settime.c b/sysdeps/unix/sysv/linux/alpha/timer_settime.c
> deleted file mode 100644
> index fa231149d5..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_settime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 8ece5c40fb..e29bd7cd55 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1944,6 +1944,7 @@ GLIBC_2.32 timer_create F
>  GLIBC_2.32 timer_delete F
>  GLIBC_2.32 timer_getoverrun F
>  GLIBC_2.32 timer_gettime F
> +GLIBC_2.32 timer_settime F
>  GLIBC_2.32 timerfd_create F
>  GLIBC_2.32 timerfd_gettime F
>  GLIBC_2.32 timerfd_settime F
> @@ -2296,6 +2297,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 0023244be6..f77591fa3e 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.32 timer_settime F
> +GLIBC_2.32 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 515c3a224a..ac89f19c0a 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -272,6 +272,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -439,6 +440,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2359,6 +2361,7 @@ GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
> +GLIBC_2.4 timer_settime F
>  GLIBC_2.4 times F
>  GLIBC_2.4 timezone D 0x4
>  GLIBC_2.4 tmpfile F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 2f84162558..0010b34d5c 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_settime F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 7b7ca7d348..07fce73516 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -269,6 +269,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -436,6 +437,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2356,6 +2358,7 @@ GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
> +GLIBC_2.4 timer_settime F
>  GLIBC_2.4 times F
>  GLIBC_2.4 timezone D 0x4
>  GLIBC_2.4 tmpfile F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 2f84162558..0010b34d5c 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_settime F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index d53acb2c08..d06f38eba0 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2034,6 +2034,7 @@ GLIBC_2.29 timer_create F
>  GLIBC_2.29 timer_delete F
>  GLIBC_2.29 timer_getoverrun F
>  GLIBC_2.29 timer_gettime F
> +GLIBC_2.29 timer_settime F
>  GLIBC_2.29 timerfd_create F
>  GLIBC_2.29 timerfd_gettime F
>  GLIBC_2.29 timerfd_settime F
> @@ -2393,6 +2394,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2560,6 +2562,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 52b2819a7d..1a55315b87 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.29 timer_settime F
> -GLIBC_2.34 __timer_settime64 F
> +GLIBC_2.29 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index a592e3f628..2f5dfd66ad 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1748,6 +1748,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2346,6 +2347,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2513,6 +2515,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index bd3824cb88..1accf0a9c1 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2110,6 +2110,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2530,6 +2531,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2697,6 +2699,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index 9a7faf067a..9900916a6c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -27,9 +27,3 @@ libc {
>      recvmsg; sendmsg;
>    }
>  }
> -librt {
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
> -}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index d589ce16d6..79b4153e63 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1769,6 +1769,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2226,6 +2227,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2473,6 +2475,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 7d8e91b0d9..ff77c0d32e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,6 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_settime.c b/sysdeps/unix/sysv/linux/ia64/timer_settime.c
> deleted file mode 100644
> index fa231149d5..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_settime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/librt-compat.c b/sysdeps/unix/sysv/linux/librt-compat.c
> new file mode 100644
> index 0000000000..f8b09908a2
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/librt-compat.c
> @@ -0,0 +1,26 @@
> +/* Placeholder definitions to pull in removed symbol versions.  Linux version.
> +   Copyright (C) 2021 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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <rt/librt-compat.c>
> +#include <kernel-posix-timers.h>
> +
> +/* GLIBC_2.3.3 symbols were added for the int -> timer_t ABI transition.  */
> +#if TIMER_T_WAS_INT_COMPAT
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_3_3);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 7e986dcfd5..ddbaeb3660 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -273,6 +273,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -440,6 +441,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2339,6 +2341,7 @@ GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
> +GLIBC_2.4 timer_settime F
>  GLIBC_2.4 times F
>  GLIBC_2.4 timezone D 0x4
>  GLIBC_2.4 tmpfile F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 2f84162558..0010b34d5c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_settime F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 97fe827b8d..3295de3102 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2066,6 +2066,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2473,6 +2474,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2640,6 +2642,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 56b5f885b7..18d8e9d748 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2014,6 +2014,7 @@ GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
> +GLIBC_2.18 timer_settime F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2444,6 +2445,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2611,6 +2613,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 8a4faf155c..825b445ef7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.18 timer_settime F
> -GLIBC_2.34 __timer_settime64 F
> +GLIBC_2.18 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 8910180ff8..2de03396dd 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2014,6 +2014,7 @@ GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
> +GLIBC_2.18 timer_settime F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2441,6 +2442,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2608,6 +2610,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 8a4faf155c..825b445ef7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.18 timer_settime F
> -GLIBC_2.34 __timer_settime64 F
> +GLIBC_2.18 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index e81456caf7..302af0376d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1997,6 +1997,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2438,6 +2439,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2605,6 +2607,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 211a60584c..a7f1518c0b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index ecbad99217..50e51bf15d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1995,6 +1995,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2436,6 +2437,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2603,6 +2605,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 986b16ece3..99be006a91 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1993,6 +1993,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2444,6 +2445,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2611,6 +2613,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 211a60584c..a7f1518c0b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 141e1b295f..f3c39841dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1989,6 +1989,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2525,6 +2526,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 406120e1d8..a7f1518c0b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,4 +1,4 @@
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 71dc98ecf7..55f3102cbf 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2056,6 +2056,7 @@ GLIBC_2.21 timer_create F
>  GLIBC_2.21 timer_delete F
>  GLIBC_2.21 timer_getoverrun F
>  GLIBC_2.21 timer_gettime F
> +GLIBC_2.21 timer_settime F
>  GLIBC_2.21 timerfd_create F
>  GLIBC_2.21 timerfd_gettime F
>  GLIBC_2.21 timerfd_settime F
> @@ -2483,6 +2484,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2650,6 +2652,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index c162738eae..834a4dcc7a 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.21 timer_settime F
> -GLIBC_2.34 __timer_settime64 F
> +GLIBC_2.21 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 03a0a0579a..82144c268e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2071,6 +2071,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2500,6 +2501,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2667,6 +2669,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 793531d9c4..4545f49cee 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2075,6 +2075,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2533,6 +2534,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2700,6 +2702,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> index 8607ac1012..0cdda49402 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -25,10 +25,3 @@ libc {
>      __ppc_get_timebase_freq;
>    }
>  }
> -
> -librt {
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
> -}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 21763f0238..d47efa98ff 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1890,6 +1890,7 @@ GLIBC_2.3 timer_create F
>  GLIBC_2.3 timer_delete F
>  GLIBC_2.3 timer_getoverrun F
>  GLIBC_2.3 timer_gettime F
> +GLIBC_2.3 timer_settime F
>  GLIBC_2.3 times F
>  GLIBC_2.3 timezone D 0x8
>  GLIBC_2.3 tmpfile F
> @@ -2170,6 +2171,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2437,6 +2439,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index bfaae8ac0e..506870e3fd 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,5 @@
> -GLIBC_2.3 timer_settime F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.3 __librt_version_placeholder F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index ec8a207385..e08cbf7b2a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2098,6 +2098,7 @@ GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
> +GLIBC_2.17 timer_settime F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2733,6 +2734,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 2cb1369ddb..88d0fc382f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.17 timer_settime F
> +GLIBC_2.17 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
> deleted file mode 100644
> index fa231149d5..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index c7b749f6a7..a8482733cd 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1954,6 +1954,7 @@ GLIBC_2.33 timer_create F
>  GLIBC_2.33 timer_delete F
>  GLIBC_2.33 timer_getoverrun F
>  GLIBC_2.33 timer_gettime F
> +GLIBC_2.33 timer_settime F
>  GLIBC_2.33 timerfd_create F
>  GLIBC_2.33 timerfd_gettime F
>  GLIBC_2.33 timerfd_settime F
> @@ -2298,6 +2299,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index c59f14490e..b8af976642 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.33 timer_settime F
> +GLIBC_2.33 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 33e13783fc..a2448c1c74 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2020,6 +2020,7 @@ GLIBC_2.27 timer_create F
>  GLIBC_2.27 timer_delete F
>  GLIBC_2.27 timer_getoverrun F
>  GLIBC_2.27 timer_gettime F
> +GLIBC_2.27 timer_settime F
>  GLIBC_2.27 timerfd_create F
>  GLIBC_2.27 timerfd_gettime F
>  GLIBC_2.27 timerfd_settime F
> @@ -2498,6 +2499,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 62ff23fd04..d7902a3ec7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.27 timer_settime F
> +GLIBC_2.27 __librt_version_placeholder F

Ok.


> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 6681f84af2..5ee1e09391 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2069,6 +2069,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2498,6 +2499,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2665,6 +2667,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> index 5c682764ad..83092db48e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> @@ -5,10 +5,3 @@ libc {
>      __frame_state_for; __register_frame_info_table;
>    }
>  }
> -
> -librt {
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
> -}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index e97c113408..1cd10e7e77 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1765,6 +1765,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2216,6 +2217,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2474,6 +2476,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index f851eea81e..7dac2342ac 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,5 @@
> -GLIBC_2.2 timer_settime F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
> deleted file mode 100644
> index fa231149d5..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 360802cf78..c621caae80 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1752,6 +1752,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2353,6 +2354,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2520,6 +2522,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index e9cb3ff8f1..ba459df43a 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1752,6 +1752,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2350,6 +2351,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2517,6 +2519,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 179d1d53da..6d24ce527d 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/librt-compat.c b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
> index a3862ba127..17a7895703 100644
> --- a/sysdeps/unix/sysv/linux/sparc/librt-compat.c
> +++ b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
> @@ -16,7 +16,7 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <rt/librt-compat.c>
> +#include <sysdeps/unix/sysv/linux/librt-compat.c>
>  
>  #if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
>  compat_symbol (librt, __librt_version_placeholder_1,

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 2af5948dd7..5e0eed47e3 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2064,6 +2064,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2493,6 +2494,7 @@ GLIBC_2.34 __thrd_sleep64 F
>  GLIBC_2.34 __time64 F
>  GLIBC_2.34 __timegm64 F
>  GLIBC_2.34 __timer_gettime64 F
> +GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.34 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2660,6 +2662,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index dc0a3c4dfb..7ff1ca83b1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,7 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> index 5e8f59ceae..cc152489f6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -10,10 +10,3 @@ libc {
>      wordexp;
>    }
>  }
> -
> -librt {
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
> -}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index fde5b780a6..99e6181e24 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1795,6 +1795,7 @@ GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
> +GLIBC_2.2 timer_settime F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2250,6 +2251,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2496,6 +2498,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index a2de1ecd94..f68e03dfde 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,7 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_settime F
> +GLIBC_2.2 __librt_version_placeholder F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
> deleted file mode 100644
> index fa231149d5..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_settime.c b/sysdeps/unix/sysv/linux/timer_settime.c
> index b8326e36a4..cbe430480d 100644
> --- a/sysdeps/unix/sysv/linux/timer_settime.c
> +++ b/sysdeps/unix/sysv/linux/timer_settime.c
> @@ -22,27 +22,29 @@
>  #include <sysdep.h>
>  #include <kernel-features.h>
>  #include <kernel-posix-timers.h>
> +#include <shlib-compat.h>
>  
> +#if !TIMER_T_WAS_INT_COMPAT
>  int
> -__timer_settime64 (timer_t timerid, int flags,
> +___timer_settime64 (timer_t timerid, int flags,
>                     const struct __itimerspec64 *value,
>                     struct __itimerspec64 *ovalue)
>  {
>    kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
>  
> -#ifdef __ASSUME_TIME64_SYSCALLS
> -# ifndef __NR_timer_settime64
> -#  define __NR_timer_settime64 __NR_timer_settime
> -# endif
> +# ifdef __ASSUME_TIME64_SYSCALLS
> +#  ifndef __NR_timer_settime64
> +#   define __NR_timer_settime64 __NR_timer_settime
> +#  endif
>    return INLINE_SYSCALL_CALL (timer_settime64, ktimerid, flags, value,
>                                ovalue);
> -#else
> -# ifdef __NR_timer_settime64
> +# else
> +#  ifdef __NR_timer_settime64
>    int ret = INLINE_SYSCALL_CALL (timer_settime64, ktimerid, flags, value,
>                                   ovalue);
>    if (ret == 0 || errno != ENOSYS)
>      return ret;
> -# endif
> +#  endif
>    struct itimerspec its32, oits32;
>  
>    if (! in_time_t_range ((value->it_value).tv_sec)
> @@ -64,11 +66,18 @@ __timer_settime64 (timer_t timerid, int flags,
>      }
>  
>    return retval;
> -#endif
> +# endif
>  }
>  
> -#if __TIMESIZE != 64
> -librt_hidden_def (__timer_settime64)
> +# if __TIMESIZE == 64
> +versioned_symbol (libc, ___timer_settime64, timer_settime, GLIBC_2_34);
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_settime64, timer_settime, GLIBC_2_2);
> +#  endif
> +
> +#else /* __TIMESIZE != 64 */
> +libc_hidden_ver (___timer_settime64, __timer_settime64)
> +versioned_symbol (libc, ___timer_settime64, __timer_settime64, GLIBC_2_34);
>  
>  int
>  __timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
> @@ -89,5 +98,43 @@ __timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
>  
>    return retval;
>  }
> -#endif
> -weak_alias (__timer_settime, timer_settime)
> +versioned_symbol (libc, __timer_settime, timer_settime, GLIBC_2_34);
> +
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, __timer_settime, timer_settime, GLIBC_2_2);
> +#  endif
> +# endif /* __TIMESIZE != 64 */
> +
> +#else /* TIMER_T_WAS_INT_COMPAT */
> +
> +extern __typeof (timer_settime) __timer_settime_new;
> +libc_hidden_proto (__timer_settime_new)
> +
> +int
> +___timer_settime_new (timer_t timerid, int flags,
> +                      const struct itimerspec *value,
> +                      struct itimerspec *ovalue)
> +{
> +  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
> +
> +  return INLINE_SYSCALL_CALL (timer_settime, ktimerid, flags, value, ovalue);
> +}
> +versioned_symbol (libc, ___timer_settime_new, timer_settime, GLIBC_2_34);
> +libc_hidden_ver (___timer_settime_new, __timer_settime_new)
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_settime_new, timer_settime, GLIBC_2_3_3);
> +# endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +int
> +__timer_settime_old (int timerid, int flags, const struct itimerspec *value,
> +                     struct itimerspec *ovalue)
> +{
> +  return __timer_settime_new (__timer_compat_list[timerid], flags,
> +                              value, ovalue);
> +}
> +compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);
> +# endif
> +
> +#endif /* TIMER_T_WAS_INT_COMPAT */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 87dc534709..2460b47dc7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1764,6 +1764,7 @@ GLIBC_2.2.5 timer_create F
>  GLIBC_2.2.5 timer_delete F
>  GLIBC_2.2.5 timer_getoverrun F
>  GLIBC_2.2.5 timer_gettime F
> +GLIBC_2.2.5 timer_settime F
>  GLIBC_2.2.5 times F
>  GLIBC_2.2.5 timezone D 0x8
>  GLIBC_2.2.5 tmpfile F
> @@ -2204,6 +2205,7 @@ GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.3 timer_gettime F
> +GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2452,6 +2454,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 913835d267..752a38a6df 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,5 @@
> -GLIBC_2.2.5 timer_settime F
> -GLIBC_2.3.3 timer_settime F
> +GLIBC_2.2.5 __librt_version_placeholder F
> +GLIBC_2.3.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
> index 8deeb8908a..fd1b3cc296 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/Versions
> +++ b/sysdeps/unix/sysv/linux/x86_64/Versions
> @@ -7,10 +7,3 @@ libc {
>      modify_ldt;
>    }
>  }
> -
> -librt {
> -  GLIBC_2.3.3 {
> -    # Changed timer_t.
> -    timer_settime;
> -  }
> -}
> diff --git a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
> deleted file mode 100644
> index c61eb40070..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
> -
> -   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; see the file COPYING.LIB.  If
> -   not, see <https://www.gnu.org/licenses/>.  */
> -
> -#include <signal.h>
> -#include <time.h>
> -#include <sys/types.h>
> -
> -extern int __timer_getoverrun_new (timer_t timerid);
> -extern int __timer_gettime_new (timer_t timerid, struct itimerspec *value);
> -extern int __timer_settime_new (timer_t timerid, int flags,
> -				const struct itimerspec *value,
> -				struct itimerspec *ovalue);
> -
> -
> -extern int __timer_create_old (clockid_t clock_id, struct sigevent *evp,
> -			       int *timerid);
> -extern int __timer_delete_old (int timerid);
> -extern int __timer_getoverrun_old (int timerid);
> -extern int __timer_gettime_old (int timerid, struct itimerspec *value);
> -extern int __timer_settime_old (int timerid, int flags,
> -				const struct itimerspec *value,
> -				struct itimerspec *ovalue);
> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> deleted file mode 100644
> index dd7d01e849..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
> -
> -   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; see the file COPYING.LIB.  If
> -   not, see <https://www.gnu.org/licenses/>.  */
> -
> -#include <shlib-compat.h>
> -#include <sysdep.h>
> -#include <kernel-posix-timers.h>
> -#include "compat-timer.h"
> -
> -int
> -__timer_settime_new (timer_t timerid, int flags, const struct itimerspec *value,
> -                     struct itimerspec *ovalue)
> -{
> -  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
> -
> -  return INLINE_SYSCALL_CALL (timer_settime, ktimerid, flags, value, ovalue);
> -}
> -versioned_symbol (librt, __timer_settime_new, timer_settime, GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -int
> -__timer_settime_old (int timerid, int flags, const struct itimerspec *value,
> -		     struct itimerspec *ovalue)
> -{
> -  return __timer_settime_new (__timer_compat_list[timerid], flags,
> -			      value, ovalue);
> -}
> -compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);
> -#endif


Ok.


> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 143b8d602c..8789b1edb2 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2015,6 +2015,7 @@ GLIBC_2.16 timer_create F
>  GLIBC_2.16 timer_delete F
>  GLIBC_2.16 timer_getoverrun F
>  GLIBC_2.16 timer_gettime F
> +GLIBC_2.16 timer_settime F
>  GLIBC_2.16 timerfd_create F
>  GLIBC_2.16 timerfd_gettime F
>  GLIBC_2.16 timerfd_settime F
> @@ -2552,6 +2553,7 @@ GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timer_gettime F
> +GLIBC_2.34 timer_settime F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 50f2032de7..a39d5383e4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1 +1 @@
> -GLIBC_2.16 timer_settime F
> +GLIBC_2.16 __librt_version_placeholder F
> 

Ok.
  

Patch

diff --git a/include/time.h b/include/time.h
index 3f4ff44ac3..22b29ca583 100644
--- a/include/time.h
+++ b/include/time.h
@@ -236,7 +236,11 @@  extern int __timer_settime64 (timer_t timerid, int flags,
 extern int __timerfd_settime64 (int fd, int flags,
                                 const struct __itimerspec64 *value,
                                 struct __itimerspec64 *ovalue);
-librt_hidden_proto (__timer_settime64);
+# if PTHREAD_IN_LIBC
+libc_hidden_proto (__timer_settime64)
+#else
+librt_hidden_proto (__timer_settime64)
+#endif
 libc_hidden_proto (__timerfd_settime64);
 #endif
 
diff --git a/rt/Makefile b/rt/Makefile
index e2ef5f4b0b..c1e989ede8 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@  routines = \
 
 librt-routines = \
   librt-compat \
-  timer_settime \
 
 librt-shared-only-routines = librt-compat
 
@@ -63,6 +62,7 @@  $(librt-routines-var) += \
   timer_delete \
   timer_getoverr \
   timer_gettime \
+  timer_settime \
 
 tests := tst-shm tst-timer tst-timer2 \
 	 tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
diff --git a/rt/Versions b/rt/Versions
index d1f05af013..7e41beae06 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -26,6 +26,7 @@  libc {
     timer_delete;
     timer_getoverrun;
     timer_gettime;
+    timer_settime;
 %endif
     shm_open;
     shm_unlink;
@@ -89,6 +90,7 @@  libc {
     timer_delete;
     timer_getoverrun;
     timer_gettime;
+    timer_settime;
 %endif
     shm_open;
     shm_unlink;
@@ -132,13 +134,15 @@  librt {
 %endif
   }
   GLIBC_2.2 {
-%if !PTHREAD_IN_LIBC
+%if PTHREAD_IN_LIBC
+    __librt_version_placeholder;
+%else
     timer_create;
     timer_delete;
     timer_getoverrun;
     timer_gettime;
-%endif
     timer_settime;
+%endif
   }
   GLIBC_2.3.4 {
 %if PTHREAD_IN_LIBC
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
index 24c2ed9db4..84f50c82a9 100644
--- a/rt/librt-compat.c
+++ b/rt/librt-compat.c
@@ -20,6 +20,7 @@ 
 # include <shlib-compat.h>
 # include <sys/cdefs.h>
 
+# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
 void
 attribute_compat_text_section
 __attribute_used__
@@ -27,25 +28,26 @@  __librt_version_placeholder_1 (void)
 {
 }
 
-# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_2)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_1);
 # endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34) \
-  && ABI_librt_GLIBC_2_3_4 != ABI_librt_GLIBC_2_1
+# if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_2);
+# endif
+
+# if SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_3_4);
 # endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)        \
-  && ABI_librt_GLIBC_2_4 != ABI_librt_GLIBC_2_1
+# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_4);
 # endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34) \
-  && ABI_librt_GLIBC_2_7 != ABI_librt_GLIBC_2_4
+# if SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_7);
 # endif
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 9bb9d955a5..578d55e7fd 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -127,6 +127,7 @@  libc {
     timer_delete;
     timer_getoverrun;
     timer_gettime;
+    timer_settime;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
@@ -269,6 +270,7 @@  libc {
     __time64;
     __timegm64;
     __timer_gettime64;
+    __timer_settime64;
     __timerfd_gettime64;
     __timerfd_settime64;
     __timespec_get64;
@@ -300,18 +302,18 @@  libc {
   }
 }
 
-ld {
-  GLIBC_PRIVATE {
-    __nptl_change_stack_perm;
+librt {
+  GLIBC_2.3.3 {
+    # Leftover from the int -> timer_t transition.  For ABIs that came later
+    # and do not have the symbol version, this version node is merged with
+    # the baseline version.
+    __librt_version_placeholder;
   }
 }
 
-librt {
-  GLIBC_2.34 {
-%ifdef TIME64_NON_DEFAULT
-    # 64-bit time_t support
-    __timer_settime64;
-%endif
+ld {
+  GLIBC_PRIVATE {
+    __nptl_change_stack_perm;
   }
 }
 
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 23130c3c9e..5ff33f63e3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2010,6 +2010,7 @@  GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timer_gettime F
+GLIBC_2.17 timer_settime F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2537,6 +2538,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 2cb1369ddb..88d0fc382f 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.17 timer_settime F
+GLIBC_2.17 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index 0359822d6d..87ef61437d 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -102,8 +102,4 @@  librt {
   GLIBC_2.3 {
     __librt_version_placeholder;
   }
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
 }
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 1f2fff3443..503a96b255 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2097,6 +2097,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2361,6 +2362,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 _OtsAddX F
 GLIBC_2.3.4 _OtsConvertFloatTX F
 GLIBC_2.3.4 _OtsConvertFloatXT F
@@ -2635,6 +2637,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt-compat.c b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
index 96e92e1637..7c699d3395 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt-compat.c
+++ b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
@@ -16,7 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <rt/librt-compat.c>
+#include <sysdeps/unix/sysv/linux/librt-compat.c>
 
 #if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
 compat_symbol (librt, __librt_version_placeholder_1,
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index a2de1ecd94..f68e03dfde 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,7 +1,7 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/timer_settime.c b/sysdeps/unix/sysv/linux/alpha/timer_settime.c
deleted file mode 100644
index fa231149d5..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 8ece5c40fb..e29bd7cd55 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1944,6 +1944,7 @@  GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
 GLIBC_2.32 timer_getoverrun F
 GLIBC_2.32 timer_gettime F
+GLIBC_2.32 timer_settime F
 GLIBC_2.32 timerfd_create F
 GLIBC_2.32 timerfd_gettime F
 GLIBC_2.32 timerfd_settime F
@@ -2296,6 +2297,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 0023244be6..f77591fa3e 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.32 timer_settime F
+GLIBC_2.32 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 515c3a224a..ac89f19c0a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -272,6 +272,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -439,6 +440,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2359,6 +2361,7 @@  GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
+GLIBC_2.4 timer_settime F
 GLIBC_2.4 times F
 GLIBC_2.4 timezone D 0x4
 GLIBC_2.4 tmpfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 2f84162558..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,2 @@ 
-GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_settime F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 7b7ca7d348..07fce73516 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -269,6 +269,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -436,6 +437,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2356,6 +2358,7 @@  GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
+GLIBC_2.4 timer_settime F
 GLIBC_2.4 times F
 GLIBC_2.4 timezone D 0x4
 GLIBC_2.4 tmpfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 2f84162558..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,2 @@ 
-GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_settime F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index d53acb2c08..d06f38eba0 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2034,6 +2034,7 @@  GLIBC_2.29 timer_create F
 GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
+GLIBC_2.29 timer_settime F
 GLIBC_2.29 timerfd_create F
 GLIBC_2.29 timerfd_gettime F
 GLIBC_2.29 timerfd_settime F
@@ -2393,6 +2394,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2560,6 +2562,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 52b2819a7d..1a55315b87 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,2 +1 @@ 
-GLIBC_2.29 timer_settime F
-GLIBC_2.34 __timer_settime64 F
+GLIBC_2.29 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index a592e3f628..2f5dfd66ad 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1748,6 +1748,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2346,6 +2347,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2513,6 +2515,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index bd3824cb88..1accf0a9c1 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2110,6 +2110,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2530,6 +2531,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2697,6 +2699,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
index 9a7faf067a..9900916a6c 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -27,9 +27,3 @@  libc {
     recvmsg; sendmsg;
   }
 }
-librt {
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index d589ce16d6..79b4153e63 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1769,6 +1769,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2226,6 +2227,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2473,6 +2475,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 7d8e91b0d9..ff77c0d32e 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,6 +1,6 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/timer_settime.c b/sysdeps/unix/sysv/linux/ia64/timer_settime.c
deleted file mode 100644
index fa231149d5..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
diff --git a/sysdeps/unix/sysv/linux/librt-compat.c b/sysdeps/unix/sysv/linux/librt-compat.c
new file mode 100644
index 0000000000..f8b09908a2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/librt-compat.c
@@ -0,0 +1,26 @@ 
+/* Placeholder definitions to pull in removed symbol versions.  Linux version.
+   Copyright (C) 2021 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
+   <https://www.gnu.org/licenses/>.  */
+
+#include <rt/librt-compat.c>
+#include <kernel-posix-timers.h>
+
+/* GLIBC_2.3.3 symbols were added for the int -> timer_t ABI transition.  */
+#if TIMER_T_WAS_INT_COMPAT
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_3_3);
+#endif
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 7e986dcfd5..ddbaeb3660 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -273,6 +273,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -440,6 +441,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2339,6 +2341,7 @@  GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
+GLIBC_2.4 timer_settime F
 GLIBC_2.4 times F
 GLIBC_2.4 timezone D 0x4
 GLIBC_2.4 tmpfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 2f84162558..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,2 @@ 
-GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_settime F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 97fe827b8d..3295de3102 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2066,6 +2066,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2473,6 +2474,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2640,6 +2642,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 56b5f885b7..18d8e9d748 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2014,6 +2014,7 @@  GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
+GLIBC_2.18 timer_settime F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2444,6 +2445,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2611,6 +2613,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 8a4faf155c..825b445ef7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,2 +1 @@ 
-GLIBC_2.18 timer_settime F
-GLIBC_2.34 __timer_settime64 F
+GLIBC_2.18 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 8910180ff8..2de03396dd 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2014,6 +2014,7 @@  GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
+GLIBC_2.18 timer_settime F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2441,6 +2442,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2608,6 +2610,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 8a4faf155c..825b445ef7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,2 +1 @@ 
-GLIBC_2.18 timer_settime F
-GLIBC_2.34 __timer_settime64 F
+GLIBC_2.18 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index e81456caf7..302af0376d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1997,6 +1997,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2438,6 +2439,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2605,6 +2607,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 211a60584c..a7f1518c0b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,4 @@ 
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index ecbad99217..50e51bf15d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1995,6 +1995,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2436,6 +2437,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2603,6 +2605,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 986b16ece3..99be006a91 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1993,6 +1993,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2444,6 +2445,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2611,6 +2613,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 211a60584c..a7f1518c0b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,4 @@ 
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 141e1b295f..f3c39841dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1989,6 +1989,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2525,6 +2526,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 406120e1d8..a7f1518c0b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,4 +1,4 @@ 
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 71dc98ecf7..55f3102cbf 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2056,6 +2056,7 @@  GLIBC_2.21 timer_create F
 GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
+GLIBC_2.21 timer_settime F
 GLIBC_2.21 timerfd_create F
 GLIBC_2.21 timerfd_gettime F
 GLIBC_2.21 timerfd_settime F
@@ -2483,6 +2484,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2650,6 +2652,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index c162738eae..834a4dcc7a 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,2 +1 @@ 
-GLIBC_2.21 timer_settime F
-GLIBC_2.34 __timer_settime64 F
+GLIBC_2.21 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 03a0a0579a..82144c268e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2071,6 +2071,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2500,6 +2501,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2667,6 +2669,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 793531d9c4..4545f49cee 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2075,6 +2075,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2533,6 +2534,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2700,6 +2702,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
index 8607ac1012..0cdda49402 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -25,10 +25,3 @@  libc {
     __ppc_get_timebase_freq;
   }
 }
-
-librt {
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 21763f0238..d47efa98ff 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1890,6 +1890,7 @@  GLIBC_2.3 timer_create F
 GLIBC_2.3 timer_delete F
 GLIBC_2.3 timer_getoverrun F
 GLIBC_2.3 timer_gettime F
+GLIBC_2.3 timer_settime F
 GLIBC_2.3 times F
 GLIBC_2.3 timezone D 0x8
 GLIBC_2.3 tmpfile F
@@ -2170,6 +2171,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2437,6 +2439,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index bfaae8ac0e..506870e3fd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,5 @@ 
-GLIBC_2.3 timer_settime F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.3 __librt_version_placeholder F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index ec8a207385..e08cbf7b2a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2098,6 +2098,7 @@  GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timer_gettime F
+GLIBC_2.17 timer_settime F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2733,6 +2734,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 2cb1369ddb..88d0fc382f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.17 timer_settime F
+GLIBC_2.17 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
deleted file mode 100644
index fa231149d5..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index c7b749f6a7..a8482733cd 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1954,6 +1954,7 @@  GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
 GLIBC_2.33 timer_getoverrun F
 GLIBC_2.33 timer_gettime F
+GLIBC_2.33 timer_settime F
 GLIBC_2.33 timerfd_create F
 GLIBC_2.33 timerfd_gettime F
 GLIBC_2.33 timerfd_settime F
@@ -2298,6 +2299,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index c59f14490e..b8af976642 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.33 timer_settime F
+GLIBC_2.33 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 33e13783fc..a2448c1c74 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2020,6 +2020,7 @@  GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
 GLIBC_2.27 timer_getoverrun F
 GLIBC_2.27 timer_gettime F
+GLIBC_2.27 timer_settime F
 GLIBC_2.27 timerfd_create F
 GLIBC_2.27 timerfd_gettime F
 GLIBC_2.27 timerfd_settime F
@@ -2498,6 +2499,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 62ff23fd04..d7902a3ec7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.27 timer_settime F
+GLIBC_2.27 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 6681f84af2..5ee1e09391 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2069,6 +2069,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2498,6 +2499,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2665,6 +2667,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
index 5c682764ad..83092db48e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
@@ -5,10 +5,3 @@  libc {
     __frame_state_for; __register_frame_info_table;
   }
 }
-
-librt {
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index e97c113408..1cd10e7e77 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1765,6 +1765,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2216,6 +2217,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2474,6 +2476,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index f851eea81e..7dac2342ac 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,5 @@ 
-GLIBC_2.2 timer_settime F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
deleted file mode 100644
index fa231149d5..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 360802cf78..c621caae80 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1752,6 +1752,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2353,6 +2354,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2520,6 +2522,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index e9cb3ff8f1..ba459df43a 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1752,6 +1752,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2350,6 +2351,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2517,6 +2519,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 179d1d53da..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,6 +1,5 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/librt-compat.c b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
index a3862ba127..17a7895703 100644
--- a/sysdeps/unix/sysv/linux/sparc/librt-compat.c
+++ b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
@@ -16,7 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <rt/librt-compat.c>
+#include <sysdeps/unix/sysv/linux/librt-compat.c>
 
 #if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
 compat_symbol (librt, __librt_version_placeholder_1,
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 2af5948dd7..5e0eed47e3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2064,6 +2064,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2493,6 +2494,7 @@  GLIBC_2.34 __thrd_sleep64 F
 GLIBC_2.34 __time64 F
 GLIBC_2.34 __timegm64 F
 GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.34 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2660,6 +2662,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index dc0a3c4dfb..7ff1ca83b1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,7 +1,6 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
index 5e8f59ceae..cc152489f6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -10,10 +10,3 @@  libc {
     wordexp;
   }
 }
-
-librt {
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index fde5b780a6..99e6181e24 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1795,6 +1795,7 @@  GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
+GLIBC_2.2 timer_settime F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2250,6 +2251,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2496,6 +2498,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index a2de1ecd94..f68e03dfde 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,7 +1,7 @@ 
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_settime F
+GLIBC_2.2 __librt_version_placeholder F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
deleted file mode 100644
index fa231149d5..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <sysdeps/unix/sysv/linux/x86_64/timer_settime.c>
diff --git a/sysdeps/unix/sysv/linux/timer_settime.c b/sysdeps/unix/sysv/linux/timer_settime.c
index b8326e36a4..cbe430480d 100644
--- a/sysdeps/unix/sysv/linux/timer_settime.c
+++ b/sysdeps/unix/sysv/linux/timer_settime.c
@@ -22,27 +22,29 @@ 
 #include <sysdep.h>
 #include <kernel-features.h>
 #include <kernel-posix-timers.h>
+#include <shlib-compat.h>
 
+#if !TIMER_T_WAS_INT_COMPAT
 int
-__timer_settime64 (timer_t timerid, int flags,
+___timer_settime64 (timer_t timerid, int flags,
                    const struct __itimerspec64 *value,
                    struct __itimerspec64 *ovalue)
 {
   kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
 
-#ifdef __ASSUME_TIME64_SYSCALLS
-# ifndef __NR_timer_settime64
-#  define __NR_timer_settime64 __NR_timer_settime
-# endif
+# ifdef __ASSUME_TIME64_SYSCALLS
+#  ifndef __NR_timer_settime64
+#   define __NR_timer_settime64 __NR_timer_settime
+#  endif
   return INLINE_SYSCALL_CALL (timer_settime64, ktimerid, flags, value,
                               ovalue);
-#else
-# ifdef __NR_timer_settime64
+# else
+#  ifdef __NR_timer_settime64
   int ret = INLINE_SYSCALL_CALL (timer_settime64, ktimerid, flags, value,
                                  ovalue);
   if (ret == 0 || errno != ENOSYS)
     return ret;
-# endif
+#  endif
   struct itimerspec its32, oits32;
 
   if (! in_time_t_range ((value->it_value).tv_sec)
@@ -64,11 +66,18 @@  __timer_settime64 (timer_t timerid, int flags,
     }
 
   return retval;
-#endif
+# endif
 }
 
-#if __TIMESIZE != 64
-librt_hidden_def (__timer_settime64)
+# if __TIMESIZE == 64
+versioned_symbol (libc, ___timer_settime64, timer_settime, GLIBC_2_34);
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, ___timer_settime64, timer_settime, GLIBC_2_2);
+#  endif
+
+#else /* __TIMESIZE != 64 */
+libc_hidden_ver (___timer_settime64, __timer_settime64)
+versioned_symbol (libc, ___timer_settime64, __timer_settime64, GLIBC_2_34);
 
 int
 __timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
@@ -89,5 +98,43 @@  __timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
 
   return retval;
 }
-#endif
-weak_alias (__timer_settime, timer_settime)
+versioned_symbol (libc, __timer_settime, timer_settime, GLIBC_2_34);
+
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, __timer_settime, timer_settime, GLIBC_2_2);
+#  endif
+# endif /* __TIMESIZE != 64 */
+
+#else /* TIMER_T_WAS_INT_COMPAT */
+
+extern __typeof (timer_settime) __timer_settime_new;
+libc_hidden_proto (__timer_settime_new)
+
+int
+___timer_settime_new (timer_t timerid, int flags,
+                      const struct itimerspec *value,
+                      struct itimerspec *ovalue)
+{
+  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
+
+  return INLINE_SYSCALL_CALL (timer_settime, ktimerid, flags, value, ovalue);
+}
+versioned_symbol (libc, ___timer_settime_new, timer_settime, GLIBC_2_34);
+libc_hidden_ver (___timer_settime_new, __timer_settime_new)
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (librt, ___timer_settime_new, timer_settime, GLIBC_2_3_3);
+# endif
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
+int
+__timer_settime_old (int timerid, int flags, const struct itimerspec *value,
+                     struct itimerspec *ovalue)
+{
+  return __timer_settime_new (__timer_compat_list[timerid], flags,
+                              value, ovalue);
+}
+compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);
+# endif
+
+#endif /* TIMER_T_WAS_INT_COMPAT */
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 87dc534709..2460b47dc7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1764,6 +1764,7 @@  GLIBC_2.2.5 timer_create F
 GLIBC_2.2.5 timer_delete F
 GLIBC_2.2.5 timer_getoverrun F
 GLIBC_2.2.5 timer_gettime F
+GLIBC_2.2.5 timer_settime F
 GLIBC_2.2.5 times F
 GLIBC_2.2.5 timezone D 0x8
 GLIBC_2.2.5 tmpfile F
@@ -2204,6 +2205,7 @@  GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.3 timer_gettime F
+GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2452,6 +2454,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 913835d267..752a38a6df 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,5 @@ 
-GLIBC_2.2.5 timer_settime F
-GLIBC_2.3.3 timer_settime F
+GLIBC_2.2.5 __librt_version_placeholder F
+GLIBC_2.3.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
index 8deeb8908a..fd1b3cc296 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Versions
+++ b/sysdeps/unix/sysv/linux/x86_64/Versions
@@ -7,10 +7,3 @@  libc {
     modify_ldt;
   }
 }
-
-librt {
-  GLIBC_2.3.3 {
-    # Changed timer_t.
-    timer_settime;
-  }
-}
diff --git a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
deleted file mode 100644
index c61eb40070..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
+++ /dev/null
@@ -1,37 +0,0 @@ 
-/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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; see the file COPYING.LIB.  If
-   not, see <https://www.gnu.org/licenses/>.  */
-
-#include <signal.h>
-#include <time.h>
-#include <sys/types.h>
-
-extern int __timer_getoverrun_new (timer_t timerid);
-extern int __timer_gettime_new (timer_t timerid, struct itimerspec *value);
-extern int __timer_settime_new (timer_t timerid, int flags,
-				const struct itimerspec *value,
-				struct itimerspec *ovalue);
-
-
-extern int __timer_create_old (clockid_t clock_id, struct sigevent *evp,
-			       int *timerid);
-extern int __timer_delete_old (int timerid);
-extern int __timer_getoverrun_old (int timerid);
-extern int __timer_gettime_old (int timerid, struct itimerspec *value);
-extern int __timer_settime_old (int timerid, int flags,
-				const struct itimerspec *value,
-				struct itimerspec *ovalue);
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
deleted file mode 100644
index dd7d01e849..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
+++ /dev/null
@@ -1,44 +0,0 @@ 
-/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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; see the file COPYING.LIB.  If
-   not, see <https://www.gnu.org/licenses/>.  */
-
-#include <shlib-compat.h>
-#include <sysdep.h>
-#include <kernel-posix-timers.h>
-#include "compat-timer.h"
-
-int
-__timer_settime_new (timer_t timerid, int flags, const struct itimerspec *value,
-                     struct itimerspec *ovalue)
-{
-  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
-
-  return INLINE_SYSCALL_CALL (timer_settime, ktimerid, flags, value, ovalue);
-}
-versioned_symbol (librt, __timer_settime_new, timer_settime, GLIBC_2_3_3);
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-int
-__timer_settime_old (int timerid, int flags, const struct itimerspec *value,
-		     struct itimerspec *ovalue)
-{
-  return __timer_settime_new (__timer_compat_list[timerid], flags,
-			      value, ovalue);
-}
-compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);
-#endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 143b8d602c..8789b1edb2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2015,6 +2015,7 @@  GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
 GLIBC_2.16 timer_getoverrun F
 GLIBC_2.16 timer_gettime F
+GLIBC_2.16 timer_settime F
 GLIBC_2.16 timerfd_create F
 GLIBC_2.16 timerfd_gettime F
 GLIBC_2.16 timerfd_settime F
@@ -2552,6 +2553,7 @@  GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
 GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timer_gettime F
+GLIBC_2.34 timer_settime F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 50f2032de7..a39d5383e4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1 +1 @@ 
-GLIBC_2.16 timer_settime F
+GLIBC_2.16 __librt_version_placeholder F