public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 00/34] Move librt into libc
@ 2021-06-17 18:56 Florian Weimer
  2021-06-17 18:56 ` [PATCH 01/34] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
                   ` (34 more replies)
  0 siblings, 35 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:56 UTC (permalink / raw)
  To: libc-alpha

This series contains the adjustments for time64 support.  I had to redo
the symbol moves with my local version of the symbol moving scripts to
be sure, but the results look consistent.

Thanks,
Florian

Florian Weimer (34):
  rt: Lexicographically sort Versions file; librt-routines in Makefile
  Fix librt-routines-var issues for !PTHREAD_IN_LIBC
  rt: Replace generic stub of shm_open with the posix version
  rt: Replace generic stub of shm_unlink with the posix version
  rt: Move shm_open into libc
  rt: Move shm_unlink into libc
  rt: Move generic implementation from sysdeps/pthread to rt
  nptl: Move pthreadP.h into sysdeps directory
  Add hidden prototypes for fsync, fdatasync
  Linux: Move aio_init from librt into libc
  Linux: Move aio_cancel, aio_cancel64 into libc
  Linux: Move aio_error, aio_error64 into libc
  Linux: Move aio_fsync, aio_fsync64 into libc
  Linux: Move aio_read, aio_read64 into libc
  Linux: Move aio_return, aio_return64 into libc
  Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc
  Linux: Move aio_write, aio_write64 into libc
  rt: Rework lio_listio implementation
  Linux: Move lio_listio, lio_listio64 from librt to libc
  Linux: Move mq_close from librt to libc
  Linux: Move mq_setattr from librt to libc
  Linux: Move mq_getattr from librt to libc
  Linux: Move mq_notify from librt to libc
  Linux: Move mq_open, __mq_open_2 from librt to libc
  Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 to
    libc
  Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 to libc
  Linux: Move mq_unlink from librt to libc
  Linux: Move timer helper routines from librt to libc
  Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h
  Linux: Move timer_create, timer_delete from librt to libc
  Linux: Move timer_getoverrun from librt to libc
  Linux: Move timer_gettime, __timer_gettime64 from librt to libc
  Linux: Move timer_settime, __timer_settime64 from librt to libc
  Linux: Cleanups after librt move

 Makeconfig                                    |   2 +-
 elf/Makefile                                  |   4 +-
 include/aio.h                                 |   4 +
 include/mqueue.h                              |  27 +-
 include/pthread.h                             |   3 +
 include/time.h                                |  12 +-
 include/unistd.h                              |   2 +
 misc/fdatasync.c                              |   1 +
 misc/fsync.c                                  |   2 +-
 nptl/Makefile                                 |   9 -
 nptl/pthread_getschedparam.c                  |   1 +
 nptl_db/thread_dbP.h                          |   2 +-
 rt/Makefile                                   |  62 +-
 rt/Versions                                   | 165 +++-
 rt/aio_cancel.c                               | 143 +++-
 rt/aio_error.c                                |  27 +-
 rt/aio_fsync.c                                |  40 +-
 rt/aio_misc.c                                 | 722 +++++++++++++++++-
 rt/aio_notify.c                               | 149 +++-
 rt/aio_read.c                                 |  51 +-
 rt/aio_read64.c                               |  44 +-
 rt/aio_return.c                               |  15 +-
 rt/aio_sigqueue.c                             |   1 -
 rt/aio_suspend.c                              | 266 ++++++-
 rt/aio_write.c                                |  51 +-
 rt/aio_write64.c                              |  44 +-
 rt/librt-compat.c                             |  55 ++
 .../lio_listio.c => rt/lio_listio-common.c    |  78 +-
 rt/lio_listio.c                               |  31 +-
 rt/lio_listio64.c                             |  30 +-
 rt/shm_open.c                                 |  37 +-
 rt/shm_unlink.c                               |  29 +-
 rt/timer_create.c                             | 156 +++-
 rt/timer_delete.c                             |  58 +-
 rt/timer_getoverr.c                           |  33 +-
 rt/timer_gettime.c                            |  64 +-
 rt/timer_settime.c                            | 120 ++-
 sysdeps/generic/aio_misc.h                    |  85 ++-
 sysdeps/{pthread => htl}/timer_routines.c     |   0
 sysdeps/mach/hurd/fdatasync.c                 |   1 +
 sysdeps/mach/hurd/fsync.c                     |   1 +
 sysdeps/mach/hurd/i386/libc.abilist           |   4 +
 sysdeps/mach/hurd/i386/librt.abilist          |   2 -
 sysdeps/nptl/Makefile                         |   2 +-
 sysdeps/nptl/aio_misc.h                       |   6 +-
 sysdeps/nptl/dl-tls_init_tp.c                 |   2 +-
 sysdeps/nptl/fork.c                           |   7 +-
 sysdeps/nptl/gai_misc.h                       |   2 +-
 sysdeps/nptl/jmp-unwind.c                     |   2 +-
 sysdeps/nptl/libc-lockP.h                     |   2 +-
 sysdeps/nptl/libc_start_call_main.h           |   2 +-
 {nptl => sysdeps/nptl}/pthreadP.h             |   3 +-
 sysdeps/nptl/pthread_early_init.h             |   2 +-
 sysdeps/nptl/setxid.h                         |   2 +-
 sysdeps/posix/shm_open.c                      |  62 --
 sysdeps/posix/shm_unlink.c                    |  48 --
 sysdeps/posix/spawni.c                        |   2 +-
 sysdeps/pthread/Makefile                      |   2 +
 sysdeps/pthread/Versions                      |   5 -
 sysdeps/pthread/aio_cancel.c                  | 157 ----
 sysdeps/pthread/aio_error.c                   |  48 --
 sysdeps/pthread/aio_fsync.c                   |  57 --
 sysdeps/pthread/aio_misc.c                    | 721 -----------------
 sysdeps/pthread/aio_misc.h                    | 122 ---
 sysdeps/pthread/aio_notify.c                  | 157 ----
 sysdeps/pthread/aio_suspend.c                 | 263 -------
 sysdeps/pthread/lio_listio64.c                |  33 -
 sysdeps/pthread/timer_create.c                | 166 ----
 sysdeps/pthread/timer_delete.c                |  68 --
 sysdeps/pthread/timer_gettime.c               |  74 --
 sysdeps/pthread/timer_settime.c               | 131 ----
 sysdeps/unix/sysv/linux/Versions              |  34 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  70 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  36 +-
 sysdeps/unix/sysv/linux/aio_misc.h            |  10 +-
 sysdeps/unix/sysv/linux/aio_sigqueue.c        |   2 +-
 sysdeps/unix/sysv/linux/alpha/Versions        |  18 +-
 sysdeps/unix/sysv/linux/alpha/aio_cancel.c    |  26 +-
 .../sysv/linux/alpha/kernel-posix-timers.h}   |  31 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  79 ++
 .../sysv/linux/alpha/librt-compat.c}          |  20 +-
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  51 +-
 sysdeps/unix/sysv/linux/alpha/timer_create.c  |   1 -
 sysdeps/unix/sysv/linux/alpha/timer_delete.c  |   1 -
 .../unix/sysv/linux/alpha/timer_getoverr.c    |   1 -
 sysdeps/unix/sysv/linux/alpha/timer_gettime.c |   1 -
 sysdeps/unix/sysv/linux/alpha/timer_settime.c |   1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  70 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  36 +-
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  75 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  42 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  75 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  42 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  75 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  41 +-
 sysdeps/unix/sysv/linux/dl-execstack.c        |   2 +-
 sysdeps/unix/sysv/linux/fdatasync.c           |   1 +
 sysdeps/unix/sysv/linux/fsync.c               |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  77 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  47 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  77 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  47 +-
 sysdeps/unix/sysv/linux/ia64/Versions         |   7 -
 .../kernel-posix-timers.h}                    |  26 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  77 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  48 +-
 sysdeps/unix/sysv/linux/ia64/timer_create.c   |   1 -
 sysdeps/unix/sysv/linux/ia64/timer_delete.c   |   1 -
 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c |   1 -
 sysdeps/unix/sysv/linux/ia64/timer_gettime.c  |   1 -
 sysdeps/unix/sysv/linux/ia64/timer_settime.c  |   1 -
 sysdeps/unix/sysv/linux/kernel-posix-timers.h |  31 +-
 .../sysv/linux/librt-compat.c}                |  22 +-
 .../sysv/linux/m68k/coldfire/libc.abilist     |  75 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  42 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  77 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  47 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  75 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  41 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  75 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  41 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  77 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  46 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  77 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  77 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  46 +-
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  72 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  41 +-
 sysdeps/unix/sysv/linux/mq_close.c            |   7 +-
 sysdeps/unix/sysv/linux/mq_getattr.c          |   8 +-
 sysdeps/unix/sysv/linux/mq_notify.c           |  57 +-
 sysdeps/unix/sysv/linux/mq_open.c             |  12 +-
 sysdeps/unix/sysv/linux/mq_receive.c          |   9 +-
 sysdeps/unix/sysv/linux/mq_send.c             |   7 +-
 .../sysv/linux/mq_setattr.c}                  |  23 +-
 sysdeps/unix/sysv/linux/mq_timedreceive.c     |  38 +-
 sysdeps/unix/sysv/linux/mq_timedsend.c        |  38 +-
 sysdeps/unix/sysv/linux/mq_unlink.c           |   7 +-
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  75 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  41 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  77 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  47 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  77 ++
 .../sysv/linux/powerpc/powerpc64/Versions     |   8 -
 .../linux/powerpc/powerpc64/be/libc.abilist   |  77 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  47 +-
 .../powerpc/powerpc64/kernel-posix-timers.h   |  22 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |  70 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  36 +-
 .../linux/powerpc/powerpc64/timer_create.c    |   1 -
 .../linux/powerpc/powerpc64/timer_delete.c    |   1 -
 .../linux/powerpc/powerpc64/timer_getoverr.c  |   1 -
 .../linux/powerpc/powerpc64/timer_gettime.c   |   1 -
 .../linux/powerpc/powerpc64/timer_settime.c   |   1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  70 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  36 +-
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  70 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  36 +-
 sysdeps/unix/sysv/linux/s390/jmp-unwind.c     |   2 +-
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  77 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  47 +-
 sysdeps/unix/sysv/linux/s390/s390-64/Versions |   8 -
 .../linux/s390/s390-64/kernel-posix-timers.h  |  22 +
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  77 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  47 +-
 .../sysv/linux/s390/s390-64/timer_create.c    |   1 -
 .../sysv/linux/s390/s390-64/timer_delete.c    |   1 -
 .../sysv/linux/s390/s390-64/timer_getoverr.c  |   1 -
 .../sysv/linux/s390/s390-64/timer_gettime.c   |   1 -
 .../sysv/linux/s390/s390-64/timer_settime.c   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  77 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  47 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  77 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  47 +-
 sysdeps/unix/sysv/linux/sigprocmask.c         |   2 +-
 sysdeps/unix/sysv/linux/sparc/Versions        |  11 +-
 sysdeps/unix/sysv/linux/sparc/aio_cancel.c    |  26 +-
 .../sysv/linux/sparc/librt-compat.c}          |  20 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  79 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  50 +-
 .../unix/sysv/linux/sparc/sparc64/Versions    |   8 -
 .../linux/sparc/sparc64/kernel-posix-timers.h |  22 +
 .../sysv/linux/sparc/sparc64/libc.abilist     |  79 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  51 +-
 .../sysv/linux/sparc/sparc64/timer_create.c   |   1 -
 .../sysv/linux/sparc/sparc64/timer_delete.c   |   1 -
 .../sysv/linux/sparc/sparc64/timer_getoverr.c |   1 -
 .../sysv/linux/sparc/sparc64/timer_gettime.c  |   1 -
 .../sysv/linux/sparc/sparc64/timer_settime.c  |   1 -
 sysdeps/unix/sysv/linux/spawni.c              |   2 +-
 sysdeps/unix/sysv/linux/syscalls.list         |   2 -
 sysdeps/unix/sysv/linux/timer_create.c        |  80 +-
 sysdeps/unix/sysv/linux/timer_delete.c        |  54 +-
 sysdeps/unix/sysv/linux/timer_getoverr.c      |  34 +-
 sysdeps/unix/sysv/linux/timer_gettime.c       |  65 +-
 sysdeps/unix/sysv/linux/timer_routines.c      |  57 +-
 sysdeps/unix/sysv/linux/timer_settime.c       |  75 +-
 sysdeps/unix/sysv/linux/tls-internal.h        |   2 +-
 .../unix/sysv/linux/wordsize-64/aio_read.c    |   7 -
 .../unix/sysv/linux/wordsize-64/aio_read64.c  |   1 -
 .../unix/sysv/linux/wordsize-64/aio_write.c   |   7 -
 .../unix/sysv/linux/wordsize-64/aio_write64.c |   1 -
 .../unix/sysv/linux/wordsize-64/lio_listio.c  |  13 -
 .../sysv/linux/wordsize-64/lio_listio64.c     |   1 -
 sysdeps/unix/sysv/linux/x86/longjmp.c         |   2 +-
 .../linux/x86_64/64/kernel-posix-timers.h     |  22 +
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  77 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  47 +-
 sysdeps/unix/sysv/linux/x86_64/Versions       |   8 -
 sysdeps/unix/sysv/linux/x86_64/compat-timer.h |  45 --
 sysdeps/unix/sysv/linux/x86_64/timer_create.c |  65 --
 sysdeps/unix/sysv/linux/x86_64/timer_delete.c |  44 --
 .../unix/sysv/linux/x86_64/timer_gettime.c    |  41 -
 .../unix/sysv/linux/x86_64/timer_settime.c    |  44 --
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  70 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  36 +-
 216 files changed, 5568 insertions(+), 4216 deletions(-)
 create mode 100644 rt/librt-compat.c
 rename sysdeps/pthread/lio_listio.c => rt/lio_listio-common.c (70%)
 rename sysdeps/{pthread => htl}/timer_routines.c (100%)
 rename {nptl => sysdeps/nptl}/pthreadP.h (99%)
 delete mode 100644 sysdeps/posix/shm_open.c
 delete mode 100644 sysdeps/posix/shm_unlink.c
 delete mode 100644 sysdeps/pthread/Versions
 delete mode 100644 sysdeps/pthread/aio_cancel.c
 delete mode 100644 sysdeps/pthread/aio_error.c
 delete mode 100644 sysdeps/pthread/aio_fsync.c
 delete mode 100644 sysdeps/pthread/aio_misc.c
 delete mode 100644 sysdeps/pthread/aio_misc.h
 delete mode 100644 sysdeps/pthread/aio_notify.c
 delete mode 100644 sysdeps/pthread/aio_suspend.c
 delete mode 100644 sysdeps/pthread/lio_listio64.c
 delete mode 100644 sysdeps/pthread/timer_create.c
 delete mode 100644 sysdeps/pthread/timer_delete.c
 delete mode 100644 sysdeps/pthread/timer_gettime.c
 delete mode 100644 sysdeps/pthread/timer_settime.c
 rename sysdeps/{pthread/timer_getoverr.c => unix/sysv/linux/alpha/kernel-posix-timers.h} (57%)
 rename sysdeps/{pthread/aio_read64.c => unix/sysv/linux/alpha/librt-compat.c} (67%)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_settime.c
 rename sysdeps/unix/sysv/linux/{x86_64/timer_getoverr.c => ia64/kernel-posix-timers.h} (54%)
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_settime.c
 rename sysdeps/{pthread/aio_write.c => unix/sysv/linux/librt-compat.c} (63%)
 rename sysdeps/{pthread/aio_read.c => unix/sysv/linux/mq_setattr.c} (56%)
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel-posix-timers.h
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/kernel-posix-timers.h
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c
 rename sysdeps/{pthread/aio_write64.c => unix/sysv/linux/sparc/librt-compat.c} (67%)
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/kernel-posix-timers.h
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/kernel-posix-timers.h
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/compat-timer.h
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_settime.c

-- 
2.31.1


^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 01/34] rt: Lexicographically sort Versions file; librt-routines in Makefile
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
@ 2021-06-17 18:56 ` Florian Weimer
  2021-06-17 18:56 ` [PATCH 02/34] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
                   ` (33 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:56 UTC (permalink / raw)
  To: libc-alpha

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 rt/Makefile | 46 ++++++++++++++++++++++++++++++++--------------
 rt/Versions | 45 +++++++++++++++++++++++++++++++++------------
 2 files changed, 65 insertions(+), 26 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 797f2da51e..b0d887202d 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -24,20 +24,38 @@ include ../Makeconfig
 
 headers	:= aio.h mqueue.h bits/mqueue.h bits/mqueue2.h
 
-aio-routines   := aio_cancel aio_error aio_fsync aio_misc aio_read	\
-		  aio_read64 aio_return aio_suspend aio_write		\
-		  aio_write64 lio_listio lio_listio64 aio_sigqueue	\
-		  aio_notify
-timer-routines := timer_create timer_delete timer_getoverr		\
-		  timer_gettime timer_settime
-shm-routines   := shm_open shm_unlink
-mq-routines    := mq_open mq_close mq_unlink mq_getattr mq_setattr	\
-		  mq_notify mq_send mq_receive mq_timedsend		\
-		  mq_timedreceive
-
-librt-routines = $(aio-routines) \
-		 $(timer-routines) \
-		 $(shm-routines) $(mq-routines)
+librt-routines = \
+  aio_cancel \
+  aio_error \
+  aio_fsync \
+  aio_misc \
+  aio_notify \
+  aio_read \
+  aio_read64 \
+  aio_return \
+  aio_sigqueue \
+  aio_suspend \
+  aio_write \
+  aio_write64 \
+  lio_listio \
+  lio_listio64 \
+  mq_close \
+  mq_getattr \
+  mq_notify \
+  mq_open \
+  mq_receive \
+  mq_send \
+  mq_setattr \
+  mq_timedreceive \
+  mq_timedsend \
+  mq_unlink \
+  shm_open \
+  shm_unlink \
+  timer_create \
+  timer_delete \
+  timer_getoverr \
+  timer_gettime \
+  timer_settime \
 
 $(librt-routines-var) = \
 
diff --git a/rt/Versions b/rt/Versions
index 84d1345420..f151f85ef6 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -1,22 +1,43 @@
 librt {
   GLIBC_2.1 {
-    # AIO functions.
-    aio_cancel; aio_cancel64; aio_error; aio_error64; aio_fsync; aio_fsync64;
-    aio_init; aio_read; aio_read64; aio_return; aio_return64; aio_suspend;
-    aio_suspend64; aio_write; aio_write64; lio_listio; lio_listio64;
+    aio_cancel;
+    aio_cancel64;
+    aio_error;
+    aio_error64;
+    aio_fsync;
+    aio_fsync64;
+    aio_init;
+    aio_read;
+    aio_read64;
+    aio_return;
+    aio_return64;
+    aio_suspend;
+    aio_suspend64;
+    aio_write;
+    aio_write64;
+    lio_listio;
+    lio_listio64;
   }
   GLIBC_2.2 {
-    # s*
-    shm_open; shm_unlink;
-
-    # t*
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    shm_open;
+    shm_unlink;
+    timer_create;
+    timer_delete;
+    timer_getoverrun;
+    timer_gettime;
     timer_settime;
   }
   GLIBC_2.3.4 {
-    # m*
-    mq_open; mq_close; mq_unlink; mq_getattr; mq_setattr;
-    mq_notify; mq_send; mq_receive; mq_timedsend; mq_timedreceive;
+    mq_close;
+    mq_getattr;
+    mq_notify;
+    mq_open;
+    mq_receive;
+    mq_send;
+    mq_setattr;
+    mq_timedreceive;
+    mq_timedsend;
+    mq_unlink;
   }
   GLIBC_2.7 {
    __mq_open_2;
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 02/34] Fix librt-routines-var issues for !PTHREAD_IN_LIBC
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
  2021-06-17 18:56 ` [PATCH 01/34] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
@ 2021-06-17 18:56 ` Florian Weimer
  2021-06-17 18:56 ` [PATCH 03/34] rt: Replace generic stub of shm_open with the posix version Florian Weimer
                   ` (32 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:56 UTC (permalink / raw)
  To: libc-alpha

The variable name was incorrect, and the existing librt-routines
variable needs to be augmented (not assigned) in rt/Makefile.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 Makeconfig  | 2 +-
 rt/Makefile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makeconfig b/Makeconfig
index 6482a43025..407df9e6a1 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1344,7 +1344,7 @@ libpthread-routines-var = routines
 librt-routines-var = routines
 else
 libpthread-routines-var = libpthread-routines
-librt-routines-var = libpthread-routines
+librt-routines-var = librt-routines
 endif
 
 # A sysdeps Makeconfig fragment may set libc-reentrant to yes.
diff --git a/rt/Makefile b/rt/Makefile
index b0d887202d..47bc594dee 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -57,7 +57,7 @@ librt-routines = \
   timer_gettime \
   timer_settime \
 
-$(librt-routines-var) = \
+$(librt-routines-var) += \
 
 tests := tst-shm tst-timer tst-timer2 \
 	 tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 03/34] rt: Replace generic stub of shm_open with the posix version
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
  2021-06-17 18:56 ` [PATCH 01/34] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
  2021-06-17 18:56 ` [PATCH 02/34] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
@ 2021-06-17 18:56 ` Florian Weimer
  2021-06-17 18:57 ` [PATCH 04/34] rt: Replace generic stub of shm_unlink " Florian Weimer
                   ` (31 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:56 UTC (permalink / raw)
  To: libc-alpha

Result of: git mv -f sysdeps/posix/shm_open.c rt
and manual removal of the _POSIX_MAPPED_FILES preprocessor condition.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 rt/shm_open.c            | 34 ++++++++++++++++++----
 sysdeps/posix/shm_open.c | 62 ----------------------------------------
 2 files changed, 29 insertions(+), 67 deletions(-)
 delete mode 100644 sysdeps/posix/shm_open.c

diff --git a/rt/shm_open.c b/rt/shm_open.c
index e2bd25978a..a89aac4102 100644
--- a/rt/shm_open.c
+++ b/rt/shm_open.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+/* shm_open -- open a POSIX shared memory object.  Generic POSIX file version.
+   Copyright (C) 2001-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
@@ -16,13 +17,36 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
-#include <sys/mman.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <shm-directory.h>
+#include <unistd.h>
 
 /* Open shared memory object.  */
 int
 shm_open (const char *name, int oflag, mode_t mode)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct shmdir_name dirname;
+  if (__shm_get_name (&dirname, name, false) != 0)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  oflag |= O_NOFOLLOW | O_CLOEXEC;
+
+  /* Disable asynchronous cancellation.  */
+  int state;
+  pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
+
+  int fd = open (dirname.name, oflag, mode);
+  if (fd == -1 && __glibc_unlikely (errno == EISDIR))
+    /* It might be better to fold this error with EINVAL since
+       directory names are just another example for unsuitable shared
+       object names and the standard does not mention EISDIR.  */
+    __set_errno (EINVAL);
+
+  pthread_setcancelstate (state, NULL);
+
+  return fd;
 }
-stub_warning (shm_open)
diff --git a/sysdeps/posix/shm_open.c b/sysdeps/posix/shm_open.c
deleted file mode 100644
index 1817c52f7f..0000000000
--- a/sysdeps/posix/shm_open.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* shm_open -- open a POSIX shared memory object.  Generic POSIX file version.
-   Copyright (C) 2001-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 <unistd.h>
-
-#if ! _POSIX_MAPPED_FILES
-
-# include <rt/shm_open.c>
-
-#else
-
-# include <errno.h>
-# include <fcntl.h>
-# include <pthread.h>
-# include <shm-directory.h>
-
-
-/* Open shared memory object.  */
-int
-shm_open (const char *name, int oflag, mode_t mode)
-{
-  struct shmdir_name dirname;
-  if (__shm_get_name (&dirname, name, false) != 0)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  oflag |= O_NOFOLLOW | O_CLOEXEC;
-
-  /* Disable asynchronous cancellation.  */
-  int state;
-  pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
-
-  int fd = open (dirname.name, oflag, mode);
-  if (fd == -1 && __glibc_unlikely (errno == EISDIR))
-    /* It might be better to fold this error with EINVAL since
-       directory names are just another example for unsuitable shared
-       object names and the standard does not mention EISDIR.  */
-    __set_errno (EINVAL);
-
-  pthread_setcancelstate (state, NULL);
-
-  return fd;
-}
-
-#endif  /* _POSIX_MAPPED_FILES */
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 04/34] rt: Replace generic stub of shm_unlink with the posix version
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (2 preceding siblings ...)
  2021-06-17 18:56 ` [PATCH 03/34] rt: Replace generic stub of shm_open with the posix version Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-17 18:57 ` [PATCH 05/34] rt: Move shm_open into libc Florian Weimer
                   ` (30 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

Result of: git mv -f sysdeps/posix/shm_unlink.c rt
and manual removal of the _POSIX_MAPPED_FILES preprocessor condition.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 rt/shm_unlink.c            | 21 +++++++++++++----
 sysdeps/posix/shm_unlink.c | 48 --------------------------------------
 2 files changed, 16 insertions(+), 53 deletions(-)
 delete mode 100644 sysdeps/posix/shm_unlink.c

diff --git a/rt/shm_unlink.c b/rt/shm_unlink.c
index 27c10d9dee..a5af5ac147 100644
--- a/rt/shm_unlink.c
+++ b/rt/shm_unlink.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+/* shm_unlink -- remove a POSIX shared memory object.  Generic POSIX version.
+   Copyright (C) 2001-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
@@ -16,13 +17,23 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
-#include <sys/mman.h>
+#include <shm-directory.h>
+#include <string.h>
+#include <unistd.h>
 
 /* Remove shared memory object.  */
 int
 shm_unlink (const char *name)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct shmdir_name dirname;
+  if (__shm_get_name (&dirname, name, false) != 0)
+    {
+      __set_errno (ENOENT);
+      return -1;
+    }
+
+  int result = unlink (dirname.name);
+  if (result < 0 && errno == EPERM)
+    __set_errno (EACCES);
+  return result;
 }
-stub_warning (shm_unlink)
diff --git a/sysdeps/posix/shm_unlink.c b/sysdeps/posix/shm_unlink.c
deleted file mode 100644
index c90b854c78..0000000000
--- a/sysdeps/posix/shm_unlink.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* shm_unlink -- remove a POSIX shared memory object.  Generic POSIX version.
-   Copyright (C) 2001-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 <unistd.h>
-
-#if ! _POSIX_MAPPED_FILES
-#include <rt/shm_unlink.c>
-
-#else
-
-#include <errno.h>
-#include <string.h>
-#include <shm-directory.h>
-
-
-/* Remove shared memory object.  */
-int
-shm_unlink (const char *name)
-{
-  struct shmdir_name dirname;
-  if (__shm_get_name (&dirname, name, false) != 0)
-    {
-      __set_errno (ENOENT);
-      return -1;
-    }
-
-  int result = unlink (dirname.name);
-  if (result < 0 && errno == EPERM)
-    __set_errno (EACCES);
-  return result;
-}
-
-#endif
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 05/34] rt: Move shm_open into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (3 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 04/34] rt: Replace generic stub of shm_unlink " Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-17 18:57 ` [PATCH 06/34] rt: Move shm_unlink " Florian Weimer
                   ` (29 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

This function has no dependency on libpthread, so the move is also
applied to Hurd.

To avoid localplt failures, use __open64_nocancel instead of
pthread_setcancelstate and open.

The symbol was moved using scripts/move-symbol-to-libc.py.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 rt/Makefile                                     |  4 +++-
 rt/Versions                                     |  9 ++++++++-
 rt/shm_open.c                                   | 17 +++++++++--------
 sysdeps/mach/hurd/i386/libc.abilist             |  2 ++
 sysdeps/mach/hurd/i386/librt.abilist            |  1 -
 sysdeps/unix/sysv/linux/aarch64/libc.abilist    |  2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist        |  2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist       |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist      |  1 -
 .../unix/sysv/linux/m68k/coldfire/libc.abilist  |  2 ++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist    |  2 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist   |  1 -
 .../unix/sysv/linux/microblaze/be/libc.abilist  |  2 ++
 .../unix/sysv/linux/microblaze/be/librt.abilist |  1 -
 .../unix/sysv/linux/microblaze/le/libc.abilist  |  2 ++
 .../unix/sysv/linux/microblaze/le/librt.abilist |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist     |  2 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist   |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist     |  2 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist    |  1 -
 .../sysv/linux/mips/mips64/n64/libc.abilist     |  2 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist     |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist    |  2 ++
 .../sysv/linux/powerpc/powerpc32/librt.abilist  |  1 -
 .../linux/powerpc/powerpc32/nofpu/libc.abilist  |  2 ++
 .../linux/powerpc/powerpc64/be/libc.abilist     |  2 ++
 .../linux/powerpc/powerpc64/be/librt.abilist    |  1 -
 .../linux/powerpc/powerpc64/le/libc.abilist     |  2 ++
 .../linux/powerpc/powerpc64/le/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist |  2 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist |  2 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist    |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist   |  2 ++
 .../unix/sysv/linux/s390/s390-32/librt.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist   |  2 ++
 .../unix/sysv/linux/s390/s390-64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist     |  1 -
 .../unix/sysv/linux/sparc/sparc32/libc.abilist  |  2 ++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist |  1 -
 .../unix/sysv/linux/sparc/sparc64/libc.abilist  |  2 ++
 .../unix/sysv/linux/sparc/sparc64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist  |  2 ++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist |  2 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist    |  1 -
 67 files changed, 86 insertions(+), 41 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 47bc594dee..ba141c82f2 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -24,6 +24,9 @@ include ../Makeconfig
 
 headers	:= aio.h mqueue.h bits/mqueue.h bits/mqueue2.h
 
+routines = \
+  shm_open \
+
 librt-routines = \
   aio_cancel \
   aio_error \
@@ -49,7 +52,6 @@ librt-routines = \
   mq_timedreceive \
   mq_timedsend \
   mq_unlink \
-  shm_open \
   shm_unlink \
   timer_create \
   timer_delete \
diff --git a/rt/Versions b/rt/Versions
index f151f85ef6..e1d208eeb3 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -1,3 +1,11 @@
+libc {
+  GLIBC_2.2 {
+    shm_open;
+  }
+  GLIBC_2.34 {
+    shm_open;
+  }
+}
 librt {
   GLIBC_2.1 {
     aio_cancel;
@@ -19,7 +27,6 @@ librt {
     lio_listio64;
   }
   GLIBC_2.2 {
-    shm_open;
     shm_unlink;
     timer_create;
     timer_delete;
diff --git a/rt/shm_open.c b/rt/shm_open.c
index a89aac4102..40eb8902a8 100644
--- a/rt/shm_open.c
+++ b/rt/shm_open.c
@@ -18,13 +18,15 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <not-cancel.h>
 #include <pthread.h>
+#include <shlib-compat.h>
 #include <shm-directory.h>
 #include <unistd.h>
 
 /* Open shared memory object.  */
 int
-shm_open (const char *name, int oflag, mode_t mode)
+__shm_open (const char *name, int oflag, mode_t mode)
 {
   struct shmdir_name dirname;
   if (__shm_get_name (&dirname, name, false) != 0)
@@ -35,18 +37,17 @@ shm_open (const char *name, int oflag, mode_t mode)
 
   oflag |= O_NOFOLLOW | O_CLOEXEC;
 
-  /* Disable asynchronous cancellation.  */
-  int state;
-  pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
-
-  int fd = open (dirname.name, oflag, mode);
+  int fd = __open64_nocancel (dirname.name, oflag, mode);
   if (fd == -1 && __glibc_unlikely (errno == EISDIR))
     /* It might be better to fold this error with EINVAL since
        directory names are just another example for unsuitable shared
        object names and the standard does not mention EISDIR.  */
     __set_errno (EINVAL);
 
-  pthread_setcancelstate (state, NULL);
-
   return fd;
 }
+versioned_symbol (libc, __shm_open, shm_open, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libc, __shm_open, shm_open, GLIBC_2_2);
+#endif
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index f651989962..f1e529f087 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -1566,6 +1566,7 @@ GLIBC_2.2.6 setutxent F
 GLIBC_2.2.6 setvbuf F
 GLIBC_2.2.6 sgetspent F
 GLIBC_2.2.6 sgetspent_r F
+GLIBC_2.2.6 shm_open F
 GLIBC_2.2.6 shmat F
 GLIBC_2.2.6 shmctl F
 GLIBC_2.2.6 shmdt F
@@ -2226,6 +2227,7 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/mach/hurd/i386/librt.abilist b/sysdeps/mach/hurd/i386/librt.abilist
index 3726e41f06..efee87f824 100644
--- a/sysdeps/mach/hurd/i386/librt.abilist
+++ b/sysdeps/mach/hurd/i386/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2.6 aio_write F
 GLIBC_2.2.6 aio_write64 F
 GLIBC_2.2.6 lio_listio F
 GLIBC_2.2.6 lio_listio64 F
-GLIBC_2.2.6 shm_open F
 GLIBC_2.2.6 shm_unlink F
 GLIBC_2.2.6 timer_create F
 GLIBC_2.2.6 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index ad4c83787d..f228fc17c3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1783,6 +1783,7 @@ GLIBC_2.17 sgetsgent F
 GLIBC_2.17 sgetsgent_r F
 GLIBC_2.17 sgetspent F
 GLIBC_2.17 sgetspent_r F
+GLIBC_2.17 shm_open F
 GLIBC_2.17 shmat F
 GLIBC_2.17 shmctl F
 GLIBC_2.17 shmdt F
@@ -2465,6 +2466,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 5e81c82a25..7ebb55d15e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
-GLIBC_2.17 shm_open F
 GLIBC_2.17 shm_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 30dfd0baa1..5b90ab838a 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2067,6 +2067,7 @@ GLIBC_2.2 rresvport_af F
 GLIBC_2.2 ruserok_af F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2558,6 +2559,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 71f86e03ce..bfa53df5cc 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 72ff8c5bdc..00a294c22a 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1728,6 +1728,7 @@ GLIBC_2.32 sgetsgent F
 GLIBC_2.32 sgetsgent_r F
 GLIBC_2.32 sgetspent F
 GLIBC_2.32 sgetspent_r F
+GLIBC_2.32 shm_open F
 GLIBC_2.32 shmat F
 GLIBC_2.32 shmctl F
 GLIBC_2.32 shmdt F
@@ -2224,6 +2225,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index fda2b20c01..febfd3320f 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mq_unlink F
-GLIBC_2.32 shm_open F
 GLIBC_2.32 shm_unlink F
 GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 4c870e6abb..f056f72b77 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -397,6 +397,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2101,6 +2102,7 @@ GLIBC_2.4 setvbuf F
 GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
+GLIBC_2.4 shm_open F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 8cb1ed626c..2c7735e023 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_open F
 GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 1f0dbc990a..45751a3796 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -394,6 +394,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2098,6 +2099,7 @@ GLIBC_2.4 setvbuf F
 GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
+GLIBC_2.4 shm_open F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 8cb1ed626c..2c7735e023 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_open F
 GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 9756eaeccf..cd0c551a53 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1788,6 +1788,7 @@ GLIBC_2.29 sgetsgent F
 GLIBC_2.29 sgetsgent_r F
 GLIBC_2.29 sgetspent F
 GLIBC_2.29 sgetspent_r F
+GLIBC_2.29 shm_open F
 GLIBC_2.29 shmat F
 GLIBC_2.29 shmctl F
 GLIBC_2.29 shmdt F
@@ -2484,6 +2485,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index b60deca65a..397141f226 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mq_unlink F
-GLIBC_2.29 shm_open F
 GLIBC_2.29 shm_unlink F
 GLIBC_2.29 timer_create F
 GLIBC_2.29 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index e78cb54597..6492ea8a6a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1555,6 +1555,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2438,6 +2439,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index d1583a5465..64e357202e 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2080,6 +2080,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2622,6 +2623,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 4a608b5d29..2d2a33196d 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1576,6 +1576,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2398,6 +2399,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 08384c9065..31af578b45 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 72db6c699b..868964dc1a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2081,6 +2082,7 @@ GLIBC_2.4 setvbuf F
 GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
+GLIBC_2.4 shm_open F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 8cb1ed626c..2c7735e023 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_open F
 GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index bd4166dbb1..2dbaa0e4cd 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2036,6 +2036,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2565,6 +2566,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 83a6edae67..afdb458987 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1787,6 +1787,7 @@ GLIBC_2.18 sgetsgent F
 GLIBC_2.18 sgetsgent_r F
 GLIBC_2.18 sgetspent F
 GLIBC_2.18 sgetspent_r F
+GLIBC_2.18 shm_open F
 GLIBC_2.18 shmat F
 GLIBC_2.18 shmctl F
 GLIBC_2.18 shmdt F
@@ -2535,6 +2536,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 1b8fc10087..e4b9a630af 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
-GLIBC_2.18 shm_open F
 GLIBC_2.18 shm_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index accdc16e0c..054410b405 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1787,6 +1787,7 @@ GLIBC_2.18 sgetsgent F
 GLIBC_2.18 sgetsgent_r F
 GLIBC_2.18 sgetspent F
 GLIBC_2.18 sgetspent_r F
+GLIBC_2.18 shm_open F
 GLIBC_2.18 shmat F
 GLIBC_2.18 shmctl F
 GLIBC_2.18 shmdt F
@@ -2532,6 +2533,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 1b8fc10087..e4b9a630af 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
-GLIBC_2.18 shm_open F
 GLIBC_2.18 shm_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 26149e7d3c..c39eec99ee 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1942,6 +1942,7 @@ GLIBC_2.2 semctl F
 GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
@@ -2530,6 +2531,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index c4dd28e3b2..b187230f59 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 8f9b7f088d..0344199ff9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1940,6 +1940,7 @@ GLIBC_2.2 semctl F
 GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
@@ -2528,6 +2529,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 57500f91ce..8f7783cb26 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1939,6 +1939,7 @@ GLIBC_2.2 sem_wait F
 GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
 GLIBC_2.2 sigqueue F
@@ -2536,6 +2537,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index c4dd28e3b2..b187230f59 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 485a0121dd..494829a95d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1935,6 +1935,7 @@ GLIBC_2.2 sem_wait F
 GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
 GLIBC_2.2 sigqueue F
@@ -2454,6 +2455,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 1539c1cef9..e62ed45d14 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index d07e736980..15236167e9 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1830,6 +1830,7 @@ GLIBC_2.21 sgetsgent F
 GLIBC_2.21 sgetsgent_r F
 GLIBC_2.21 sgetspent F
 GLIBC_2.21 sgetspent_r F
+GLIBC_2.21 shm_open F
 GLIBC_2.21 shmat F
 GLIBC_2.21 shmctl F
 GLIBC_2.21 shmdt F
@@ -2574,6 +2575,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 2458614125..d9db8e1781 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mq_unlink F
-GLIBC_2.21 shm_open F
 GLIBC_2.21 shm_unlink F
 GLIBC_2.21 timer_create F
 GLIBC_2.21 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 5a87b36192..5bfa644345 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2041,6 +2041,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2592,6 +2593,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 413bb1d87a..4d2899b97b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2045,6 +2045,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2625,6 +2626,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 3ff4d977f7..1b03a7b2b2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1684,6 +1684,7 @@ GLIBC_2.3 setvbuf F
 GLIBC_2.3 setxattr F
 GLIBC_2.3 sgetspent F
 GLIBC_2.3 sgetspent_r F
+GLIBC_2.3 shm_open F
 GLIBC_2.3 shmat F
 GLIBC_2.3 shmctl F
 GLIBC_2.3 shmdt F
@@ -2362,6 +2363,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 6a5bd96963..ce776089f4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.3 aio_write F
 GLIBC_2.3 aio_write64 F
 GLIBC_2.3 lio_listio F
 GLIBC_2.3 lio_listio64 F
-GLIBC_2.3 shm_open F
 GLIBC_2.3 shm_unlink F
 GLIBC_2.3 timer_create F
 GLIBC_2.3 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index c2c5c605ac..e69840ef13 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1871,6 +1871,7 @@ GLIBC_2.17 sgetsgent F
 GLIBC_2.17 sgetsgent_r F
 GLIBC_2.17 sgetspent F
 GLIBC_2.17 sgetspent_r F
+GLIBC_2.17 shm_open F
 GLIBC_2.17 shmat F
 GLIBC_2.17 shmctl F
 GLIBC_2.17 shmdt F
@@ -2661,6 +2662,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 5e81c82a25..7ebb55d15e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
-GLIBC_2.17 shm_open F
 GLIBC_2.17 shm_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 2abe414bda..77e707990b 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1730,6 +1730,7 @@ GLIBC_2.33 sgetsgent F
 GLIBC_2.33 sgetsgent_r F
 GLIBC_2.33 sgetspent F
 GLIBC_2.33 sgetspent_r F
+GLIBC_2.33 shm_open F
 GLIBC_2.33 shmat F
 GLIBC_2.33 shmctl F
 GLIBC_2.33 shmdt F
@@ -2226,6 +2227,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 8a3f5ed516..1af45783f0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mq_unlink F
-GLIBC_2.33 shm_open F
 GLIBC_2.33 shm_unlink F
 GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 947fc8072d..5eb837832d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1777,6 +1777,7 @@ GLIBC_2.27 sgetsgent F
 GLIBC_2.27 sgetsgent_r F
 GLIBC_2.27 sgetspent F
 GLIBC_2.27 sgetspent_r F
+GLIBC_2.27 shm_open F
 GLIBC_2.27 shmat F
 GLIBC_2.27 shmctl F
 GLIBC_2.27 shmdt F
@@ -2426,6 +2427,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index bfd262ecc5..51c05877bd 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mq_unlink F
-GLIBC_2.27 shm_open F
 GLIBC_2.27 shm_unlink F
 GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 1da934084c..05e5ff3519 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2039,6 +2039,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2590,6 +2591,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 084b419cf6..bad0a9e3f9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1572,6 +1572,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2399,6 +2400,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 5905498a48..269e72621b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 240e315a05..e7b48728bb 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1559,6 +1559,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2445,6 +2446,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index c8b6e4745e..60c84522df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1559,6 +1559,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2442,6 +2443,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 463a88a1df..9330ab2679 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 3ed972b8c9..4efddd8db9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2034,6 +2034,7 @@ GLIBC_2.2 ruserok_af F
 GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2583,6 +2584,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index fb2769e87b..fa286246e4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 27b3443394..b19426e2e3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1602,6 +1602,7 @@ GLIBC_2.2 setutxent F
 GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
+GLIBC_2.2 shm_open F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2419,6 +2420,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 71f86e03ce..bfa53df5cc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_open F
 GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 2e5c5957b0..e73bc2acea 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1569,6 +1569,7 @@ GLIBC_2.2.5 setutxent F
 GLIBC_2.2.5 setvbuf F
 GLIBC_2.2.5 sgetspent F
 GLIBC_2.2.5 sgetspent_r F
+GLIBC_2.2.5 shm_open F
 GLIBC_2.2.5 shmat F
 GLIBC_2.2.5 shmctl F
 GLIBC_2.2.5 shmdt F
@@ -2377,6 +2378,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 95e3f22daa..ec08fcfcb2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2.5 aio_write F
 GLIBC_2.2.5 aio_write64 F
 GLIBC_2.2.5 lio_listio F
 GLIBC_2.2.5 lio_listio64 F
-GLIBC_2.2.5 shm_open F
 GLIBC_2.2.5 shm_unlink F
 GLIBC_2.2.5 timer_create F
 GLIBC_2.2.5 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 0b0d1ac43f..4116101975 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1789,6 +1789,7 @@ GLIBC_2.16 sgetsgent F
 GLIBC_2.16 sgetsgent_r F
 GLIBC_2.16 sgetspent F
 GLIBC_2.16 sgetspent_r F
+GLIBC_2.16 shm_open F
 GLIBC_2.16 shmat F
 GLIBC_2.16 shmctl F
 GLIBC_2.16 shmdt F
@@ -2480,6 +2481,7 @@ GLIBC_2.34 sem_timedwait F
 GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
+GLIBC_2.34 shm_open F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 66969fb9ab..1e40b05c29 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mq_unlink F
-GLIBC_2.16 shm_open F
 GLIBC_2.16 shm_unlink F
 GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 06/34] rt: Move shm_unlink into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (4 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 05/34] rt: Move shm_open into libc Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-17 18:57 ` [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
                   ` (28 subsequent siblings)
  34 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

This function has no dependency on libpthread, so the move is also
applied to Hurd.

The symbol was moved using scripts/move-symbol-to-libc.py.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
---
 rt/Makefile                                            |  2 +-
 rt/Versions                                            |  3 ++-
 rt/shm_unlink.c                                        | 10 ++++++++--
 sysdeps/mach/hurd/i386/libc.abilist                    |  2 ++
 sysdeps/mach/hurd/i386/librt.abilist                   |  1 -
 sysdeps/unix/sysv/linux/aarch64/libc.abilist           |  2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist          |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist            |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist               |  2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist              |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist           |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist            |  2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist           |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist              |  2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist             |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist              |  2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist             |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist              |  2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist             |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist              |  2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist             |  1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist       |  2 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/microblaze/be/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/microblaze/le/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist            |  1 -
 .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist |  2 ++
 .../unix/sysv/linux/powerpc/powerpc32/librt.abilist    |  1 -
 .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist    |  2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist  |  2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist |  1 -
 .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist  |  2 ++
 .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist        |  2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist       |  1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist        |  2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist       |  1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist            |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist             |  2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist            |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist         |  2 ++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist        |  1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist        |  2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist       |  1 -
 67 files changed, 77 insertions(+), 35 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index ba141c82f2..329db09c32 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -26,6 +26,7 @@ headers	:= aio.h mqueue.h bits/mqueue.h bits/mqueue2.h
 
 routines = \
   shm_open \
+  shm_unlink \
 
 librt-routines = \
   aio_cancel \
@@ -52,7 +53,6 @@ librt-routines = \
   mq_timedreceive \
   mq_timedsend \
   mq_unlink \
-  shm_unlink \
   timer_create \
   timer_delete \
   timer_getoverr \
diff --git a/rt/Versions b/rt/Versions
index e1d208eeb3..309486be1e 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -1,9 +1,11 @@
 libc {
   GLIBC_2.2 {
     shm_open;
+    shm_unlink;
   }
   GLIBC_2.34 {
     shm_open;
+    shm_unlink;
   }
 }
 librt {
@@ -27,7 +29,6 @@ librt {
     lio_listio64;
   }
   GLIBC_2.2 {
-    shm_unlink;
     timer_create;
     timer_delete;
     timer_getoverrun;
diff --git a/rt/shm_unlink.c b/rt/shm_unlink.c
index a5af5ac147..85e9360e4c 100644
--- a/rt/shm_unlink.c
+++ b/rt/shm_unlink.c
@@ -17,13 +17,14 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <shlib-compat.h>
 #include <shm-directory.h>
 #include <string.h>
 #include <unistd.h>
 
 /* Remove shared memory object.  */
 int
-shm_unlink (const char *name)
+__shm_unlink (const char *name)
 {
   struct shmdir_name dirname;
   if (__shm_get_name (&dirname, name, false) != 0)
@@ -32,8 +33,13 @@ shm_unlink (const char *name)
       return -1;
     }
 
-  int result = unlink (dirname.name);
+  int result = __unlink (dirname.name);
   if (result < 0 && errno == EPERM)
     __set_errno (EACCES);
   return result;
 }
+versioned_symbol (libc, __shm_unlink, shm_unlink, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libc, __shm_unlink, shm_unlink, GLIBC_2_2);
+#endif
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index f1e529f087..c3232ba32e 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -1567,6 +1567,7 @@ GLIBC_2.2.6 setvbuf F
 GLIBC_2.2.6 sgetspent F
 GLIBC_2.2.6 sgetspent_r F
 GLIBC_2.2.6 shm_open F
+GLIBC_2.2.6 shm_unlink F
 GLIBC_2.2.6 shmat F
 GLIBC_2.2.6 shmctl F
 GLIBC_2.2.6 shmdt F
@@ -2228,6 +2229,7 @@ GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/mach/hurd/i386/librt.abilist b/sysdeps/mach/hurd/i386/librt.abilist
index efee87f824..022e10b897 100644
--- a/sysdeps/mach/hurd/i386/librt.abilist
+++ b/sysdeps/mach/hurd/i386/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2.6 aio_write F
 GLIBC_2.2.6 aio_write64 F
 GLIBC_2.2.6 lio_listio F
 GLIBC_2.2.6 lio_listio64 F
-GLIBC_2.2.6 shm_unlink F
 GLIBC_2.2.6 timer_create F
 GLIBC_2.2.6 timer_delete F
 GLIBC_2.2.6 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index f228fc17c3..42e240e284 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1784,6 +1784,7 @@ GLIBC_2.17 sgetsgent_r F
 GLIBC_2.17 sgetspent F
 GLIBC_2.17 sgetspent_r F
 GLIBC_2.17 shm_open F
+GLIBC_2.17 shm_unlink F
 GLIBC_2.17 shmat F
 GLIBC_2.17 shmctl F
 GLIBC_2.17 shmdt F
@@ -2467,6 +2468,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 7ebb55d15e..c41e0e675b 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
-GLIBC_2.17 shm_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 5b90ab838a..fad54555dc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2068,6 +2068,7 @@ GLIBC_2.2 ruserok_af F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2560,6 +2561,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index bfa53df5cc..c4985067f7 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 00a294c22a..907716ec39 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1729,6 +1729,7 @@ GLIBC_2.32 sgetsgent_r F
 GLIBC_2.32 sgetspent F
 GLIBC_2.32 sgetspent_r F
 GLIBC_2.32 shm_open F
+GLIBC_2.32 shm_unlink F
 GLIBC_2.32 shmat F
 GLIBC_2.32 shmctl F
 GLIBC_2.32 shmdt F
@@ -2226,6 +2227,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index febfd3320f..7ee0b6d324 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mq_unlink F
-GLIBC_2.32 shm_unlink F
 GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
 GLIBC_2.32 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index f056f72b77..50f987a429 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -398,6 +398,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2103,6 +2104,7 @@ GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
 GLIBC_2.4 shm_open F
+GLIBC_2.4 shm_unlink F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 2c7735e023..278da67f77 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 45751a3796..bf9038af84 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -395,6 +395,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2100,6 +2101,7 @@ GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
 GLIBC_2.4 shm_open F
+GLIBC_2.4 shm_unlink F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 2c7735e023..278da67f77 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index cd0c551a53..afb91f6f43 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1789,6 +1789,7 @@ GLIBC_2.29 sgetsgent_r F
 GLIBC_2.29 sgetspent F
 GLIBC_2.29 sgetspent_r F
 GLIBC_2.29 shm_open F
+GLIBC_2.29 shm_unlink F
 GLIBC_2.29 shmat F
 GLIBC_2.29 shmctl F
 GLIBC_2.29 shmdt F
@@ -2486,6 +2487,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 397141f226..60400954a3 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mq_unlink F
-GLIBC_2.29 shm_unlink F
 GLIBC_2.29 timer_create F
 GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 6492ea8a6a..125f8a269a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1556,6 +1556,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2440,6 +2441,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 64e357202e..517753bdd1 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2081,6 +2081,7 @@ GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2624,6 +2625,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 2d2a33196d..23d0928360 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1577,6 +1577,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2400,6 +2401,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 31af578b45..fa7f54dd55 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 868964dc1a..dd5fb50b18 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -399,6 +399,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
@@ -2083,6 +2084,7 @@ GLIBC_2.4 setxattr F
 GLIBC_2.4 sgetspent F
 GLIBC_2.4 sgetspent_r F
 GLIBC_2.4 shm_open F
+GLIBC_2.4 shm_unlink F
 GLIBC_2.4 shmat F
 GLIBC_2.4 shmctl F
 GLIBC_2.4 shmdt F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 2c7735e023..278da67f77 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -30,7 +30,6 @@ GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
-GLIBC_2.4 shm_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 2dbaa0e4cd..cb1d553361 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2037,6 +2037,7 @@ GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2567,6 +2568,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index afdb458987..6a20a6fdf2 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1788,6 +1788,7 @@ GLIBC_2.18 sgetsgent_r F
 GLIBC_2.18 sgetspent F
 GLIBC_2.18 sgetspent_r F
 GLIBC_2.18 shm_open F
+GLIBC_2.18 shm_unlink F
 GLIBC_2.18 shmat F
 GLIBC_2.18 shmctl F
 GLIBC_2.18 shmdt F
@@ -2537,6 +2538,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index e4b9a630af..a14deaabdb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
-GLIBC_2.18 shm_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 054410b405..4c21cbb64d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1788,6 +1788,7 @@ GLIBC_2.18 sgetsgent_r F
 GLIBC_2.18 sgetspent F
 GLIBC_2.18 sgetspent_r F
 GLIBC_2.18 shm_open F
+GLIBC_2.18 shm_unlink F
 GLIBC_2.18 shmat F
 GLIBC_2.18 shmctl F
 GLIBC_2.18 shmdt F
@@ -2534,6 +2535,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index e4b9a630af..a14deaabdb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
-GLIBC_2.18 shm_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index c39eec99ee..f83ba2f780 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1943,6 +1943,7 @@ GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
@@ -2532,6 +2533,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index b187230f59..2c212d29d0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 0344199ff9..347bbddb94 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1941,6 +1941,7 @@ GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
@@ -2530,6 +2531,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 8f7783cb26..26b7ab529b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1940,6 +1940,7 @@ GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
 GLIBC_2.2 sigqueue F
@@ -2538,6 +2539,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index b187230f59..2c212d29d0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 494829a95d..e667b0e553 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1936,6 +1936,7 @@ GLIBC_2.2 sendfile F
 GLIBC_2.2 setrlimit64 F
 GLIBC_2.2 setutxent F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 sighold F
 GLIBC_2.2 sigignore F
 GLIBC_2.2 sigqueue F
@@ -2456,6 +2457,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index e62ed45d14..2c7d661e56 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 15236167e9..89a1cc7da6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1831,6 +1831,7 @@ GLIBC_2.21 sgetsgent_r F
 GLIBC_2.21 sgetspent F
 GLIBC_2.21 sgetspent_r F
 GLIBC_2.21 shm_open F
+GLIBC_2.21 shm_unlink F
 GLIBC_2.21 shmat F
 GLIBC_2.21 shmctl F
 GLIBC_2.21 shmdt F
@@ -2576,6 +2577,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index d9db8e1781..f600881b44 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mq_unlink F
-GLIBC_2.21 shm_unlink F
 GLIBC_2.21 timer_create F
 GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 5bfa644345..f364c5219e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2042,6 +2042,7 @@ GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2594,6 +2595,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 4d2899b97b..f5bcc78afe 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2046,6 +2046,7 @@ GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2627,6 +2628,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 1b03a7b2b2..6032716053 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1685,6 +1685,7 @@ GLIBC_2.3 setxattr F
 GLIBC_2.3 sgetspent F
 GLIBC_2.3 sgetspent_r F
 GLIBC_2.3 shm_open F
+GLIBC_2.3 shm_unlink F
 GLIBC_2.3 shmat F
 GLIBC_2.3 shmctl F
 GLIBC_2.3 shmdt F
@@ -2364,6 +2365,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index ce776089f4..b3c7afb461 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.3 aio_write F
 GLIBC_2.3 aio_write64 F
 GLIBC_2.3 lio_listio F
 GLIBC_2.3 lio_listio64 F
-GLIBC_2.3 shm_unlink F
 GLIBC_2.3 timer_create F
 GLIBC_2.3 timer_delete F
 GLIBC_2.3 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index e69840ef13..8c5494e1dc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1872,6 +1872,7 @@ GLIBC_2.17 sgetsgent_r F
 GLIBC_2.17 sgetspent F
 GLIBC_2.17 sgetspent_r F
 GLIBC_2.17 shm_open F
+GLIBC_2.17 shm_unlink F
 GLIBC_2.17 shmat F
 GLIBC_2.17 shmctl F
 GLIBC_2.17 shmdt F
@@ -2663,6 +2664,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 7ebb55d15e..c41e0e675b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
-GLIBC_2.17 shm_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 77e707990b..d7db279c1e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1731,6 +1731,7 @@ GLIBC_2.33 sgetsgent_r F
 GLIBC_2.33 sgetspent F
 GLIBC_2.33 sgetspent_r F
 GLIBC_2.33 shm_open F
+GLIBC_2.33 shm_unlink F
 GLIBC_2.33 shmat F
 GLIBC_2.33 shmctl F
 GLIBC_2.33 shmdt F
@@ -2228,6 +2229,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 1af45783f0..c03b8a741e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mq_unlink F
-GLIBC_2.33 shm_unlink F
 GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
 GLIBC_2.33 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 5eb837832d..ef03dc0f9e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1778,6 +1778,7 @@ GLIBC_2.27 sgetsgent_r F
 GLIBC_2.27 sgetspent F
 GLIBC_2.27 sgetspent_r F
 GLIBC_2.27 shm_open F
+GLIBC_2.27 shm_unlink F
 GLIBC_2.27 shmat F
 GLIBC_2.27 shmctl F
 GLIBC_2.27 shmdt F
@@ -2428,6 +2429,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 51c05877bd..3cc7884927 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mq_unlink F
-GLIBC_2.27 shm_unlink F
 GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
 GLIBC_2.27 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 05e5ff3519..9118cb68ec 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2040,6 +2040,7 @@ GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 setrlimit F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2592,6 +2593,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index bad0a9e3f9..66c01bd7e7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1573,6 +1573,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2401,6 +2402,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 269e72621b..80735b140b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index e7b48728bb..c40eb412c2 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1560,6 +1560,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2447,6 +2448,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 60c84522df..1412d33835 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1560,6 +1560,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2444,6 +2445,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 9330ab2679..6ac4f0597e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4efddd8db9..7b55d34753 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2035,6 +2035,7 @@ GLIBC_2.2 scandir64 F
 GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 semctl F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 svc_getreq_common F
 GLIBC_2.2 svc_getreq_poll F
@@ -2585,6 +2586,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index fa286246e4..100bd4fb76 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index b19426e2e3..cfd5f38864 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1603,6 +1603,7 @@ GLIBC_2.2 setvbuf F
 GLIBC_2.2 sgetspent F
 GLIBC_2.2 sgetspent_r F
 GLIBC_2.2 shm_open F
+GLIBC_2.2 shm_unlink F
 GLIBC_2.2 shmat F
 GLIBC_2.2 shmctl F
 GLIBC_2.2 shmdt F
@@ -2421,6 +2422,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index bfa53df5cc..c4985067f7 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 shm_unlink F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index e73bc2acea..17be05f14f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1570,6 +1570,7 @@ GLIBC_2.2.5 setvbuf F
 GLIBC_2.2.5 sgetspent F
 GLIBC_2.2.5 sgetspent_r F
 GLIBC_2.2.5 shm_open F
+GLIBC_2.2.5 shm_unlink F
 GLIBC_2.2.5 shmat F
 GLIBC_2.2.5 shmctl F
 GLIBC_2.2.5 shmdt F
@@ -2379,6 +2380,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index ec08fcfcb2..a3da4f8e6e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.2.5 aio_write F
 GLIBC_2.2.5 aio_write64 F
 GLIBC_2.2.5 lio_listio F
 GLIBC_2.2.5 lio_listio64 F
-GLIBC_2.2.5 shm_unlink F
 GLIBC_2.2.5 timer_create F
 GLIBC_2.2.5 timer_delete F
 GLIBC_2.2.5 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 4116101975..a9db18906b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1790,6 +1790,7 @@ GLIBC_2.16 sgetsgent_r F
 GLIBC_2.16 sgetspent F
 GLIBC_2.16 sgetspent_r F
 GLIBC_2.16 shm_open F
+GLIBC_2.16 shm_unlink F
 GLIBC_2.16 shmat F
 GLIBC_2.16 shmctl F
 GLIBC_2.16 shmdt F
@@ -2482,6 +2483,7 @@ GLIBC_2.34 sem_trywait F
 GLIBC_2.34 sem_unlink F
 GLIBC_2.34 sem_wait F
 GLIBC_2.34 shm_open F
+GLIBC_2.34 shm_unlink F
 GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 1e40b05c29..a0069d137b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -26,7 +26,6 @@ GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mq_unlink F
-GLIBC_2.16 shm_unlink F
 GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
 GLIBC_2.16 timer_getoverrun F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (5 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 06/34] rt: Move shm_unlink " Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-21 18:37   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
                   ` (27 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

The pthread-based implementation is the generic one.  Replacing
the stubs makes it clear that they do not have to be adjusted for
the libpthread move.

Result of:

    git mv -f sysdeps/pthread/aio_misc.h sysdeps/generic/
    git mv sysdeps/pthread/timer_routines.c sysdeps/htl/
    git mv -f sysdeps/pthread/{aio,lio,timer}_*.c rt/

Followed by manual adjustment of the #include paths in
sysdeps/unix/sysv/linux/wordsize-64, and a move of the version
definitions formerly in sysdeps/pthread/Versions.
---
 rt/Versions                                   |   4 +
 rt/aio_cancel.c                               | 129 +++-
 rt/aio_error.c                                |  12 +-
 rt/aio_fsync.c                                |  26 +-
 rt/aio_misc.c                                 | 699 ++++++++++++++++-
 rt/aio_notify.c                               | 144 +++-
 rt/aio_read.c                                 |  18 +-
 rt/aio_read64.c                               |  32 +-
 rt/aio_suspend.c                              | 237 +++++-
 rt/aio_write.c                                |  18 +-
 rt/aio_write64.c                              |  32 +-
 rt/lio_listio.c                               | 236 +++++-
 rt/lio_listio64.c                             |  33 +-
 rt/timer_create.c                             | 156 +++-
 rt/timer_delete.c                             |  58 +-
 rt/timer_getoverr.c                           |  33 +-
 rt/timer_gettime.c                            |  64 +-
 rt/timer_settime.c                            | 120 ++-
 sysdeps/generic/aio_misc.h                    |  83 +-
 sysdeps/{pthread => htl}/timer_routines.c     |   0
 sysdeps/pthread/Versions                      |   5 -
 sysdeps/pthread/aio_cancel.c                  | 157 ----
 sysdeps/pthread/aio_error.c                   |  48 --
 sysdeps/pthread/aio_fsync.c                   |  57 --
 sysdeps/pthread/aio_misc.c                    | 721 ------------------
 sysdeps/pthread/aio_misc.h                    | 122 ---
 sysdeps/pthread/aio_notify.c                  | 157 ----
 sysdeps/pthread/aio_read.c                    |  30 -
 sysdeps/pthread/aio_read64.c                  |  30 -
 sysdeps/pthread/aio_suspend.c                 | 263 -------
 sysdeps/pthread/aio_write.c                   |  30 -
 sysdeps/pthread/aio_write64.c                 |  30 -
 sysdeps/pthread/lio_listio.c                  | 248 ------
 sysdeps/pthread/lio_listio64.c                |  33 -
 sysdeps/pthread/timer_create.c                | 166 ----
 sysdeps/pthread/timer_delete.c                |  68 --
 sysdeps/pthread/timer_getoverr.c              |  43 --
 sysdeps/pthread/timer_gettime.c               |  74 --
 sysdeps/pthread/timer_settime.c               | 131 ----
 sysdeps/unix/sysv/linux/alpha/aio_cancel.c    |   4 +-
 sysdeps/unix/sysv/linux/sparc/aio_cancel.c    |   4 +-
 .../unix/sysv/linux/wordsize-64/aio_read.c    |   2 +-
 .../unix/sysv/linux/wordsize-64/aio_write.c   |   2 +-
 .../unix/sysv/linux/wordsize-64/lio_listio.c  |   2 +-
 44 files changed, 2017 insertions(+), 2544 deletions(-)
 rename sysdeps/{pthread => htl}/timer_routines.c (100%)
 delete mode 100644 sysdeps/pthread/Versions
 delete mode 100644 sysdeps/pthread/aio_cancel.c
 delete mode 100644 sysdeps/pthread/aio_error.c
 delete mode 100644 sysdeps/pthread/aio_fsync.c
 delete mode 100644 sysdeps/pthread/aio_misc.c
 delete mode 100644 sysdeps/pthread/aio_misc.h
 delete mode 100644 sysdeps/pthread/aio_notify.c
 delete mode 100644 sysdeps/pthread/aio_read.c
 delete mode 100644 sysdeps/pthread/aio_read64.c
 delete mode 100644 sysdeps/pthread/aio_suspend.c
 delete mode 100644 sysdeps/pthread/aio_write.c
 delete mode 100644 sysdeps/pthread/aio_write64.c
 delete mode 100644 sysdeps/pthread/lio_listio.c
 delete mode 100644 sysdeps/pthread/lio_listio64.c
 delete mode 100644 sysdeps/pthread/timer_create.c
 delete mode 100644 sysdeps/pthread/timer_delete.c
 delete mode 100644 sysdeps/pthread/timer_getoverr.c
 delete mode 100644 sysdeps/pthread/timer_gettime.c
 delete mode 100644 sysdeps/pthread/timer_settime.c

diff --git a/rt/Versions b/rt/Versions
index 309486be1e..26c6d1ac63 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -47,6 +47,10 @@ librt {
     mq_timedsend;
     mq_unlink;
   }
+  GLIBC_2.4 {
+    lio_listio;
+    lio_listio64;
+  }
   GLIBC_2.7 {
    __mq_open_2;
   }
diff --git a/rt/aio_cancel.c b/rt/aio_cancel.c
index dba1e45044..63fd88f36c 100644
--- a/rt/aio_cancel.c
+++ b/rt/aio_cancel.c
@@ -1,6 +1,7 @@
-/* Cancel requests associated with given file descriptor.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Cancel requests associated with given file descriptor.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -22,21 +23,135 @@
    we want to avoid code duplication by using aliases.  But gcc sees
    the different parameter lists and prints a warning.  We define here
    a function so that aio_cancel64 has no prototype.  */
+#ifndef aio_cancel
 #define aio_cancel64 XXX
 #include <aio.h>
 /* And undo the hack.  */
 #undef aio_cancel64
+#endif
 
+#include <assert.h>
 #include <errno.h>
+#include <fcntl.h>
+
+#include <aio_misc.h>
+
 
 int
 aio_cancel (int fildes, struct aiocb *aiocbp)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct requestlist *req = NULL;
+  int result = AIO_ALLDONE;
+
+  /* If fildes is invalid, error. */
+  if (fcntl (fildes, F_GETFL) < 0)
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  /* Request the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  /* We are asked to cancel a specific AIO request.  */
+  if (aiocbp != NULL)
+    {
+      /* If the AIO request is not for this descriptor it has no value
+	 to look for the request block.  */
+      if (aiocbp->aio_fildes != fildes)
+	{
+	  pthread_mutex_unlock (&__aio_requests_mutex);
+	  __set_errno (EINVAL);
+	  return -1;
+	}
+      else if (aiocbp->__error_code == EINPROGRESS)
+	{
+	  struct requestlist *last = NULL;
+
+	  req = __aio_find_req_fd (fildes);
+
+	  if (req == NULL)
+	    {
+	    not_found:
+	      pthread_mutex_unlock (&__aio_requests_mutex);
+	      __set_errno (EINVAL);
+	      return -1;
+	    }
+
+	  while (req->aiocbp != (aiocb_union *) aiocbp)
+	    {
+	      last = req;
+	      req = req->next_prio;
+	      if (req == NULL)
+		goto not_found;
+	    }
+
+	  /* Don't remove the entry if a thread is already working on it.  */
+	  if (req->running == allocated)
+	    {
+	      result = AIO_NOTCANCELED;
+	      req = NULL;
+	    }
+	  else
+	    {
+	      /* We can remove the entry.  */
+	      __aio_remove_request (last, req, 0);
+
+	      result = AIO_CANCELED;
+
+	      req->next_prio = NULL;
+	    }
+	}
+    }
+  else
+    {
+      /* Find the beginning of the list of all requests for this
+	 desriptor.  */
+      req = __aio_find_req_fd (fildes);
+
+      /* If any request is worked on by a thread it must be the first.
+	 So either we can delete all requests or all but the first.  */
+      if (req != NULL)
+	{
+	  if (req->running == allocated)
+	    {
+	      struct requestlist *old = req;
+	      req = req->next_prio;
+	      old->next_prio = NULL;
+
+	      result = AIO_NOTCANCELED;
+
+	      if (req != NULL)
+		__aio_remove_request (old, req, 1);
+	    }
+	  else
+	    {
+	      result = AIO_CANCELED;
+
+	      /* We can remove the entry.  */
+	      __aio_remove_request (NULL, req, 1);
+	    }
+	}
+    }
+
+  /* Mark requests as canceled and send signal.  */
+  while (req != NULL)
+    {
+      struct requestlist *old = req;
+      assert (req->running == yes || req->running == queued);
+      req->aiocbp->aiocb.__error_code = ECANCELED;
+      req->aiocbp->aiocb.__return_value = -1;
+      __aio_notify (req);
+      req = req->next_prio;
+      __aio_free_request (old);
+    }
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+
+  return result;
 }
 
+#ifndef aio_cancel
 weak_alias (aio_cancel, aio_cancel64)
-
-stub_warning (aio_cancel)
-stub_warning (aio_cancel64)
+#endif
diff --git a/rt/aio_error.c b/rt/aio_error.c
index 730b64b5e9..ed664ae0ef 100644
--- a/rt/aio_error.c
+++ b/rt/aio_error.c
@@ -28,11 +28,21 @@
 /* And undo the hack.  */
 #undef aio_error64
 
+#include <aio_misc.h>
+
 
 int
 aio_error (const struct aiocb *aiocbp)
 {
-  return aiocbp->__error_code;
+  int ret;
+
+  /* Acquire the mutex to make sure all operations for this request are
+     complete.  */
+  pthread_mutex_lock(&__aio_requests_mutex);
+  ret = aiocbp->__error_code;
+  pthread_mutex_unlock(&__aio_requests_mutex);
+
+  return ret;
 }
 
 weak_alias (aio_error, aio_error64)
diff --git a/rt/aio_fsync.c b/rt/aio_fsync.c
index 86727246f8..5a52e2fec0 100644
--- a/rt/aio_fsync.c
+++ b/rt/aio_fsync.c
@@ -1,6 +1,7 @@
-/* Synchronize I/O in given file descriptor.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Synchronize I/O in given file descriptor.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -26,24 +27,31 @@
 #include <aio.h>
 /* And undo the hack.  */
 #undef aio_fsync64
-
 #include <errno.h>
 #include <fcntl.h>
 
+#include <aio_misc.h>
+
+
 int
 aio_fsync (int op, struct aiocb *aiocbp)
 {
-  if (op != O_SYNC && op != O_DSYNC)
+  if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
     {
       __set_errno (EINVAL);
       return -1;
     }
 
-  __set_errno (ENOSYS);
-  return -1;
+  /* Verify that this is an open file descriptor.  */
+  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  return (__aio_enqueue_request ((aiocb_union *) aiocbp,
+				 op == O_SYNC ? LIO_SYNC : LIO_DSYNC) == NULL
+	  ? -1 : 0);
 }
 
 weak_alias (aio_fsync, aio_fsync64)
-
-stub_warning (aio_fsync)
-stub_warning (aio_fsync64)
diff --git a/rt/aio_misc.c b/rt/aio_misc.c
index 2332f3ed53..b95f07d9d3 100644
--- a/rt/aio_misc.c
+++ b/rt/aio_misc.c
@@ -1,6 +1,7 @@
-/* Handle general operations.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Handle general operations.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -17,12 +18,704 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <aio.h>
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/time.h>
 #include <aio_misc.h>
 
-/* This file is for internal code needed by the aio_* implementation.  */
+#ifndef aio_create_helper_thread
+# define aio_create_helper_thread __aio_create_helper_thread
 
+extern inline int
+__aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
+{
+  pthread_attr_t attr;
+
+  /* Make sure the thread is created detached.  */
+  pthread_attr_init (&attr);
+  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+
+  int ret = pthread_create (threadp, &attr, tf, arg);
+
+  (void) pthread_attr_destroy (&attr);
+  return ret;
+}
+#endif
+
+static void add_request_to_runlist (struct requestlist *newrequest);
+
+/* Pool of request list entries.  */
+static struct requestlist **pool;
+
+/* Number of total and allocated pool entries.  */
+static size_t pool_max_size;
+static size_t pool_size;
+
+/* We implement a two dimensional array but allocate each row separately.
+   The macro below determines how many entries should be used per row.
+   It should better be a power of two.  */
+#define ENTRIES_PER_ROW	32
+
+/* How many rows we allocate at once.  */
+#define ROWS_STEP	8
+
+/* List of available entries.  */
+static struct requestlist *freelist;
+
+/* List of request waiting to be processed.  */
+static struct requestlist *runlist;
+
+/* Structure list of all currently processed requests.  */
+static struct requestlist *requests;
+
+/* Number of threads currently running.  */
+static int nthreads;
+
+/* Number of threads waiting for work to arrive. */
+static int idle_thread_count;
+
+
+/* These are the values used to optimize the use of AIO.  The user can
+   overwrite them by using the `aio_init' function.  */
+static struct aioinit optim =
+{
+  20,	/* int aio_threads;	Maximal number of threads.  */
+  64,	/* int aio_num;		Number of expected simultaneous requests. */
+  0,
+  0,
+  0,
+  0,
+  1,
+  0
+};
+
+
+/* Since the list is global we need a mutex protecting it.  */
+pthread_mutex_t __aio_requests_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+
+/* When you add a request to the list and there are idle threads present,
+   you signal this condition variable. When a thread finishes work, it waits
+   on this condition variable for a time before it actually exits. */
+pthread_cond_t __aio_new_request_notification = PTHREAD_COND_INITIALIZER;
+
+
+/* Functions to handle request list pool.  */
+static struct requestlist *
+get_elem (void)
+{
+  struct requestlist *result;
+
+  if (freelist == NULL)
+    {
+      struct requestlist *new_row;
+      int cnt;
+
+      assert (sizeof (struct aiocb) == sizeof (struct aiocb64));
+
+      if (pool_size + 1 >= pool_max_size)
+	{
+	  size_t new_max_size = pool_max_size + ROWS_STEP;
+	  struct requestlist **new_tab;
+
+	  new_tab = (struct requestlist **)
+	    realloc (pool, new_max_size * sizeof (struct requestlist *));
+
+	  if (new_tab == NULL)
+	    return NULL;
+
+	  pool_max_size = new_max_size;
+	  pool = new_tab;
+	}
+
+      /* Allocate the new row.  */
+      cnt = pool_size == 0 ? optim.aio_num : ENTRIES_PER_ROW;
+      new_row = (struct requestlist *) calloc (cnt,
+					       sizeof (struct requestlist));
+      if (new_row == NULL)
+	return NULL;
+
+      pool[pool_size++] = new_row;
+
+      /* Put all the new entries in the freelist.  */
+      do
+	{
+	  new_row->next_prio = freelist;
+	  freelist = new_row++;
+	}
+      while (--cnt > 0);
+    }
+
+  result = freelist;
+  freelist = freelist->next_prio;
+
+  return result;
+}
+
+
+void
+__aio_free_request (struct requestlist *elem)
+{
+  elem->running = no;
+  elem->next_prio = freelist;
+  freelist = elem;
+}
+
+
+struct requestlist *
+__aio_find_req (aiocb_union *elem)
+{
+  struct requestlist *runp = requests;
+  int fildes = elem->aiocb.aio_fildes;
+
+  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
+    runp = runp->next_fd;
+
+  if (runp != NULL)
+    {
+      if (runp->aiocbp->aiocb.aio_fildes != fildes)
+	runp = NULL;
+      else
+	while (runp != NULL && runp->aiocbp != elem)
+	  runp = runp->next_prio;
+    }
+
+  return runp;
+}
+
+
+struct requestlist *
+__aio_find_req_fd (int fildes)
+{
+  struct requestlist *runp = requests;
+
+  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
+    runp = runp->next_fd;
+
+  return (runp != NULL && runp->aiocbp->aiocb.aio_fildes == fildes
+	  ? runp : NULL);
+}
+
+
+void
+__aio_remove_request (struct requestlist *last, struct requestlist *req,
+		      int all)
+{
+  assert (req->running == yes || req->running == queued
+	  || req->running == done);
+
+  if (last != NULL)
+    last->next_prio = all ? NULL : req->next_prio;
+  else
+    {
+      if (all || req->next_prio == NULL)
+	{
+	  if (req->last_fd != NULL)
+	    req->last_fd->next_fd = req->next_fd;
+	  else
+	    requests = req->next_fd;
+	  if (req->next_fd != NULL)
+	    req->next_fd->last_fd = req->last_fd;
+	}
+      else
+	{
+	  if (req->last_fd != NULL)
+	    req->last_fd->next_fd = req->next_prio;
+	  else
+	    requests = req->next_prio;
+
+	  if (req->next_fd != NULL)
+	    req->next_fd->last_fd = req->next_prio;
+
+	  req->next_prio->last_fd = req->last_fd;
+	  req->next_prio->next_fd = req->next_fd;
+
+	  /* Mark this entry as runnable.  */
+	  req->next_prio->running = yes;
+	}
+
+      if (req->running == yes)
+	{
+	  struct requestlist *runp = runlist;
+
+	  last = NULL;
+	  while (runp != NULL)
+	    {
+	      if (runp == req)
+		{
+		  if (last == NULL)
+		    runlist = runp->next_run;
+		  else
+		    last->next_run = runp->next_run;
+		  break;
+		}
+	      last = runp;
+	      runp = runp->next_run;
+	    }
+	}
+    }
+}
+
+
+/* The thread handler.  */
+static void *handle_fildes_io (void *arg);
+
+
+/* User optimization.  */
 void
 __aio_init (const struct aioinit *init)
 {
+  /* Get the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  /* Only allow writing new values if the table is not yet allocated.  */
+  if (pool == NULL)
+    {
+      optim.aio_threads = init->aio_threads < 1 ? 1 : init->aio_threads;
+      assert (powerof2 (ENTRIES_PER_ROW));
+      optim.aio_num = (init->aio_num < ENTRIES_PER_ROW
+		       ? ENTRIES_PER_ROW
+		       : init->aio_num & ~(ENTRIES_PER_ROW - 1));
+    }
+
+  if (init->aio_idle_time != 0)
+    optim.aio_idle_time = init->aio_idle_time;
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
 }
 weak_alias (__aio_init, aio_init)
+
+
+/* The main function of the async I/O handling.  It enqueues requests
+   and if necessary starts and handles threads.  */
+struct requestlist *
+__aio_enqueue_request (aiocb_union *aiocbp, int operation)
+{
+  int result = 0;
+  int policy, prio;
+  struct sched_param param;
+  struct requestlist *last, *runp, *newp;
+  int running = no;
+
+  if (operation == LIO_SYNC || operation == LIO_DSYNC)
+    aiocbp->aiocb.aio_reqprio = 0;
+  else if (aiocbp->aiocb.aio_reqprio < 0
+#ifdef AIO_PRIO_DELTA_MAX
+	   || aiocbp->aiocb.aio_reqprio > AIO_PRIO_DELTA_MAX
+#endif
+	   )
+    {
+      /* Invalid priority value.  */
+      __set_errno (EINVAL);
+      aiocbp->aiocb.__error_code = EINVAL;
+      aiocbp->aiocb.__return_value = -1;
+      return NULL;
+    }
+
+  /* Compute priority for this request.  */
+  pthread_getschedparam (pthread_self (), &policy, &param);
+  prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
+
+  /* Get the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  last = NULL;
+  runp = requests;
+  /* First look whether the current file descriptor is currently
+     worked with.  */
+  while (runp != NULL
+	 && runp->aiocbp->aiocb.aio_fildes < aiocbp->aiocb.aio_fildes)
+    {
+      last = runp;
+      runp = runp->next_fd;
+    }
+
+  /* Get a new element for the waiting list.  */
+  newp = get_elem ();
+  if (newp == NULL)
+    {
+      pthread_mutex_unlock (&__aio_requests_mutex);
+      __set_errno (EAGAIN);
+      return NULL;
+    }
+  newp->aiocbp = aiocbp;
+  newp->waiting = NULL;
+
+  aiocbp->aiocb.__abs_prio = prio;
+  aiocbp->aiocb.__policy = policy;
+  aiocbp->aiocb.aio_lio_opcode = operation;
+  aiocbp->aiocb.__error_code = EINPROGRESS;
+  aiocbp->aiocb.__return_value = 0;
+
+  if (runp != NULL
+      && runp->aiocbp->aiocb.aio_fildes == aiocbp->aiocb.aio_fildes)
+    {
+      /* The current file descriptor is worked on.  It makes no sense
+	 to start another thread since this new thread would fight
+	 with the running thread for the resources.  But we also cannot
+	 say that the thread processing this desriptor shall immediately
+	 after finishing the current job process this request if there
+	 are other threads in the running queue which have a higher
+	 priority.  */
+
+      /* Simply enqueue it after the running one according to the
+	 priority.  */
+      last = NULL;
+      while (runp->next_prio != NULL
+	     && runp->next_prio->aiocbp->aiocb.__abs_prio >= prio)
+	{
+	  last = runp;
+	  runp = runp->next_prio;
+	}
+
+      newp->next_prio = runp->next_prio;
+      runp->next_prio = newp;
+
+      running = queued;
+    }
+  else
+    {
+      running = yes;
+      /* Enqueue this request for a new descriptor.  */
+      if (last == NULL)
+	{
+	  newp->last_fd = NULL;
+	  newp->next_fd = requests;
+	  if (requests != NULL)
+	    requests->last_fd = newp;
+	  requests = newp;
+	}
+      else
+	{
+	  newp->next_fd = last->next_fd;
+	  newp->last_fd = last;
+	  last->next_fd = newp;
+	  if (newp->next_fd != NULL)
+	    newp->next_fd->last_fd = newp;
+	}
+
+      newp->next_prio = NULL;
+      last = NULL;
+    }
+
+  if (running == yes)
+    {
+      /* We try to create a new thread for this file descriptor.  The
+	 function which gets called will handle all available requests
+	 for this descriptor and when all are processed it will
+	 terminate.
+
+	 If no new thread can be created or if the specified limit of
+	 threads for AIO is reached we queue the request.  */
+
+      /* See if we need to and are able to create a thread.  */
+      if (nthreads < optim.aio_threads && idle_thread_count == 0)
+	{
+	  pthread_t thid;
+
+	  running = newp->running = allocated;
+
+	  /* Now try to start a thread.  */
+	  result = aio_create_helper_thread (&thid, handle_fildes_io, newp);
+	  if (result == 0)
+	    /* We managed to enqueue the request.  All errors which can
+	       happen now can be recognized by calls to `aio_return' and
+	       `aio_error'.  */
+	    ++nthreads;
+	  else
+	    {
+	      /* Reset the running flag.  The new request is not running.  */
+	      running = newp->running = yes;
+
+	      if (nthreads == 0)
+		{
+		  /* We cannot create a thread in the moment and there is
+		     also no thread running.  This is a problem.  `errno' is
+		     set to EAGAIN if this is only a temporary problem.  */
+		  __aio_remove_request (last, newp, 0);
+		}
+	      else
+		result = 0;
+	    }
+	}
+    }
+
+  /* Enqueue the request in the run queue if it is not yet running.  */
+  if (running == yes && result == 0)
+    {
+      add_request_to_runlist (newp);
+
+      /* If there is a thread waiting for work, then let it know that we
+	 have just given it something to do. */
+      if (idle_thread_count > 0)
+	pthread_cond_signal (&__aio_new_request_notification);
+    }
+
+  if (result == 0)
+    newp->running = running;
+  else
+    {
+      /* Something went wrong.  */
+      __aio_free_request (newp);
+      aiocbp->aiocb.__error_code = result;
+      __set_errno (result);
+      newp = NULL;
+    }
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+
+  return newp;
+}
+
+
+static void *
+handle_fildes_io (void *arg)
+{
+  pthread_t self = pthread_self ();
+  struct sched_param param;
+  struct requestlist *runp = (struct requestlist *) arg;
+  aiocb_union *aiocbp;
+  int policy;
+  int fildes;
+
+  pthread_getschedparam (self, &policy, &param);
+
+  do
+    {
+      /* If runp is NULL, then we were created to service the work queue
+	 in general, not to handle any particular request. In that case we
+	 skip the "do work" stuff on the first pass, and go directly to the
+	 "get work off the work queue" part of this loop, which is near the
+	 end. */
+      if (runp == NULL)
+	pthread_mutex_lock (&__aio_requests_mutex);
+      else
+	{
+	  /* Hopefully this request is marked as running.  */
+	  assert (runp->running == allocated);
+
+	  /* Update our variables.  */
+	  aiocbp = runp->aiocbp;
+	  fildes = aiocbp->aiocb.aio_fildes;
+
+	  /* Change the priority to the requested value (if necessary).  */
+	  if (aiocbp->aiocb.__abs_prio != param.sched_priority
+	      || aiocbp->aiocb.__policy != policy)
+	    {
+	      param.sched_priority = aiocbp->aiocb.__abs_prio;
+	      policy = aiocbp->aiocb.__policy;
+	      pthread_setschedparam (self, policy, &param);
+	    }
+
+	  /* Process request pointed to by RUNP.  We must not be disturbed
+	     by signals.  */
+	  if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_READ)
+	    {
+	      if (sizeof (off_t) != sizeof (off64_t)
+		  && aiocbp->aiocb.aio_lio_opcode & 128)
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (__pread64 (fildes, (void *)
+						 aiocbp->aiocb64.aio_buf,
+						 aiocbp->aiocb64.aio_nbytes,
+						 aiocbp->aiocb64.aio_offset));
+	      else
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
+						    (void *)
+						    aiocbp->aiocb.aio_buf,
+						    aiocbp->aiocb.aio_nbytes,
+						    aiocbp->aiocb.aio_offset));
+
+	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
+		/* The Linux kernel is different from others.  It returns
+		   ESPIPE if using pread on a socket.  Other platforms
+		   simply ignore the offset parameter and behave like
+		   read.  */
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (read (fildes,
+					    (void *) aiocbp->aiocb64.aio_buf,
+					    aiocbp->aiocb64.aio_nbytes));
+	    }
+	  else if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_WRITE)
+	    {
+	      if (sizeof (off_t) != sizeof (off64_t)
+		  && aiocbp->aiocb.aio_lio_opcode & 128)
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (__pwrite64 (fildes, (const void *)
+						  aiocbp->aiocb64.aio_buf,
+						  aiocbp->aiocb64.aio_nbytes,
+						  aiocbp->aiocb64.aio_offset));
+	      else
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
+					      aiocbp->aiocb.aio_buf,
+					      aiocbp->aiocb.aio_nbytes,
+					      aiocbp->aiocb.aio_offset));
+
+	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
+		/* The Linux kernel is different from others.  It returns
+		   ESPIPE if using pwrite on a socket.  Other platforms
+		   simply ignore the offset parameter and behave like
+		   write.  */
+		aiocbp->aiocb.__return_value =
+		  TEMP_FAILURE_RETRY (write (fildes,
+					     (void *) aiocbp->aiocb64.aio_buf,
+					     aiocbp->aiocb64.aio_nbytes));
+	    }
+	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_DSYNC)
+	    aiocbp->aiocb.__return_value =
+	      TEMP_FAILURE_RETRY (fdatasync (fildes));
+	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_SYNC)
+	    aiocbp->aiocb.__return_value =
+	      TEMP_FAILURE_RETRY (fsync (fildes));
+	  else
+	    {
+	      /* This is an invalid opcode.  */
+	      aiocbp->aiocb.__return_value = -1;
+	      __set_errno (EINVAL);
+	    }
+
+	  /* Get the mutex.  */
+	  pthread_mutex_lock (&__aio_requests_mutex);
+
+	  if (aiocbp->aiocb.__return_value == -1)
+	    aiocbp->aiocb.__error_code = errno;
+	  else
+	    aiocbp->aiocb.__error_code = 0;
+
+	  /* Send the signal to notify about finished processing of the
+	     request.  */
+	  __aio_notify (runp);
+
+	  /* For debugging purposes we reset the running flag of the
+	     finished request.  */
+	  assert (runp->running == allocated);
+	  runp->running = done;
+
+	  /* Now dequeue the current request.  */
+	  __aio_remove_request (NULL, runp, 0);
+	  if (runp->next_prio != NULL)
+	    add_request_to_runlist (runp->next_prio);
+
+	  /* Free the old element.  */
+	  __aio_free_request (runp);
+	}
+
+      runp = runlist;
+
+      /* If the runlist is empty, then we sleep for a while, waiting for
+	 something to arrive in it. */
+      if (runp == NULL && optim.aio_idle_time >= 0)
+	{
+	  struct timespec now;
+	  struct timespec wakeup_time;
+
+	  ++idle_thread_count;
+	  __clock_gettime (CLOCK_REALTIME, &now);
+	  wakeup_time.tv_sec = now.tv_sec + optim.aio_idle_time;
+	  wakeup_time.tv_nsec = now.tv_nsec;
+	  if (wakeup_time.tv_nsec >= 1000000000)
+	    {
+	      wakeup_time.tv_nsec -= 1000000000;
+	      ++wakeup_time.tv_sec;
+	    }
+	  pthread_cond_timedwait (&__aio_new_request_notification,
+				  &__aio_requests_mutex,
+				  &wakeup_time);
+	  --idle_thread_count;
+	  runp = runlist;
+	}
+
+      if (runp == NULL)
+	--nthreads;
+      else
+	{
+	  assert (runp->running == yes);
+	  runp->running = allocated;
+	  runlist = runp->next_run;
+
+	  /* If we have a request to process, and there's still another in
+	     the run list, then we need to either wake up or create a new
+	     thread to service the request that is still in the run list. */
+	  if (runlist != NULL)
+	    {
+	      /* There are at least two items in the work queue to work on.
+		 If there are other idle threads, then we should wake them
+		 up for these other work elements; otherwise, we should try
+		 to create a new thread. */
+	      if (idle_thread_count > 0)
+		pthread_cond_signal (&__aio_new_request_notification);
+	      else if (nthreads < optim.aio_threads)
+		{
+		  pthread_t thid;
+		  pthread_attr_t attr;
+
+		  /* Make sure the thread is created detached.  */
+		  pthread_attr_init (&attr);
+		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+
+		  /* Now try to start a thread. If we fail, no big deal,
+		     because we know that there is at least one thread (us)
+		     that is working on AIO operations. */
+		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
+		      == 0)
+		    ++nthreads;
+		}
+	    }
+	}
+
+      /* Release the mutex.  */
+      pthread_mutex_unlock (&__aio_requests_mutex);
+    }
+  while (runp != NULL);
+
+  return NULL;
+}
+
+
+/* Free allocated resources.  */
+libc_freeres_fn (free_res)
+{
+  size_t row;
+
+  for (row = 0; row < pool_max_size; ++row)
+    free (pool[row]);
+
+  free (pool);
+}
+
+
+/* Add newrequest to the runlist. The __abs_prio flag of newrequest must
+   be correctly set to do this. Also, you had better set newrequest's
+   "running" flag to "yes" before you release your lock or you'll throw an
+   assertion. */
+static void
+add_request_to_runlist (struct requestlist *newrequest)
+{
+  int prio = newrequest->aiocbp->aiocb.__abs_prio;
+  struct requestlist *runp;
+
+  if (runlist == NULL || runlist->aiocbp->aiocb.__abs_prio < prio)
+    {
+      newrequest->next_run = runlist;
+      runlist = newrequest;
+    }
+  else
+    {
+      runp = runlist;
+
+      while (runp->next_run != NULL
+	     && runp->next_run->aiocbp->aiocb.__abs_prio >= prio)
+	runp = runp->next_run;
+
+      newrequest->next_run = runp->next_run;
+      runp->next_run = newrequest;
+    }
+}
diff --git a/rt/aio_notify.c b/rt/aio_notify.c
index 9d51fd9c5e..a8d61503d8 100644
--- a/rt/aio_notify.c
+++ b/rt/aio_notify.c
@@ -1,6 +1,7 @@
-/* Notify initiator of AIO request.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Notify initiator of AIO request.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -16,8 +17,141 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
+#include <errno.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <unistd.h>
 #include <aio_misc.h>
+#include <signal.h>
 
-/* This file contains only internal functions used by
-   the particular aio_* implementation code.  */
+#ifndef aio_start_notify_thread
+# define aio_start_notify_thread() do { } while (0)
+#endif
+
+struct notify_func
+  {
+    void (*func) (sigval_t);
+    sigval_t value;
+  };
+
+static void *
+notify_func_wrapper (void *arg)
+{
+  aio_start_notify_thread ();
+  struct notify_func *const n = arg;
+  void (*func) (sigval_t) = n->func;
+  sigval_t value = n->value;
+  free (n);
+  (*func) (value);
+  return NULL;
+}
+
+
+int
+__aio_notify_only (struct sigevent *sigev)
+{
+  int result = 0;
+
+  /* Send the signal to notify about finished processing of the request.  */
+  if (__glibc_unlikely (sigev->sigev_notify == SIGEV_THREAD))
+    {
+      /* We have to start a thread.  */
+      pthread_t tid;
+      pthread_attr_t attr, *pattr;
+
+      pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
+      if (pattr == NULL)
+	{
+	  pthread_attr_init (&attr);
+	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+	  pattr = &attr;
+	}
+
+      /* SIGEV may be freed as soon as we return, so we cannot let the
+	 notification thread use that pointer.  Even though a sigval_t is
+	 only one word and the same size as a void *, we cannot just pass
+	 the value through pthread_create as the argument and have the new
+	 thread run the user's function directly, because on some machines
+	 the calling convention for a union like sigval_t is different from
+	 that for a pointer type like void *.  */
+      struct notify_func *nf = malloc (sizeof *nf);
+      if (nf == NULL)
+	result = -1;
+      else
+	{
+	  nf->func = sigev->sigev_notify_function;
+	  nf->value = sigev->sigev_value;
+	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
+	    {
+	      free (nf);
+	      result = -1;
+	    }
+	}
+    }
+  else if (sigev->sigev_notify == SIGEV_SIGNAL)
+    {
+      /* We have to send a signal.  */
+#if _POSIX_REALTIME_SIGNALS > 0
+      /* Note that the standard gives us the option of using a plain
+	 non-queuing signal here when SA_SIGINFO is not set for the signal.  */
+      if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
+	  < 0)
+	result = -1;
+#else
+      /* There are no queued signals on this system at all.  */
+      result = raise (sigev->sigev_signo);
+#endif
+    }
+
+  return result;
+}
+
+
+void
+__aio_notify (struct requestlist *req)
+{
+  struct waitlist *waitlist;
+  struct aiocb *aiocbp = &req->aiocbp->aiocb;
+
+  if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
+    {
+      /* XXX What shall we do if already an error is set by
+	 read/write/fsync?  */
+      aiocbp->__error_code = errno;
+      aiocbp->__return_value = -1;
+    }
+
+  /* Now also notify possibly waiting threads.  */
+  waitlist = req->waiting;
+  while (waitlist != NULL)
+    {
+      struct waitlist *next = waitlist->next;
+
+      if (waitlist->sigevp == NULL)
+	{
+	  if (waitlist->result != NULL && aiocbp->__return_value == -1)
+	    *waitlist->result = -1;
+
+#ifdef DONT_NEED_AIO_MISC_COND
+	  AIO_MISC_NOTIFY (waitlist);
+#else
+	  /* Decrement the counter.  */
+	  --*waitlist->counterp;
+
+	  pthread_cond_signal (waitlist->cond);
+#endif
+	}
+      else
+	/* This is part of an asynchronous `lio_listio' operation.  If
+	   this request is the last one, send the signal.  */
+	if (--*waitlist->counterp == 0)
+	  {
+	    __aio_notify_only (waitlist->sigevp);
+	    /* This is tricky.  See lio_listio.c for the reason why
+	       this works.  */
+	    free ((void *) waitlist->counterp);
+	  }
+
+      waitlist = next;
+    }
+}
diff --git a/rt/aio_read.c b/rt/aio_read.c
index fcd5acea8e..4698e48b1c 100644
--- a/rt/aio_read.c
+++ b/rt/aio_read.c
@@ -1,6 +1,7 @@
-/* Asynchronous read.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Asynchronous read.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -17,18 +18,13 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <aio.h>
-#include <errno.h>
 
-#ifdef BE_AIO64
-#define aiocb		aiocb64
-#define aio_read	aio_read64
-#endif
+#include <aio_misc.h>
+
 
 int
 aio_read (struct aiocb *aiocbp)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
+	  ? -1 : 0);
 }
-
-stub_warning (aio_read)
diff --git a/rt/aio_read64.c b/rt/aio_read64.c
index e9994aefcb..26b9b0b380 100644
--- a/rt/aio_read64.c
+++ b/rt/aio_read64.c
@@ -1,2 +1,30 @@
-#define BE_AIO64
-#include <aio_read.c>
+/* Asynchronous read, 64bit offset version.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   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 <aio.h>
+
+#include <aio_misc.h>
+
+
+int
+aio_read64 (struct aiocb64 *aiocbp)
+{
+  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
+	  ? -1 : 0);
+}
diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c
index 32f5f7e742..6fd5b1bee2 100644
--- a/rt/aio_suspend.c
+++ b/rt/aio_suspend.c
@@ -1,6 +1,7 @@
-/* Suspend until termination of a requests.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Suspend until termination of a requests.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -27,18 +28,236 @@
 /* And undo the hack.  */
 #undef aio_suspend64
 
+#include <assert.h>
 #include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
 #include <sys/time.h>
 
+#include <libc-lock.h>
+#include <aio_misc.h>
+
+
+struct clparam
+{
+  const struct aiocb *const *list;
+  struct waitlist *waitlist;
+  struct requestlist **requestlist;
+#ifndef DONT_NEED_AIO_MISC_COND
+  pthread_cond_t *cond;
+#endif
+  int nent;
+};
+
+
+static void
+cleanup (void *arg)
+{
+#ifdef DONT_NEED_AIO_MISC_COND
+  /* Acquire the mutex.  If pthread_cond_*wait is used this would
+     happen implicitly.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+#endif
+
+  const struct clparam *param = (const struct clparam *) arg;
+
+  /* Now remove the entry in the waiting list for all requests
+     which didn't terminate.  */
+  int cnt = param->nent;
+  while (cnt-- > 0)
+    if (param->list[cnt] != NULL
+	&& param->list[cnt]->__error_code == EINPROGRESS)
+      {
+	struct waitlist **listp;
+
+	assert (param->requestlist[cnt] != NULL);
+
+	/* There is the chance that we cannot find our entry anymore. This
+	   could happen if the request terminated and restarted again.  */
+	listp = &param->requestlist[cnt]->waiting;
+	while (*listp != NULL && *listp != &param->waitlist[cnt])
+	  listp = &(*listp)->next;
+
+	if (*listp != NULL)
+	  *listp = (*listp)->next;
+      }
+
+#ifndef DONT_NEED_AIO_MISC_COND
+  /* Release the conditional variable.  */
+  (void) pthread_cond_destroy (param->cond);
+#endif
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+}
+
+#ifdef DONT_NEED_AIO_MISC_COND
+static int
+__attribute__ ((noinline))
+do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
+{
+  int result = 0;
+
+  AIO_MISC_WAIT (result, *cntr, timeout, 1);
+
+  return result;
+}
+#endif
 
 int
-aio_suspend (const struct aiocb *const list[], int nent,
-	     const struct timespec *timeout)
+__aio_suspend_time64 (const struct aiocb *const list[], int nent,
+		      const struct __timespec64 *timeout)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  if (__glibc_unlikely (nent < 0))
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  struct waitlist waitlist[nent];
+  struct requestlist *requestlist[nent];
+#ifndef DONT_NEED_AIO_MISC_COND
+  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+#endif
+  int cnt;
+  bool any = false;
+  int result = 0;
+  unsigned int cntr = 1;
+
+  /* Request the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  /* There is not yet a finished request.  Signal the request that
+     we are working for it.  */
+  for (cnt = 0; cnt < nent; ++cnt)
+    if (list[cnt] != NULL)
+      {
+	if (list[cnt]->__error_code == EINPROGRESS)
+	  {
+	    requestlist[cnt] = __aio_find_req ((aiocb_union *) list[cnt]);
+
+	    if (requestlist[cnt] != NULL)
+	      {
+#ifndef DONT_NEED_AIO_MISC_COND
+		waitlist[cnt].cond = &cond;
+#endif
+		waitlist[cnt].result = NULL;
+		waitlist[cnt].next = requestlist[cnt]->waiting;
+		waitlist[cnt].counterp = &cntr;
+		waitlist[cnt].sigevp = NULL;
+		requestlist[cnt]->waiting = &waitlist[cnt];
+		any = true;
+	      }
+	    else
+	      /* We will never suspend.  */
+	      break;
+	  }
+	else
+	  /* We will never suspend.  */
+	  break;
+      }
+
+  struct __timespec64 ts;
+  if (timeout != NULL)
+    {
+      __clock_gettime64 (CLOCK_MONOTONIC, &ts);
+      ts.tv_sec += timeout->tv_sec;
+      ts.tv_nsec += timeout->tv_nsec;
+      if (ts.tv_nsec >= 1000000000)
+	{
+	  ts.tv_nsec -= 1000000000;
+	  ts.tv_sec++;
+	}
+    }
+
+  /* Only if none of the entries is NULL or finished to be wait.  */
+  if (cnt == nent && any)
+    {
+      struct clparam clparam =
+	{
+	  .list = list,
+	  .waitlist = waitlist,
+	  .requestlist = requestlist,
+#ifndef DONT_NEED_AIO_MISC_COND
+	  .cond = &cond,
+#endif
+	  .nent = nent
+	};
+
+      pthread_cleanup_push (cleanup, &clparam);
+
+#ifdef DONT_NEED_AIO_MISC_COND
+      result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
+#else
+      struct timespec ts32 = valid_timespec64_to_timespec (ts);
+      result = pthread_cond_timedwait (&cond, &__aio_requests_mutex,
+				       timeout == NULL ? NULL : &ts32);
+#endif
+
+      pthread_cleanup_pop (0);
+    }
+
+  /* Now remove the entry in the waiting list for all requests
+     which didn't terminate.  */
+  while (cnt-- > 0)
+    if (list[cnt] != NULL && list[cnt]->__error_code == EINPROGRESS)
+      {
+	struct waitlist **listp;
+
+	assert (requestlist[cnt] != NULL);
+
+	/* There is the chance that we cannot find our entry anymore. This
+	   could happen if the request terminated and restarted again.  */
+	listp = &requestlist[cnt]->waiting;
+	while (*listp != NULL && *listp != &waitlist[cnt])
+	  listp = &(*listp)->next;
+
+	if (*listp != NULL)
+	  *listp = (*listp)->next;
+      }
+
+#ifndef DONT_NEED_AIO_MISC_COND
+  /* Release the conditional variable.  */
+  if (__glibc_unlikely (pthread_cond_destroy (&cond) != 0))
+    /* This must never happen.  */
+    abort ();
+#endif
+
+  if (result != 0)
+    {
+#ifndef DONT_NEED_AIO_MISC_COND
+      /* An error occurred.  Possibly it's ETIMEDOUT.  We have to translate
+	 the timeout error report of `pthread_cond_timedwait' to the
+	 form expected from `aio_suspend'.  */
+      if (result == ETIMEDOUT)
+	__set_errno (EAGAIN);
+      else
+#endif
+	__set_errno (result);
+
+      result = -1;
+    }
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+
+  return result;
 }
-weak_alias (aio_suspend, aio_suspend64)
 
-stub_warning (aio_suspend)
-stub_warning (aio_suspend64)
+#if __TIMESIZE != 64
+librt_hidden_def (__aio_suspend_time64)
+
+int
+__aio_suspend (const struct aiocb *const list[], int nent,
+               const struct timespec *timeout)
+{
+  struct __timespec64 ts64;
+
+  if (timeout != NULL)
+    ts64 = valid_timespec_to_timespec64 (*timeout);
+
+  return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
+}
+#endif
+weak_alias (__aio_suspend, aio_suspend)
+weak_alias (aio_suspend, aio_suspend64)
diff --git a/rt/aio_write.c b/rt/aio_write.c
index 18a338e094..ea55f0dbbc 100644
--- a/rt/aio_write.c
+++ b/rt/aio_write.c
@@ -1,6 +1,7 @@
-/* Asynchronous write.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Asynchronous write.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -17,18 +18,13 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <aio.h>
-#include <errno.h>
 
-#ifdef BE_AIO64
-#define aiocb		aiocb64
-#define aio_write	aio_write64
-#endif
+#include <aio_misc.h>
+
 
 int
 aio_write (struct aiocb *aiocbp)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
+	  ? -1 : 0);
 }
-
-stub_warning (aio_write)
diff --git a/rt/aio_write64.c b/rt/aio_write64.c
index 88d5c001ce..bd6dd316be 100644
--- a/rt/aio_write64.c
+++ b/rt/aio_write64.c
@@ -1,2 +1,30 @@
-#define BE_AIO64
-#include <aio_write.c>
+/* Asynchronous write, 64bit offset version.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   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 <aio.h>
+
+#include <aio_misc.h>
+
+
+int
+aio_write64 (struct aiocb64 *aiocbp)
+{
+  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
+	  ? -1 : 0);
+}
diff --git a/rt/lio_listio.c b/rt/lio_listio.c
index db4ce68afc..2cab3c2254 100644
--- a/rt/lio_listio.c
+++ b/rt/lio_listio.c
@@ -1,6 +1,7 @@
-/* Enqueue a list of read or write requests.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Enqueue and list of read or write requests.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -16,25 +17,232 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#ifndef lio_listio
 #include <aio.h>
+#include <assert.h>
 #include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
 
-#ifdef BE_AIO64
-#define lio_listio	lio_listio64
-#define aiocb		aiocb64
-#define aio_read	aio_read64
-#define aio_write	aio_write64
-#define aio_suspend	aio_suspend64
+#include <aio_misc.h>
+
+#define LIO_OPCODE_BASE 0
+#endif
+
+#include <shlib-compat.h>
+
+
+/* We need this special structure to handle asynchronous I/O.  */
+struct async_waitlist
+  {
+    unsigned int counter;
+    struct sigevent sigev;
+    struct waitlist list[0];
+  };
+
+
+/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
+   requests submitted with lio_listio finished.  The existing practice
+   is to issue events for the individual requests as well.  This is
+   what the new code does.  */
+#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
+# define LIO_MODE(mode) ((mode) & 127)
+# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
+#else
+# define LIO_MODE(mode) mode
+# define NO_INDIVIDUAL_EVENT_P(mode) 0
+#endif
+
+
+static int
+lio_listio_internal (int mode, struct aiocb *const list[], int nent,
+		     struct sigevent *sig)
+{
+  struct sigevent defsigev;
+  struct requestlist *requests[nent];
+  int cnt;
+  volatile unsigned int total = 0;
+  int result = 0;
+
+  if (sig == NULL)
+    {
+      defsigev.sigev_notify = SIGEV_NONE;
+      sig = &defsigev;
+    }
+
+  /* Request the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  /* Now we can enqueue all requests.  Since we already acquired the
+     mutex the enqueue function need not do this.  */
+  for (cnt = 0; cnt < nent; ++cnt)
+    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
+      {
+	if (NO_INDIVIDUAL_EVENT_P (mode))
+	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
+
+	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
+					       (list[cnt]->aio_lio_opcode
+						| LIO_OPCODE_BASE));
+
+	if (requests[cnt] != NULL)
+	  /* Successfully enqueued.  */
+	  ++total;
+	else
+	  /* Signal that we've seen an error.  `errno' and the error code
+	     of the aiocb will tell more.  */
+	  result = -1;
+      }
+    else
+      requests[cnt] = NULL;
+
+  if (total == 0)
+    {
+      /* We don't have anything to do except signalling if we work
+	 asynchronously.  */
+
+      /* Release the mutex.  We do this before raising a signal since the
+	 signal handler might do a `siglongjmp' and then the mutex is
+	 locked forever.  */
+      pthread_mutex_unlock (&__aio_requests_mutex);
+
+      if (LIO_MODE (mode) == LIO_NOWAIT)
+	__aio_notify_only (sig);
+
+      return result;
+    }
+  else if (LIO_MODE (mode) == LIO_WAIT)
+    {
+#ifndef DONT_NEED_AIO_MISC_COND
+      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+      int oldstate;
+#endif
+      struct waitlist waitlist[nent];
+
+      total = 0;
+      for (cnt = 0; cnt < nent; ++cnt)
+	{
+	  assert (requests[cnt] == NULL || list[cnt] != NULL);
+
+	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
+	    {
+#ifndef DONT_NEED_AIO_MISC_COND
+	      waitlist[cnt].cond = &cond;
 #endif
+	      waitlist[cnt].result = &result;
+	      waitlist[cnt].next = requests[cnt]->waiting;
+	      waitlist[cnt].counterp = &total;
+	      waitlist[cnt].sigevp = NULL;
+	      requests[cnt]->waiting = &waitlist[cnt];
+	      ++total;
+	    }
+	}
 
+#ifdef DONT_NEED_AIO_MISC_COND
+      AIO_MISC_WAIT (result, total, NULL, 0);
+#else
+      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
+	 points we must be careful.  We added entries to the waiting lists
+	 which we must remove.  So defer cancellation for now.  */
+      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
 
+      while (total > 0)
+	pthread_cond_wait (&cond, &__aio_requests_mutex);
+
+      /* Now it's time to restore the cancellation state.  */
+      pthread_setcancelstate (oldstate, NULL);
+
+      /* Release the conditional variable.  */
+      if (pthread_cond_destroy (&cond) != 0)
+	/* This must never happen.  */
+	abort ();
+#endif
+
+      /* If any of the I/O requests failed, return -1 and set errno.  */
+      if (result != 0)
+	{
+	  __set_errno (result == EINTR ? EINTR : EIO);
+	  result = -1;
+	}
+    }
+  else
+    {
+      struct async_waitlist *waitlist;
+
+      waitlist = (struct async_waitlist *)
+	malloc (sizeof (struct async_waitlist)
+		+ (nent * sizeof (struct waitlist)));
+
+      if (waitlist == NULL)
+	{
+	  __set_errno (EAGAIN);
+	  result = -1;
+	}
+      else
+	{
+	  total = 0;
+
+	  for (cnt = 0; cnt < nent; ++cnt)
+	    {
+	      assert (requests[cnt] == NULL || list[cnt] != NULL);
+
+	      if (requests[cnt] != NULL
+		  && list[cnt]->aio_lio_opcode != LIO_NOP)
+		{
+#ifndef DONT_NEED_AIO_MISC_COND
+		  waitlist->list[cnt].cond = NULL;
+#endif
+		  waitlist->list[cnt].result = NULL;
+		  waitlist->list[cnt].next = requests[cnt]->waiting;
+		  waitlist->list[cnt].counterp = &waitlist->counter;
+		  waitlist->list[cnt].sigevp = &waitlist->sigev;
+		  requests[cnt]->waiting = &waitlist->list[cnt];
+		  ++total;
+		}
+	    }
+
+	  waitlist->counter = total;
+	  waitlist->sigev = *sig;
+	}
+    }
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+
+  return result;
+}
+
+
+#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
 int
-lio_listio (int mode,
-	    struct aiocb *const list[], int nent,
-	    struct sigevent *sig)
+attribute_compat_text_section
+__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
+		 struct sigevent *sig)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  /* Check arguments.  */
+  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
 }
+compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
+#endif
 
-stub_warning (lio_listio)
+
+int
+__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
+			  struct sigevent *sig)
+{
+    /* Check arguments.  */
+  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return lio_listio_internal (mode, list, nent, sig);
+}
+versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
diff --git a/rt/lio_listio64.c b/rt/lio_listio64.c
index 35a571c685..111c883a2f 100644
--- a/rt/lio_listio64.c
+++ b/rt/lio_listio64.c
@@ -1,2 +1,33 @@
-#define BE_AIO64
+/* Enqueue and list of read or write requests, 64bit offset version.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   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 <aio.h>
+#include <assert.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <aio_misc.h>
+
+#define lio_listio lio_listio64
+#define __lio_listio_21 __lio_listio64_21
+#define __lio_listio_item_notify __lio_listio64_item_notify
+#define aiocb aiocb64
+#define LIO_OPCODE_BASE 128
 #include <lio_listio.c>
diff --git a/rt/timer_create.c b/rt/timer_create.c
index 79d4d18317..2808f5b32b 100644
--- a/rt/timer_create.c
+++ b/rt/timer_create.c
@@ -1,10 +1,11 @@
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
    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.
+   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
@@ -12,17 +13,154 @@
    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/>.  */
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <signal.h>
+#include <pthread.h>
 #include <time.h>
+#include <unistd.h>
+
+#include "posix-timer.h"
+
 
 /* Create new per-process timer using CLOCK.  */
 int
 timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  int retval = -1;
+  struct timer_node *newtimer = NULL;
+  struct thread_node *thread = NULL;
+
+  if (0
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+      || clock_id == CLOCK_PROCESS_CPUTIME_ID
+#endif
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+      || clock_id == CLOCK_THREAD_CPUTIME_ID
+#endif
+      )
+    {
+      /* We don't allow timers for CPU clocks.  At least not in the
+	 moment.  */
+      __set_errno (ENOTSUP);
+      return -1;
+    }
+
+  if (clock_id != CLOCK_REALTIME)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  pthread_once (&__timer_init_once_control, __timer_init_once);
+
+  if (__timer_init_failed)
+    {
+      __set_errno (ENOMEM);
+      return -1;
+    }
+
+  pthread_mutex_lock (&__timer_mutex);
+
+  newtimer = __timer_alloc ();
+  if (__glibc_unlikely (newtimer == NULL))
+    {
+      __set_errno (EAGAIN);
+      goto unlock_bail;
+    }
+
+  if (evp != NULL)
+    newtimer->event = *evp;
+  else
+    {
+      newtimer->event.sigev_notify = SIGEV_SIGNAL;
+      newtimer->event.sigev_signo = SIGALRM;
+      newtimer->event.sigev_value.sival_ptr = newtimer;
+      newtimer->event.sigev_notify_function = 0;
+    }
+
+  newtimer->event.sigev_notify_attributes = &newtimer->attr;
+  newtimer->creator_pid = getpid ();
+
+  switch (__builtin_expect (newtimer->event.sigev_notify, SIGEV_SIGNAL))
+    {
+    case SIGEV_NONE:
+    case SIGEV_SIGNAL:
+      /* We have a global thread for delivering timed signals.
+	 If it is not running, try to start it up.  */
+      thread = &__timer_signal_thread_rclk;
+      if (! thread->exists)
+	{
+	  if (__builtin_expect (__timer_thread_start (thread),
+				1) < 0)
+	    {
+	      __set_errno (EAGAIN);
+	      goto unlock_bail;
+            }
+        }
+      break;
+
+    case SIGEV_THREAD:
+      /* Copy over thread attributes or set up default ones.  */
+      if (evp->sigev_notify_attributes)
+	newtimer->attr = *(pthread_attr_t *) evp->sigev_notify_attributes;
+      else
+	pthread_attr_init (&newtimer->attr);
+
+      /* Ensure thread attributes call for deatched thread.  */
+      pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
+
+      /* Try to find existing thread having the right attributes.  */
+      thread = __timer_thread_find_matching (&newtimer->attr, clock_id);
+
+      /* If no existing thread has these attributes, try to allocate one.  */
+      if (thread == NULL)
+	thread = __timer_thread_alloc (&newtimer->attr, clock_id);
+
+      /* Out of luck; no threads are available.  */
+      if (__glibc_unlikely (thread == NULL))
+	{
+	  __set_errno (EAGAIN);
+	  goto unlock_bail;
+	}
+
+      /* If the thread is not running already, try to start it.  */
+      if (! thread->exists
+	  && __builtin_expect (! __timer_thread_start (thread), 0))
+	{
+	  __set_errno (EAGAIN);
+	  goto unlock_bail;
+	}
+      break;
+
+    default:
+      __set_errno (EINVAL);
+      goto unlock_bail;
+    }
+
+  newtimer->clock = clock_id;
+  newtimer->abstime = 0;
+  newtimer->armed = 0;
+  newtimer->thread = thread;
+
+  *timerid = timer_ptr2id (newtimer);
+  retval = 0;
+
+  if (__builtin_expect (retval, 0) == -1)
+    {
+    unlock_bail:
+      if (thread != NULL)
+	__timer_thread_dealloc (thread);
+      if (newtimer != NULL)
+	{
+	  timer_delref (newtimer);
+	  __timer_dealloc (newtimer);
+	}
+    }
+
+  pthread_mutex_unlock (&__timer_mutex);
+
+  return retval;
 }
-stub_warning (timer_create)
diff --git a/rt/timer_delete.c b/rt/timer_delete.c
index 71da429e8b..c6f6d9743d 100644
--- a/rt/timer_delete.c
+++ b/rt/timer_delete.c
@@ -1,10 +1,11 @@
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
    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.
+   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
@@ -12,17 +13,56 @@
    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/>.  */
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
 
+#include <assert.h>
 #include <errno.h>
+#include <pthread.h>
 #include <time.h>
 
+#include "posix-timer.h"
+
+
 /* Delete timer TIMERID.  */
 int
 timer_delete (timer_t timerid)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct timer_node *timer;
+  int retval = -1;
+
+  pthread_mutex_lock (&__timer_mutex);
+
+  timer = timer_id2ptr (timerid);
+  if (! timer_valid (timer))
+    /* Invalid timer ID or the timer is not in use.  */
+    __set_errno (EINVAL);
+  else
+    {
+      if (timer->armed && timer->thread != NULL)
+	{
+	  struct thread_node *thread = timer->thread;
+	  assert (thread != NULL);
+
+	  /* If thread is cancelled while waiting for handler to terminate,
+	     the mutex is unlocked and timer_delete is aborted.  */
+	  pthread_cleanup_push (__timer_mutex_cancel_handler, &__timer_mutex);
+
+	  /* If timer is currently being serviced, wait for it to finish.  */
+	  while (thread->current_timer == timer)
+	    pthread_cond_wait (&thread->cond, &__timer_mutex);
+
+	  pthread_cleanup_pop (0);
+        }
+
+      /* Remove timer from whatever queue it may be on and deallocate it.  */
+      timer->inuse = TIMER_DELETED;
+      list_unlink_ip (&timer->links);
+      timer_delref (timer);
+      retval = 0;
+    }
+
+  pthread_mutex_unlock (&__timer_mutex);
+
+  return retval;
 }
-stub_warning (timer_delete)
diff --git a/rt/timer_getoverr.c b/rt/timer_getoverr.c
index 3680ba687f..c1952f80c6 100644
--- a/rt/timer_getoverr.c
+++ b/rt/timer_getoverr.c
@@ -1,10 +1,11 @@
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
    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.
+   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
@@ -12,17 +13,31 @@
    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/>.  */
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <pthread.h>
 #include <time.h>
 
+#include "posix-timer.h"
+
+
 /* Get expiration overrun for timer TIMERID.  */
 int
 timer_getoverrun (timer_t timerid)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct timer_node *timer;
+  int retval = -1;
+
+  pthread_mutex_lock (&__timer_mutex);
+
+  if (! timer_valid (timer = timer_id2ptr (timerid)))
+    __set_errno (EINVAL);
+  else
+    retval = timer->overrun_count;
+
+  pthread_mutex_unlock (&__timer_mutex);
+
+  return retval;
 }
-stub_warning (timer_getoverrun)
diff --git a/rt/timer_gettime.c b/rt/timer_gettime.c
index 7bd94386a4..dd3b4a6281 100644
--- a/rt/timer_gettime.c
+++ b/rt/timer_gettime.c
@@ -1,10 +1,11 @@
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
    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.
+   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
@@ -12,17 +13,62 @@
    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/>.  */
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <pthread.h>
 #include <time.h>
 
+#include "posix-timer.h"
+
+
 /* Get current value of timer TIMERID and store it in VLAUE.  */
 int
 timer_gettime (timer_t timerid, struct itimerspec *value)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct timer_node *timer;
+  struct timespec now, expiry;
+  int retval = -1, armed = 0, valid;
+  clock_t clock = 0;
+
+  pthread_mutex_lock (&__timer_mutex);
+
+  timer = timer_id2ptr (timerid);
+  valid = timer_valid (timer);
+
+  if (valid) {
+    armed = timer->armed;
+    expiry = timer->expirytime;
+    clock = timer->clock;
+    value->it_interval = timer->value.it_interval;
+  }
+
+  pthread_mutex_unlock (&__timer_mutex);
+
+  if (valid)
+    {
+      if (armed)
+	{
+	  __clock_gettime (clock, &now);
+	  if (timespec_compare (&now, &expiry) < 0)
+	    timespec_sub (&value->it_value, &expiry, &now);
+	  else
+	    {
+	      value->it_value.tv_sec = 0;
+	      value->it_value.tv_nsec = 0;
+	    }
+	}
+      else
+	{
+	  value->it_value.tv_sec = 0;
+	  value->it_value.tv_nsec = 0;
+	}
+
+      retval = 0;
+    }
+  else
+    __set_errno (EINVAL);
+
+  return retval;
 }
-stub_warning (timer_gettime)
diff --git a/rt/timer_settime.c b/rt/timer_settime.c
index cde0e742fc..c05adf166f 100644
--- a/rt/timer_settime.c
+++ b/rt/timer_settime.c
@@ -1,10 +1,11 @@
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
    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.
+   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
@@ -12,18 +13,119 @@
    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/>.  */
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <pthread.h>
 #include <time.h>
 
+#include "posix-timer.h"
+
+
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
 int
 timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
 	       struct itimerspec *ovalue)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  struct timer_node *timer;
+  struct thread_node *thread = NULL;
+  struct timespec now;
+  int have_now = 0, need_wakeup = 0;
+  int retval = -1;
+
+  timer = timer_id2ptr (timerid);
+  if (timer == NULL)
+    {
+      __set_errno (EINVAL);
+      goto bail;
+    }
+
+  if (! valid_nanoseconds (value->it_interval.tv_nsec)
+      || ! valid_nanoseconds (value->it_value.tv_nsec))
+    {
+      __set_errno (EINVAL);
+      goto bail;
+    }
+
+  /* Will need to know current time since this is a relative timer;
+     might as well make the system call outside of the lock now! */
+
+  if ((flags & TIMER_ABSTIME) == 0)
+    {
+      __clock_gettime (timer->clock, &now);
+      have_now = 1;
+    }
+
+  pthread_mutex_lock (&__timer_mutex);
+  timer_addref (timer);
+
+  /* One final check of timer validity; this one is possible only
+     until we have the mutex, because it accesses the inuse flag. */
+
+  if (! timer_valid(timer))
+    {
+      __set_errno (EINVAL);
+      goto unlock_bail;
+    }
+
+  if (ovalue != NULL)
+    {
+      ovalue->it_interval = timer->value.it_interval;
+
+      if (timer->armed)
+	{
+	  if (! have_now)
+	    {
+	      pthread_mutex_unlock (&__timer_mutex);
+	      __clock_gettime (timer->clock, &now);
+	      have_now = 1;
+	      pthread_mutex_lock (&__timer_mutex);
+	      timer_addref (timer);
+	    }
+
+	  timespec_sub (&ovalue->it_value, &timer->expirytime, &now);
+	}
+      else
+	{
+	  ovalue->it_value.tv_sec = 0;
+	  ovalue->it_value.tv_nsec = 0;
+	}
+    }
+
+  timer->value = *value;
+
+  list_unlink_ip (&timer->links);
+  timer->armed = 0;
+
+  thread = timer->thread;
+
+  /* A value of { 0, 0 } causes the timer to be stopped. */
+  if (value->it_value.tv_sec != 0
+      || __builtin_expect (value->it_value.tv_nsec != 0, 1))
+    {
+      if ((flags & TIMER_ABSTIME) != 0)
+	/* The user specified the expiration time.  */
+	timer->expirytime = value->it_value;
+      else
+	timespec_add (&timer->expirytime, &now, &value->it_value);
+
+      /* Only need to wake up the thread if timer is inserted
+	 at the head of the queue. */
+      if (thread != NULL)
+	need_wakeup = __timer_thread_queue_timer (thread, timer);
+      timer->armed = 1;
+    }
+
+  retval = 0;
+
+unlock_bail:
+  timer_delref (timer);
+  pthread_mutex_unlock (&__timer_mutex);
+
+bail:
+  if (thread != NULL && need_wakeup)
+    __timer_thread_wakeup (thread);
+
+  return retval;
 }
-stub_warning (timer_settime)
diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
index 1307d822a0..e23524cffe 100644
--- a/sysdeps/generic/aio_misc.h
+++ b/sysdeps/generic/aio_misc.h
@@ -1,5 +1,4 @@
-/* Internal declarations for <aio.h> functions implementation.  Stub version.
-   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1997-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
@@ -20,17 +19,19 @@
 #define _AIO_MISC_H	1
 
 #include <aio.h>
+#include <pthread.h>
 
 
 /* Extend the operation enum.  */
 enum
 {
-  LIO_DSYNC = LIO_READ + 1,
+  LIO_DSYNC = LIO_NOP + 1,
   LIO_SYNC,
   LIO_READ64 = LIO_READ | 128,
   LIO_WRITE64 = LIO_WRITE | 128
 };
 
+
 /* Union of the two request types.  */
 typedef union
   {
@@ -39,9 +40,83 @@ typedef union
   } aiocb_union;
 
 
+/* Used to synchronize.  */
+struct waitlist
+  {
+    struct waitlist *next;
+
+    /* The next two fields is used in synchronous `lio_listio' operations.  */
+#ifndef DONT_NEED_AIO_MISC_COND
+    pthread_cond_t *cond;
+#endif
+    int *result;
+
+    volatile unsigned int *counterp;
+    /* The next field is used in asynchronous `lio_listio' operations.  */
+    struct sigevent *sigevp;
+  };
+
+
+/* Status of a request.  */
+enum
+{
+  no,
+  queued,
+  yes,
+  allocated,
+  done
+};
+
+
+/* Used to queue requests..  */
+struct requestlist
+  {
+    int running;
+
+    struct requestlist *last_fd;
+    struct requestlist *next_fd;
+    struct requestlist *next_prio;
+    struct requestlist *next_run;
+
+    /* Pointer to the actual data.  */
+    aiocb_union *aiocbp;
+
+    /* List of waiting processes.  */
+    struct waitlist *waiting;
+  };
+
+
+/* Lock for global I/O list of requests.  */
+extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
+
+
+/* Enqueue request.  */
+extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
+						  int operation)
+  attribute_hidden;
+
+/* Find request entry for given AIO control block.  */
+extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
+
+/* Find request entry for given file descriptor.  */
+extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
+
+/* Remove request from the list.  */
+extern void __aio_remove_request (struct requestlist *last,
+				  struct requestlist *req, int all)
+     attribute_hidden;
+
+/* Release the entry for the request.  */
+extern void __aio_free_request (struct requestlist *req) attribute_hidden;
+
+/* Notify initiator of request and tell this everybody listening.  */
+extern void __aio_notify (struct requestlist *req) attribute_hidden;
+
+/* Notify initiator of request.  */
+extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
+
 /* Send the signal.  */
 extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
      attribute_hidden;
 
-
 #endif /* aio_misc.h */
diff --git a/sysdeps/pthread/timer_routines.c b/sysdeps/htl/timer_routines.c
similarity index 100%
rename from sysdeps/pthread/timer_routines.c
rename to sysdeps/htl/timer_routines.c
diff --git a/sysdeps/pthread/Versions b/sysdeps/pthread/Versions
deleted file mode 100644
index a71cffbed4..0000000000
--- a/sysdeps/pthread/Versions
+++ /dev/null
@@ -1,5 +0,0 @@
-librt {
-  GLIBC_2.4 {
-    lio_listio; lio_listio64;
-  }
-}
diff --git a/sysdeps/pthread/aio_cancel.c b/sysdeps/pthread/aio_cancel.c
deleted file mode 100644
index 63fd88f36c..0000000000
--- a/sysdeps/pthread/aio_cancel.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Cancel requests associated with given file descriptor.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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/>.  */
-
-
-/* We use an UGLY hack to prevent gcc from finding us cheating.  The
-   implementation of aio_cancel and aio_cancel64 are identical and so
-   we want to avoid code duplication by using aliases.  But gcc sees
-   the different parameter lists and prints a warning.  We define here
-   a function so that aio_cancel64 has no prototype.  */
-#ifndef aio_cancel
-#define aio_cancel64 XXX
-#include <aio.h>
-/* And undo the hack.  */
-#undef aio_cancel64
-#endif
-
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_cancel (int fildes, struct aiocb *aiocbp)
-{
-  struct requestlist *req = NULL;
-  int result = AIO_ALLDONE;
-
-  /* If fildes is invalid, error. */
-  if (fcntl (fildes, F_GETFL) < 0)
-    {
-      __set_errno (EBADF);
-      return -1;
-    }
-
-  /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  /* We are asked to cancel a specific AIO request.  */
-  if (aiocbp != NULL)
-    {
-      /* If the AIO request is not for this descriptor it has no value
-	 to look for the request block.  */
-      if (aiocbp->aio_fildes != fildes)
-	{
-	  pthread_mutex_unlock (&__aio_requests_mutex);
-	  __set_errno (EINVAL);
-	  return -1;
-	}
-      else if (aiocbp->__error_code == EINPROGRESS)
-	{
-	  struct requestlist *last = NULL;
-
-	  req = __aio_find_req_fd (fildes);
-
-	  if (req == NULL)
-	    {
-	    not_found:
-	      pthread_mutex_unlock (&__aio_requests_mutex);
-	      __set_errno (EINVAL);
-	      return -1;
-	    }
-
-	  while (req->aiocbp != (aiocb_union *) aiocbp)
-	    {
-	      last = req;
-	      req = req->next_prio;
-	      if (req == NULL)
-		goto not_found;
-	    }
-
-	  /* Don't remove the entry if a thread is already working on it.  */
-	  if (req->running == allocated)
-	    {
-	      result = AIO_NOTCANCELED;
-	      req = NULL;
-	    }
-	  else
-	    {
-	      /* We can remove the entry.  */
-	      __aio_remove_request (last, req, 0);
-
-	      result = AIO_CANCELED;
-
-	      req->next_prio = NULL;
-	    }
-	}
-    }
-  else
-    {
-      /* Find the beginning of the list of all requests for this
-	 desriptor.  */
-      req = __aio_find_req_fd (fildes);
-
-      /* If any request is worked on by a thread it must be the first.
-	 So either we can delete all requests or all but the first.  */
-      if (req != NULL)
-	{
-	  if (req->running == allocated)
-	    {
-	      struct requestlist *old = req;
-	      req = req->next_prio;
-	      old->next_prio = NULL;
-
-	      result = AIO_NOTCANCELED;
-
-	      if (req != NULL)
-		__aio_remove_request (old, req, 1);
-	    }
-	  else
-	    {
-	      result = AIO_CANCELED;
-
-	      /* We can remove the entry.  */
-	      __aio_remove_request (NULL, req, 1);
-	    }
-	}
-    }
-
-  /* Mark requests as canceled and send signal.  */
-  while (req != NULL)
-    {
-      struct requestlist *old = req;
-      assert (req->running == yes || req->running == queued);
-      req->aiocbp->aiocb.__error_code = ECANCELED;
-      req->aiocbp->aiocb.__return_value = -1;
-      __aio_notify (req);
-      req = req->next_prio;
-      __aio_free_request (old);
-    }
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-
-  return result;
-}
-
-#ifndef aio_cancel
-weak_alias (aio_cancel, aio_cancel64)
-#endif
diff --git a/sysdeps/pthread/aio_error.c b/sysdeps/pthread/aio_error.c
deleted file mode 100644
index ed664ae0ef..0000000000
--- a/sysdeps/pthread/aio_error.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Return error status of asynchronous I/O request.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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/>.  */
-
-
-/* We use an UGLY hack to prevent gcc from finding us cheating.  The
-   implementation of aio_error and aio_error64 are identical and so
-   we want to avoid code duplication by using aliases.  But gcc sees
-   the different parameter lists and prints a warning.  We define here
-   a function so that aio_error64 has no prototype.  */
-#define aio_error64 XXX
-#include <aio.h>
-/* And undo the hack.  */
-#undef aio_error64
-
-#include <aio_misc.h>
-
-
-int
-aio_error (const struct aiocb *aiocbp)
-{
-  int ret;
-
-  /* Acquire the mutex to make sure all operations for this request are
-     complete.  */
-  pthread_mutex_lock(&__aio_requests_mutex);
-  ret = aiocbp->__error_code;
-  pthread_mutex_unlock(&__aio_requests_mutex);
-
-  return ret;
-}
-
-weak_alias (aio_error, aio_error64)
diff --git a/sysdeps/pthread/aio_fsync.c b/sysdeps/pthread/aio_fsync.c
deleted file mode 100644
index 5a52e2fec0..0000000000
--- a/sysdeps/pthread/aio_fsync.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Synchronize I/O in given file descriptor.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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/>.  */
-
-
-/* We use an UGLY hack to prevent gcc from finding us cheating.  The
-   implementation of aio_fsync and aio_fsync64 are identical and so
-   we want to avoid code duplication by using aliases.  But gcc sees
-   the different parameter lists and prints a warning.  We define here
-   a function so that aio_fsync64 has no prototype.  */
-#define aio_fsync64 XXX
-#include <aio.h>
-/* And undo the hack.  */
-#undef aio_fsync64
-#include <errno.h>
-#include <fcntl.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_fsync (int op, struct aiocb *aiocbp)
-{
-  if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  /* Verify that this is an open file descriptor.  */
-  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
-    {
-      __set_errno (EBADF);
-      return -1;
-    }
-
-  return (__aio_enqueue_request ((aiocb_union *) aiocbp,
-				 op == O_SYNC ? LIO_SYNC : LIO_DSYNC) == NULL
-	  ? -1 : 0);
-}
-
-weak_alias (aio_fsync, aio_fsync64)
diff --git a/sysdeps/pthread/aio_misc.c b/sysdeps/pthread/aio_misc.c
deleted file mode 100644
index b95f07d9d3..0000000000
--- a/sysdeps/pthread/aio_misc.c
+++ /dev/null
@@ -1,721 +0,0 @@
-/* Handle general operations.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-#include <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <aio_misc.h>
-
-#ifndef aio_create_helper_thread
-# define aio_create_helper_thread __aio_create_helper_thread
-
-extern inline int
-__aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
-{
-  pthread_attr_t attr;
-
-  /* Make sure the thread is created detached.  */
-  pthread_attr_init (&attr);
-  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-
-  int ret = pthread_create (threadp, &attr, tf, arg);
-
-  (void) pthread_attr_destroy (&attr);
-  return ret;
-}
-#endif
-
-static void add_request_to_runlist (struct requestlist *newrequest);
-
-/* Pool of request list entries.  */
-static struct requestlist **pool;
-
-/* Number of total and allocated pool entries.  */
-static size_t pool_max_size;
-static size_t pool_size;
-
-/* We implement a two dimensional array but allocate each row separately.
-   The macro below determines how many entries should be used per row.
-   It should better be a power of two.  */
-#define ENTRIES_PER_ROW	32
-
-/* How many rows we allocate at once.  */
-#define ROWS_STEP	8
-
-/* List of available entries.  */
-static struct requestlist *freelist;
-
-/* List of request waiting to be processed.  */
-static struct requestlist *runlist;
-
-/* Structure list of all currently processed requests.  */
-static struct requestlist *requests;
-
-/* Number of threads currently running.  */
-static int nthreads;
-
-/* Number of threads waiting for work to arrive. */
-static int idle_thread_count;
-
-
-/* These are the values used to optimize the use of AIO.  The user can
-   overwrite them by using the `aio_init' function.  */
-static struct aioinit optim =
-{
-  20,	/* int aio_threads;	Maximal number of threads.  */
-  64,	/* int aio_num;		Number of expected simultaneous requests. */
-  0,
-  0,
-  0,
-  0,
-  1,
-  0
-};
-
-
-/* Since the list is global we need a mutex protecting it.  */
-pthread_mutex_t __aio_requests_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-
-/* When you add a request to the list and there are idle threads present,
-   you signal this condition variable. When a thread finishes work, it waits
-   on this condition variable for a time before it actually exits. */
-pthread_cond_t __aio_new_request_notification = PTHREAD_COND_INITIALIZER;
-
-
-/* Functions to handle request list pool.  */
-static struct requestlist *
-get_elem (void)
-{
-  struct requestlist *result;
-
-  if (freelist == NULL)
-    {
-      struct requestlist *new_row;
-      int cnt;
-
-      assert (sizeof (struct aiocb) == sizeof (struct aiocb64));
-
-      if (pool_size + 1 >= pool_max_size)
-	{
-	  size_t new_max_size = pool_max_size + ROWS_STEP;
-	  struct requestlist **new_tab;
-
-	  new_tab = (struct requestlist **)
-	    realloc (pool, new_max_size * sizeof (struct requestlist *));
-
-	  if (new_tab == NULL)
-	    return NULL;
-
-	  pool_max_size = new_max_size;
-	  pool = new_tab;
-	}
-
-      /* Allocate the new row.  */
-      cnt = pool_size == 0 ? optim.aio_num : ENTRIES_PER_ROW;
-      new_row = (struct requestlist *) calloc (cnt,
-					       sizeof (struct requestlist));
-      if (new_row == NULL)
-	return NULL;
-
-      pool[pool_size++] = new_row;
-
-      /* Put all the new entries in the freelist.  */
-      do
-	{
-	  new_row->next_prio = freelist;
-	  freelist = new_row++;
-	}
-      while (--cnt > 0);
-    }
-
-  result = freelist;
-  freelist = freelist->next_prio;
-
-  return result;
-}
-
-
-void
-__aio_free_request (struct requestlist *elem)
-{
-  elem->running = no;
-  elem->next_prio = freelist;
-  freelist = elem;
-}
-
-
-struct requestlist *
-__aio_find_req (aiocb_union *elem)
-{
-  struct requestlist *runp = requests;
-  int fildes = elem->aiocb.aio_fildes;
-
-  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
-    runp = runp->next_fd;
-
-  if (runp != NULL)
-    {
-      if (runp->aiocbp->aiocb.aio_fildes != fildes)
-	runp = NULL;
-      else
-	while (runp != NULL && runp->aiocbp != elem)
-	  runp = runp->next_prio;
-    }
-
-  return runp;
-}
-
-
-struct requestlist *
-__aio_find_req_fd (int fildes)
-{
-  struct requestlist *runp = requests;
-
-  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
-    runp = runp->next_fd;
-
-  return (runp != NULL && runp->aiocbp->aiocb.aio_fildes == fildes
-	  ? runp : NULL);
-}
-
-
-void
-__aio_remove_request (struct requestlist *last, struct requestlist *req,
-		      int all)
-{
-  assert (req->running == yes || req->running == queued
-	  || req->running == done);
-
-  if (last != NULL)
-    last->next_prio = all ? NULL : req->next_prio;
-  else
-    {
-      if (all || req->next_prio == NULL)
-	{
-	  if (req->last_fd != NULL)
-	    req->last_fd->next_fd = req->next_fd;
-	  else
-	    requests = req->next_fd;
-	  if (req->next_fd != NULL)
-	    req->next_fd->last_fd = req->last_fd;
-	}
-      else
-	{
-	  if (req->last_fd != NULL)
-	    req->last_fd->next_fd = req->next_prio;
-	  else
-	    requests = req->next_prio;
-
-	  if (req->next_fd != NULL)
-	    req->next_fd->last_fd = req->next_prio;
-
-	  req->next_prio->last_fd = req->last_fd;
-	  req->next_prio->next_fd = req->next_fd;
-
-	  /* Mark this entry as runnable.  */
-	  req->next_prio->running = yes;
-	}
-
-      if (req->running == yes)
-	{
-	  struct requestlist *runp = runlist;
-
-	  last = NULL;
-	  while (runp != NULL)
-	    {
-	      if (runp == req)
-		{
-		  if (last == NULL)
-		    runlist = runp->next_run;
-		  else
-		    last->next_run = runp->next_run;
-		  break;
-		}
-	      last = runp;
-	      runp = runp->next_run;
-	    }
-	}
-    }
-}
-
-
-/* The thread handler.  */
-static void *handle_fildes_io (void *arg);
-
-
-/* User optimization.  */
-void
-__aio_init (const struct aioinit *init)
-{
-  /* Get the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  /* Only allow writing new values if the table is not yet allocated.  */
-  if (pool == NULL)
-    {
-      optim.aio_threads = init->aio_threads < 1 ? 1 : init->aio_threads;
-      assert (powerof2 (ENTRIES_PER_ROW));
-      optim.aio_num = (init->aio_num < ENTRIES_PER_ROW
-		       ? ENTRIES_PER_ROW
-		       : init->aio_num & ~(ENTRIES_PER_ROW - 1));
-    }
-
-  if (init->aio_idle_time != 0)
-    optim.aio_idle_time = init->aio_idle_time;
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-}
-weak_alias (__aio_init, aio_init)
-
-
-/* The main function of the async I/O handling.  It enqueues requests
-   and if necessary starts and handles threads.  */
-struct requestlist *
-__aio_enqueue_request (aiocb_union *aiocbp, int operation)
-{
-  int result = 0;
-  int policy, prio;
-  struct sched_param param;
-  struct requestlist *last, *runp, *newp;
-  int running = no;
-
-  if (operation == LIO_SYNC || operation == LIO_DSYNC)
-    aiocbp->aiocb.aio_reqprio = 0;
-  else if (aiocbp->aiocb.aio_reqprio < 0
-#ifdef AIO_PRIO_DELTA_MAX
-	   || aiocbp->aiocb.aio_reqprio > AIO_PRIO_DELTA_MAX
-#endif
-	   )
-    {
-      /* Invalid priority value.  */
-      __set_errno (EINVAL);
-      aiocbp->aiocb.__error_code = EINVAL;
-      aiocbp->aiocb.__return_value = -1;
-      return NULL;
-    }
-
-  /* Compute priority for this request.  */
-  pthread_getschedparam (pthread_self (), &policy, &param);
-  prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
-
-  /* Get the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  last = NULL;
-  runp = requests;
-  /* First look whether the current file descriptor is currently
-     worked with.  */
-  while (runp != NULL
-	 && runp->aiocbp->aiocb.aio_fildes < aiocbp->aiocb.aio_fildes)
-    {
-      last = runp;
-      runp = runp->next_fd;
-    }
-
-  /* Get a new element for the waiting list.  */
-  newp = get_elem ();
-  if (newp == NULL)
-    {
-      pthread_mutex_unlock (&__aio_requests_mutex);
-      __set_errno (EAGAIN);
-      return NULL;
-    }
-  newp->aiocbp = aiocbp;
-  newp->waiting = NULL;
-
-  aiocbp->aiocb.__abs_prio = prio;
-  aiocbp->aiocb.__policy = policy;
-  aiocbp->aiocb.aio_lio_opcode = operation;
-  aiocbp->aiocb.__error_code = EINPROGRESS;
-  aiocbp->aiocb.__return_value = 0;
-
-  if (runp != NULL
-      && runp->aiocbp->aiocb.aio_fildes == aiocbp->aiocb.aio_fildes)
-    {
-      /* The current file descriptor is worked on.  It makes no sense
-	 to start another thread since this new thread would fight
-	 with the running thread for the resources.  But we also cannot
-	 say that the thread processing this desriptor shall immediately
-	 after finishing the current job process this request if there
-	 are other threads in the running queue which have a higher
-	 priority.  */
-
-      /* Simply enqueue it after the running one according to the
-	 priority.  */
-      last = NULL;
-      while (runp->next_prio != NULL
-	     && runp->next_prio->aiocbp->aiocb.__abs_prio >= prio)
-	{
-	  last = runp;
-	  runp = runp->next_prio;
-	}
-
-      newp->next_prio = runp->next_prio;
-      runp->next_prio = newp;
-
-      running = queued;
-    }
-  else
-    {
-      running = yes;
-      /* Enqueue this request for a new descriptor.  */
-      if (last == NULL)
-	{
-	  newp->last_fd = NULL;
-	  newp->next_fd = requests;
-	  if (requests != NULL)
-	    requests->last_fd = newp;
-	  requests = newp;
-	}
-      else
-	{
-	  newp->next_fd = last->next_fd;
-	  newp->last_fd = last;
-	  last->next_fd = newp;
-	  if (newp->next_fd != NULL)
-	    newp->next_fd->last_fd = newp;
-	}
-
-      newp->next_prio = NULL;
-      last = NULL;
-    }
-
-  if (running == yes)
-    {
-      /* We try to create a new thread for this file descriptor.  The
-	 function which gets called will handle all available requests
-	 for this descriptor and when all are processed it will
-	 terminate.
-
-	 If no new thread can be created or if the specified limit of
-	 threads for AIO is reached we queue the request.  */
-
-      /* See if we need to and are able to create a thread.  */
-      if (nthreads < optim.aio_threads && idle_thread_count == 0)
-	{
-	  pthread_t thid;
-
-	  running = newp->running = allocated;
-
-	  /* Now try to start a thread.  */
-	  result = aio_create_helper_thread (&thid, handle_fildes_io, newp);
-	  if (result == 0)
-	    /* We managed to enqueue the request.  All errors which can
-	       happen now can be recognized by calls to `aio_return' and
-	       `aio_error'.  */
-	    ++nthreads;
-	  else
-	    {
-	      /* Reset the running flag.  The new request is not running.  */
-	      running = newp->running = yes;
-
-	      if (nthreads == 0)
-		{
-		  /* We cannot create a thread in the moment and there is
-		     also no thread running.  This is a problem.  `errno' is
-		     set to EAGAIN if this is only a temporary problem.  */
-		  __aio_remove_request (last, newp, 0);
-		}
-	      else
-		result = 0;
-	    }
-	}
-    }
-
-  /* Enqueue the request in the run queue if it is not yet running.  */
-  if (running == yes && result == 0)
-    {
-      add_request_to_runlist (newp);
-
-      /* If there is a thread waiting for work, then let it know that we
-	 have just given it something to do. */
-      if (idle_thread_count > 0)
-	pthread_cond_signal (&__aio_new_request_notification);
-    }
-
-  if (result == 0)
-    newp->running = running;
-  else
-    {
-      /* Something went wrong.  */
-      __aio_free_request (newp);
-      aiocbp->aiocb.__error_code = result;
-      __set_errno (result);
-      newp = NULL;
-    }
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-
-  return newp;
-}
-
-
-static void *
-handle_fildes_io (void *arg)
-{
-  pthread_t self = pthread_self ();
-  struct sched_param param;
-  struct requestlist *runp = (struct requestlist *) arg;
-  aiocb_union *aiocbp;
-  int policy;
-  int fildes;
-
-  pthread_getschedparam (self, &policy, &param);
-
-  do
-    {
-      /* If runp is NULL, then we were created to service the work queue
-	 in general, not to handle any particular request. In that case we
-	 skip the "do work" stuff on the first pass, and go directly to the
-	 "get work off the work queue" part of this loop, which is near the
-	 end. */
-      if (runp == NULL)
-	pthread_mutex_lock (&__aio_requests_mutex);
-      else
-	{
-	  /* Hopefully this request is marked as running.  */
-	  assert (runp->running == allocated);
-
-	  /* Update our variables.  */
-	  aiocbp = runp->aiocbp;
-	  fildes = aiocbp->aiocb.aio_fildes;
-
-	  /* Change the priority to the requested value (if necessary).  */
-	  if (aiocbp->aiocb.__abs_prio != param.sched_priority
-	      || aiocbp->aiocb.__policy != policy)
-	    {
-	      param.sched_priority = aiocbp->aiocb.__abs_prio;
-	      policy = aiocbp->aiocb.__policy;
-	      pthread_setschedparam (self, policy, &param);
-	    }
-
-	  /* Process request pointed to by RUNP.  We must not be disturbed
-	     by signals.  */
-	  if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_READ)
-	    {
-	      if (sizeof (off_t) != sizeof (off64_t)
-		  && aiocbp->aiocb.aio_lio_opcode & 128)
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__pread64 (fildes, (void *)
-						 aiocbp->aiocb64.aio_buf,
-						 aiocbp->aiocb64.aio_nbytes,
-						 aiocbp->aiocb64.aio_offset));
-	      else
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
-						    (void *)
-						    aiocbp->aiocb.aio_buf,
-						    aiocbp->aiocb.aio_nbytes,
-						    aiocbp->aiocb.aio_offset));
-
-	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
-		/* The Linux kernel is different from others.  It returns
-		   ESPIPE if using pread on a socket.  Other platforms
-		   simply ignore the offset parameter and behave like
-		   read.  */
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (read (fildes,
-					    (void *) aiocbp->aiocb64.aio_buf,
-					    aiocbp->aiocb64.aio_nbytes));
-	    }
-	  else if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_WRITE)
-	    {
-	      if (sizeof (off_t) != sizeof (off64_t)
-		  && aiocbp->aiocb.aio_lio_opcode & 128)
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__pwrite64 (fildes, (const void *)
-						  aiocbp->aiocb64.aio_buf,
-						  aiocbp->aiocb64.aio_nbytes,
-						  aiocbp->aiocb64.aio_offset));
-	      else
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
-					      aiocbp->aiocb.aio_buf,
-					      aiocbp->aiocb.aio_nbytes,
-					      aiocbp->aiocb.aio_offset));
-
-	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
-		/* The Linux kernel is different from others.  It returns
-		   ESPIPE if using pwrite on a socket.  Other platforms
-		   simply ignore the offset parameter and behave like
-		   write.  */
-		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (write (fildes,
-					     (void *) aiocbp->aiocb64.aio_buf,
-					     aiocbp->aiocb64.aio_nbytes));
-	    }
-	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_DSYNC)
-	    aiocbp->aiocb.__return_value =
-	      TEMP_FAILURE_RETRY (fdatasync (fildes));
-	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_SYNC)
-	    aiocbp->aiocb.__return_value =
-	      TEMP_FAILURE_RETRY (fsync (fildes));
-	  else
-	    {
-	      /* This is an invalid opcode.  */
-	      aiocbp->aiocb.__return_value = -1;
-	      __set_errno (EINVAL);
-	    }
-
-	  /* Get the mutex.  */
-	  pthread_mutex_lock (&__aio_requests_mutex);
-
-	  if (aiocbp->aiocb.__return_value == -1)
-	    aiocbp->aiocb.__error_code = errno;
-	  else
-	    aiocbp->aiocb.__error_code = 0;
-
-	  /* Send the signal to notify about finished processing of the
-	     request.  */
-	  __aio_notify (runp);
-
-	  /* For debugging purposes we reset the running flag of the
-	     finished request.  */
-	  assert (runp->running == allocated);
-	  runp->running = done;
-
-	  /* Now dequeue the current request.  */
-	  __aio_remove_request (NULL, runp, 0);
-	  if (runp->next_prio != NULL)
-	    add_request_to_runlist (runp->next_prio);
-
-	  /* Free the old element.  */
-	  __aio_free_request (runp);
-	}
-
-      runp = runlist;
-
-      /* If the runlist is empty, then we sleep for a while, waiting for
-	 something to arrive in it. */
-      if (runp == NULL && optim.aio_idle_time >= 0)
-	{
-	  struct timespec now;
-	  struct timespec wakeup_time;
-
-	  ++idle_thread_count;
-	  __clock_gettime (CLOCK_REALTIME, &now);
-	  wakeup_time.tv_sec = now.tv_sec + optim.aio_idle_time;
-	  wakeup_time.tv_nsec = now.tv_nsec;
-	  if (wakeup_time.tv_nsec >= 1000000000)
-	    {
-	      wakeup_time.tv_nsec -= 1000000000;
-	      ++wakeup_time.tv_sec;
-	    }
-	  pthread_cond_timedwait (&__aio_new_request_notification,
-				  &__aio_requests_mutex,
-				  &wakeup_time);
-	  --idle_thread_count;
-	  runp = runlist;
-	}
-
-      if (runp == NULL)
-	--nthreads;
-      else
-	{
-	  assert (runp->running == yes);
-	  runp->running = allocated;
-	  runlist = runp->next_run;
-
-	  /* If we have a request to process, and there's still another in
-	     the run list, then we need to either wake up or create a new
-	     thread to service the request that is still in the run list. */
-	  if (runlist != NULL)
-	    {
-	      /* There are at least two items in the work queue to work on.
-		 If there are other idle threads, then we should wake them
-		 up for these other work elements; otherwise, we should try
-		 to create a new thread. */
-	      if (idle_thread_count > 0)
-		pthread_cond_signal (&__aio_new_request_notification);
-	      else if (nthreads < optim.aio_threads)
-		{
-		  pthread_t thid;
-		  pthread_attr_t attr;
-
-		  /* Make sure the thread is created detached.  */
-		  pthread_attr_init (&attr);
-		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-
-		  /* Now try to start a thread. If we fail, no big deal,
-		     because we know that there is at least one thread (us)
-		     that is working on AIO operations. */
-		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
-		      == 0)
-		    ++nthreads;
-		}
-	    }
-	}
-
-      /* Release the mutex.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
-    }
-  while (runp != NULL);
-
-  return NULL;
-}
-
-
-/* Free allocated resources.  */
-libc_freeres_fn (free_res)
-{
-  size_t row;
-
-  for (row = 0; row < pool_max_size; ++row)
-    free (pool[row]);
-
-  free (pool);
-}
-
-
-/* Add newrequest to the runlist. The __abs_prio flag of newrequest must
-   be correctly set to do this. Also, you had better set newrequest's
-   "running" flag to "yes" before you release your lock or you'll throw an
-   assertion. */
-static void
-add_request_to_runlist (struct requestlist *newrequest)
-{
-  int prio = newrequest->aiocbp->aiocb.__abs_prio;
-  struct requestlist *runp;
-
-  if (runlist == NULL || runlist->aiocbp->aiocb.__abs_prio < prio)
-    {
-      newrequest->next_run = runlist;
-      runlist = newrequest;
-    }
-  else
-    {
-      runp = runlist;
-
-      while (runp->next_run != NULL
-	     && runp->next_run->aiocbp->aiocb.__abs_prio >= prio)
-	runp = runp->next_run;
-
-      newrequest->next_run = runp->next_run;
-      runp->next_run = newrequest;
-    }
-}
diff --git a/sysdeps/pthread/aio_misc.h b/sysdeps/pthread/aio_misc.h
deleted file mode 100644
index e23524cffe..0000000000
--- a/sysdeps/pthread/aio_misc.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Copyright (C) 1997-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/>.  */
-
-#ifndef _AIO_MISC_H
-#define _AIO_MISC_H	1
-
-#include <aio.h>
-#include <pthread.h>
-
-
-/* Extend the operation enum.  */
-enum
-{
-  LIO_DSYNC = LIO_NOP + 1,
-  LIO_SYNC,
-  LIO_READ64 = LIO_READ | 128,
-  LIO_WRITE64 = LIO_WRITE | 128
-};
-
-
-/* Union of the two request types.  */
-typedef union
-  {
-    struct aiocb aiocb;
-    struct aiocb64 aiocb64;
-  } aiocb_union;
-
-
-/* Used to synchronize.  */
-struct waitlist
-  {
-    struct waitlist *next;
-
-    /* The next two fields is used in synchronous `lio_listio' operations.  */
-#ifndef DONT_NEED_AIO_MISC_COND
-    pthread_cond_t *cond;
-#endif
-    int *result;
-
-    volatile unsigned int *counterp;
-    /* The next field is used in asynchronous `lio_listio' operations.  */
-    struct sigevent *sigevp;
-  };
-
-
-/* Status of a request.  */
-enum
-{
-  no,
-  queued,
-  yes,
-  allocated,
-  done
-};
-
-
-/* Used to queue requests..  */
-struct requestlist
-  {
-    int running;
-
-    struct requestlist *last_fd;
-    struct requestlist *next_fd;
-    struct requestlist *next_prio;
-    struct requestlist *next_run;
-
-    /* Pointer to the actual data.  */
-    aiocb_union *aiocbp;
-
-    /* List of waiting processes.  */
-    struct waitlist *waiting;
-  };
-
-
-/* Lock for global I/O list of requests.  */
-extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
-
-
-/* Enqueue request.  */
-extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
-						  int operation)
-  attribute_hidden;
-
-/* Find request entry for given AIO control block.  */
-extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
-
-/* Find request entry for given file descriptor.  */
-extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
-
-/* Remove request from the list.  */
-extern void __aio_remove_request (struct requestlist *last,
-				  struct requestlist *req, int all)
-     attribute_hidden;
-
-/* Release the entry for the request.  */
-extern void __aio_free_request (struct requestlist *req) attribute_hidden;
-
-/* Notify initiator of request and tell this everybody listening.  */
-extern void __aio_notify (struct requestlist *req) attribute_hidden;
-
-/* Notify initiator of request.  */
-extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
-
-/* Send the signal.  */
-extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
-     attribute_hidden;
-
-#endif /* aio_misc.h */
diff --git a/sysdeps/pthread/aio_notify.c b/sysdeps/pthread/aio_notify.c
deleted file mode 100644
index a8d61503d8..0000000000
--- a/sysdeps/pthread/aio_notify.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Notify initiator of AIO request.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <errno.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <aio_misc.h>
-#include <signal.h>
-
-#ifndef aio_start_notify_thread
-# define aio_start_notify_thread() do { } while (0)
-#endif
-
-struct notify_func
-  {
-    void (*func) (sigval_t);
-    sigval_t value;
-  };
-
-static void *
-notify_func_wrapper (void *arg)
-{
-  aio_start_notify_thread ();
-  struct notify_func *const n = arg;
-  void (*func) (sigval_t) = n->func;
-  sigval_t value = n->value;
-  free (n);
-  (*func) (value);
-  return NULL;
-}
-
-
-int
-__aio_notify_only (struct sigevent *sigev)
-{
-  int result = 0;
-
-  /* Send the signal to notify about finished processing of the request.  */
-  if (__glibc_unlikely (sigev->sigev_notify == SIGEV_THREAD))
-    {
-      /* We have to start a thread.  */
-      pthread_t tid;
-      pthread_attr_t attr, *pattr;
-
-      pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
-      if (pattr == NULL)
-	{
-	  pthread_attr_init (&attr);
-	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-	  pattr = &attr;
-	}
-
-      /* SIGEV may be freed as soon as we return, so we cannot let the
-	 notification thread use that pointer.  Even though a sigval_t is
-	 only one word and the same size as a void *, we cannot just pass
-	 the value through pthread_create as the argument and have the new
-	 thread run the user's function directly, because on some machines
-	 the calling convention for a union like sigval_t is different from
-	 that for a pointer type like void *.  */
-      struct notify_func *nf = malloc (sizeof *nf);
-      if (nf == NULL)
-	result = -1;
-      else
-	{
-	  nf->func = sigev->sigev_notify_function;
-	  nf->value = sigev->sigev_value;
-	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
-	    {
-	      free (nf);
-	      result = -1;
-	    }
-	}
-    }
-  else if (sigev->sigev_notify == SIGEV_SIGNAL)
-    {
-      /* We have to send a signal.  */
-#if _POSIX_REALTIME_SIGNALS > 0
-      /* Note that the standard gives us the option of using a plain
-	 non-queuing signal here when SA_SIGINFO is not set for the signal.  */
-      if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
-	  < 0)
-	result = -1;
-#else
-      /* There are no queued signals on this system at all.  */
-      result = raise (sigev->sigev_signo);
-#endif
-    }
-
-  return result;
-}
-
-
-void
-__aio_notify (struct requestlist *req)
-{
-  struct waitlist *waitlist;
-  struct aiocb *aiocbp = &req->aiocbp->aiocb;
-
-  if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
-    {
-      /* XXX What shall we do if already an error is set by
-	 read/write/fsync?  */
-      aiocbp->__error_code = errno;
-      aiocbp->__return_value = -1;
-    }
-
-  /* Now also notify possibly waiting threads.  */
-  waitlist = req->waiting;
-  while (waitlist != NULL)
-    {
-      struct waitlist *next = waitlist->next;
-
-      if (waitlist->sigevp == NULL)
-	{
-	  if (waitlist->result != NULL && aiocbp->__return_value == -1)
-	    *waitlist->result = -1;
-
-#ifdef DONT_NEED_AIO_MISC_COND
-	  AIO_MISC_NOTIFY (waitlist);
-#else
-	  /* Decrement the counter.  */
-	  --*waitlist->counterp;
-
-	  pthread_cond_signal (waitlist->cond);
-#endif
-	}
-      else
-	/* This is part of an asynchronous `lio_listio' operation.  If
-	   this request is the last one, send the signal.  */
-	if (--*waitlist->counterp == 0)
-	  {
-	    __aio_notify_only (waitlist->sigevp);
-	    /* This is tricky.  See lio_listio.c for the reason why
-	       this works.  */
-	    free ((void *) waitlist->counterp);
-	  }
-
-      waitlist = next;
-    }
-}
diff --git a/sysdeps/pthread/aio_read.c b/sysdeps/pthread/aio_read.c
deleted file mode 100644
index 4698e48b1c..0000000000
--- a/sysdeps/pthread/aio_read.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Asynchronous read.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_read (struct aiocb *aiocbp)
-{
-  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
-	  ? -1 : 0);
-}
diff --git a/sysdeps/pthread/aio_read64.c b/sysdeps/pthread/aio_read64.c
deleted file mode 100644
index 26b9b0b380..0000000000
--- a/sysdeps/pthread/aio_read64.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Asynchronous read, 64bit offset version.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_read64 (struct aiocb64 *aiocbp)
-{
-  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
-	  ? -1 : 0);
-}
diff --git a/sysdeps/pthread/aio_suspend.c b/sysdeps/pthread/aio_suspend.c
deleted file mode 100644
index 6fd5b1bee2..0000000000
--- a/sysdeps/pthread/aio_suspend.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* Suspend until termination of a requests.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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/>.  */
-
-
-/* We use an UGLY hack to prevent gcc from finding us cheating.  The
-   implementations of aio_suspend and aio_suspend64 are identical and so
-   we want to avoid code duplication by using aliases.  But gcc sees
-   the different parameter lists and prints a warning.  We define here
-   a function so that aio_suspend64 has no prototype.  */
-#define aio_suspend64 XXX
-#include <aio.h>
-/* And undo the hack.  */
-#undef aio_suspend64
-
-#include <assert.h>
-#include <errno.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-#include <libc-lock.h>
-#include <aio_misc.h>
-
-
-struct clparam
-{
-  const struct aiocb *const *list;
-  struct waitlist *waitlist;
-  struct requestlist **requestlist;
-#ifndef DONT_NEED_AIO_MISC_COND
-  pthread_cond_t *cond;
-#endif
-  int nent;
-};
-
-
-static void
-cleanup (void *arg)
-{
-#ifdef DONT_NEED_AIO_MISC_COND
-  /* Acquire the mutex.  If pthread_cond_*wait is used this would
-     happen implicitly.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-#endif
-
-  const struct clparam *param = (const struct clparam *) arg;
-
-  /* Now remove the entry in the waiting list for all requests
-     which didn't terminate.  */
-  int cnt = param->nent;
-  while (cnt-- > 0)
-    if (param->list[cnt] != NULL
-	&& param->list[cnt]->__error_code == EINPROGRESS)
-      {
-	struct waitlist **listp;
-
-	assert (param->requestlist[cnt] != NULL);
-
-	/* There is the chance that we cannot find our entry anymore. This
-	   could happen if the request terminated and restarted again.  */
-	listp = &param->requestlist[cnt]->waiting;
-	while (*listp != NULL && *listp != &param->waitlist[cnt])
-	  listp = &(*listp)->next;
-
-	if (*listp != NULL)
-	  *listp = (*listp)->next;
-      }
-
-#ifndef DONT_NEED_AIO_MISC_COND
-  /* Release the conditional variable.  */
-  (void) pthread_cond_destroy (param->cond);
-#endif
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-}
-
-#ifdef DONT_NEED_AIO_MISC_COND
-static int
-__attribute__ ((noinline))
-do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
-{
-  int result = 0;
-
-  AIO_MISC_WAIT (result, *cntr, timeout, 1);
-
-  return result;
-}
-#endif
-
-int
-__aio_suspend_time64 (const struct aiocb *const list[], int nent,
-		      const struct __timespec64 *timeout)
-{
-  if (__glibc_unlikely (nent < 0))
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  struct waitlist waitlist[nent];
-  struct requestlist *requestlist[nent];
-#ifndef DONT_NEED_AIO_MISC_COND
-  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
-#endif
-  int cnt;
-  bool any = false;
-  int result = 0;
-  unsigned int cntr = 1;
-
-  /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  /* There is not yet a finished request.  Signal the request that
-     we are working for it.  */
-  for (cnt = 0; cnt < nent; ++cnt)
-    if (list[cnt] != NULL)
-      {
-	if (list[cnt]->__error_code == EINPROGRESS)
-	  {
-	    requestlist[cnt] = __aio_find_req ((aiocb_union *) list[cnt]);
-
-	    if (requestlist[cnt] != NULL)
-	      {
-#ifndef DONT_NEED_AIO_MISC_COND
-		waitlist[cnt].cond = &cond;
-#endif
-		waitlist[cnt].result = NULL;
-		waitlist[cnt].next = requestlist[cnt]->waiting;
-		waitlist[cnt].counterp = &cntr;
-		waitlist[cnt].sigevp = NULL;
-		requestlist[cnt]->waiting = &waitlist[cnt];
-		any = true;
-	      }
-	    else
-	      /* We will never suspend.  */
-	      break;
-	  }
-	else
-	  /* We will never suspend.  */
-	  break;
-      }
-
-  struct __timespec64 ts;
-  if (timeout != NULL)
-    {
-      __clock_gettime64 (CLOCK_MONOTONIC, &ts);
-      ts.tv_sec += timeout->tv_sec;
-      ts.tv_nsec += timeout->tv_nsec;
-      if (ts.tv_nsec >= 1000000000)
-	{
-	  ts.tv_nsec -= 1000000000;
-	  ts.tv_sec++;
-	}
-    }
-
-  /* Only if none of the entries is NULL or finished to be wait.  */
-  if (cnt == nent && any)
-    {
-      struct clparam clparam =
-	{
-	  .list = list,
-	  .waitlist = waitlist,
-	  .requestlist = requestlist,
-#ifndef DONT_NEED_AIO_MISC_COND
-	  .cond = &cond,
-#endif
-	  .nent = nent
-	};
-
-      pthread_cleanup_push (cleanup, &clparam);
-
-#ifdef DONT_NEED_AIO_MISC_COND
-      result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
-#else
-      struct timespec ts32 = valid_timespec64_to_timespec (ts);
-      result = pthread_cond_timedwait (&cond, &__aio_requests_mutex,
-				       timeout == NULL ? NULL : &ts32);
-#endif
-
-      pthread_cleanup_pop (0);
-    }
-
-  /* Now remove the entry in the waiting list for all requests
-     which didn't terminate.  */
-  while (cnt-- > 0)
-    if (list[cnt] != NULL && list[cnt]->__error_code == EINPROGRESS)
-      {
-	struct waitlist **listp;
-
-	assert (requestlist[cnt] != NULL);
-
-	/* There is the chance that we cannot find our entry anymore. This
-	   could happen if the request terminated and restarted again.  */
-	listp = &requestlist[cnt]->waiting;
-	while (*listp != NULL && *listp != &waitlist[cnt])
-	  listp = &(*listp)->next;
-
-	if (*listp != NULL)
-	  *listp = (*listp)->next;
-      }
-
-#ifndef DONT_NEED_AIO_MISC_COND
-  /* Release the conditional variable.  */
-  if (__glibc_unlikely (pthread_cond_destroy (&cond) != 0))
-    /* This must never happen.  */
-    abort ();
-#endif
-
-  if (result != 0)
-    {
-#ifndef DONT_NEED_AIO_MISC_COND
-      /* An error occurred.  Possibly it's ETIMEDOUT.  We have to translate
-	 the timeout error report of `pthread_cond_timedwait' to the
-	 form expected from `aio_suspend'.  */
-      if (result == ETIMEDOUT)
-	__set_errno (EAGAIN);
-      else
-#endif
-	__set_errno (result);
-
-      result = -1;
-    }
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-
-  return result;
-}
-
-#if __TIMESIZE != 64
-librt_hidden_def (__aio_suspend_time64)
-
-int
-__aio_suspend (const struct aiocb *const list[], int nent,
-               const struct timespec *timeout)
-{
-  struct __timespec64 ts64;
-
-  if (timeout != NULL)
-    ts64 = valid_timespec_to_timespec64 (*timeout);
-
-  return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
-}
-#endif
-weak_alias (__aio_suspend, aio_suspend)
-weak_alias (aio_suspend, aio_suspend64)
diff --git a/sysdeps/pthread/aio_write.c b/sysdeps/pthread/aio_write.c
deleted file mode 100644
index ea55f0dbbc..0000000000
--- a/sysdeps/pthread/aio_write.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Asynchronous write.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_write (struct aiocb *aiocbp)
-{
-  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
-	  ? -1 : 0);
-}
diff --git a/sysdeps/pthread/aio_write64.c b/sysdeps/pthread/aio_write64.c
deleted file mode 100644
index bd6dd316be..0000000000
--- a/sysdeps/pthread/aio_write64.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Asynchronous write, 64bit offset version.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-
-#include <aio_misc.h>
-
-
-int
-aio_write64 (struct aiocb64 *aiocbp)
-{
-  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
-	  ? -1 : 0);
-}
diff --git a/sysdeps/pthread/lio_listio.c b/sysdeps/pthread/lio_listio.c
deleted file mode 100644
index 2cab3c2254..0000000000
--- a/sysdeps/pthread/lio_listio.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Enqueue and list of read or write requests.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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/>.  */
-
-#ifndef lio_listio
-#include <aio.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <aio_misc.h>
-
-#define LIO_OPCODE_BASE 0
-#endif
-
-#include <shlib-compat.h>
-
-
-/* We need this special structure to handle asynchronous I/O.  */
-struct async_waitlist
-  {
-    unsigned int counter;
-    struct sigevent sigev;
-    struct waitlist list[0];
-  };
-
-
-/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
-   requests submitted with lio_listio finished.  The existing practice
-   is to issue events for the individual requests as well.  This is
-   what the new code does.  */
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
-# define LIO_MODE(mode) ((mode) & 127)
-# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
-#else
-# define LIO_MODE(mode) mode
-# define NO_INDIVIDUAL_EVENT_P(mode) 0
-#endif
-
-
-static int
-lio_listio_internal (int mode, struct aiocb *const list[], int nent,
-		     struct sigevent *sig)
-{
-  struct sigevent defsigev;
-  struct requestlist *requests[nent];
-  int cnt;
-  volatile unsigned int total = 0;
-  int result = 0;
-
-  if (sig == NULL)
-    {
-      defsigev.sigev_notify = SIGEV_NONE;
-      sig = &defsigev;
-    }
-
-  /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  /* Now we can enqueue all requests.  Since we already acquired the
-     mutex the enqueue function need not do this.  */
-  for (cnt = 0; cnt < nent; ++cnt)
-    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
-      {
-	if (NO_INDIVIDUAL_EVENT_P (mode))
-	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
-
-	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
-					       (list[cnt]->aio_lio_opcode
-						| LIO_OPCODE_BASE));
-
-	if (requests[cnt] != NULL)
-	  /* Successfully enqueued.  */
-	  ++total;
-	else
-	  /* Signal that we've seen an error.  `errno' and the error code
-	     of the aiocb will tell more.  */
-	  result = -1;
-      }
-    else
-      requests[cnt] = NULL;
-
-  if (total == 0)
-    {
-      /* We don't have anything to do except signalling if we work
-	 asynchronously.  */
-
-      /* Release the mutex.  We do this before raising a signal since the
-	 signal handler might do a `siglongjmp' and then the mutex is
-	 locked forever.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
-
-      if (LIO_MODE (mode) == LIO_NOWAIT)
-	__aio_notify_only (sig);
-
-      return result;
-    }
-  else if (LIO_MODE (mode) == LIO_WAIT)
-    {
-#ifndef DONT_NEED_AIO_MISC_COND
-      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
-      int oldstate;
-#endif
-      struct waitlist waitlist[nent];
-
-      total = 0;
-      for (cnt = 0; cnt < nent; ++cnt)
-	{
-	  assert (requests[cnt] == NULL || list[cnt] != NULL);
-
-	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
-	    {
-#ifndef DONT_NEED_AIO_MISC_COND
-	      waitlist[cnt].cond = &cond;
-#endif
-	      waitlist[cnt].result = &result;
-	      waitlist[cnt].next = requests[cnt]->waiting;
-	      waitlist[cnt].counterp = &total;
-	      waitlist[cnt].sigevp = NULL;
-	      requests[cnt]->waiting = &waitlist[cnt];
-	      ++total;
-	    }
-	}
-
-#ifdef DONT_NEED_AIO_MISC_COND
-      AIO_MISC_WAIT (result, total, NULL, 0);
-#else
-      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
-	 points we must be careful.  We added entries to the waiting lists
-	 which we must remove.  So defer cancellation for now.  */
-      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
-
-      while (total > 0)
-	pthread_cond_wait (&cond, &__aio_requests_mutex);
-
-      /* Now it's time to restore the cancellation state.  */
-      pthread_setcancelstate (oldstate, NULL);
-
-      /* Release the conditional variable.  */
-      if (pthread_cond_destroy (&cond) != 0)
-	/* This must never happen.  */
-	abort ();
-#endif
-
-      /* If any of the I/O requests failed, return -1 and set errno.  */
-      if (result != 0)
-	{
-	  __set_errno (result == EINTR ? EINTR : EIO);
-	  result = -1;
-	}
-    }
-  else
-    {
-      struct async_waitlist *waitlist;
-
-      waitlist = (struct async_waitlist *)
-	malloc (sizeof (struct async_waitlist)
-		+ (nent * sizeof (struct waitlist)));
-
-      if (waitlist == NULL)
-	{
-	  __set_errno (EAGAIN);
-	  result = -1;
-	}
-      else
-	{
-	  total = 0;
-
-	  for (cnt = 0; cnt < nent; ++cnt)
-	    {
-	      assert (requests[cnt] == NULL || list[cnt] != NULL);
-
-	      if (requests[cnt] != NULL
-		  && list[cnt]->aio_lio_opcode != LIO_NOP)
-		{
-#ifndef DONT_NEED_AIO_MISC_COND
-		  waitlist->list[cnt].cond = NULL;
-#endif
-		  waitlist->list[cnt].result = NULL;
-		  waitlist->list[cnt].next = requests[cnt]->waiting;
-		  waitlist->list[cnt].counterp = &waitlist->counter;
-		  waitlist->list[cnt].sigevp = &waitlist->sigev;
-		  requests[cnt]->waiting = &waitlist->list[cnt];
-		  ++total;
-		}
-	    }
-
-	  waitlist->counter = total;
-	  waitlist->sigev = *sig;
-	}
-    }
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-
-  return result;
-}
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
-int
-attribute_compat_text_section
-__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
-		 struct sigevent *sig)
-{
-  /* Check arguments.  */
-  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
-}
-compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
-#endif
-
-
-int
-__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
-			  struct sigevent *sig)
-{
-    /* Check arguments.  */
-  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  return lio_listio_internal (mode, list, nent, sig);
-}
-versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
diff --git a/sysdeps/pthread/lio_listio64.c b/sysdeps/pthread/lio_listio64.c
deleted file mode 100644
index 111c883a2f..0000000000
--- a/sysdeps/pthread/lio_listio64.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Enqueue and list of read or write requests, 64bit offset version.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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 <aio.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <aio_misc.h>
-
-#define lio_listio lio_listio64
-#define __lio_listio_21 __lio_listio64_21
-#define __lio_listio_item_notify __lio_listio64_item_notify
-#define aiocb aiocb64
-#define LIO_OPCODE_BASE 128
-#include <lio_listio.c>
diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
deleted file mode 100644
index 2808f5b32b..0000000000
--- a/sysdeps/pthread/timer_create.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-   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 <errno.h>
-#include <signal.h>
-#include <pthread.h>
-#include <time.h>
-#include <unistd.h>
-
-#include "posix-timer.h"
-
-
-/* Create new per-process timer using CLOCK.  */
-int
-timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
-{
-  int retval = -1;
-  struct timer_node *newtimer = NULL;
-  struct thread_node *thread = NULL;
-
-  if (0
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-      || clock_id == CLOCK_PROCESS_CPUTIME_ID
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-      || clock_id == CLOCK_THREAD_CPUTIME_ID
-#endif
-      )
-    {
-      /* We don't allow timers for CPU clocks.  At least not in the
-	 moment.  */
-      __set_errno (ENOTSUP);
-      return -1;
-    }
-
-  if (clock_id != CLOCK_REALTIME)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  pthread_once (&__timer_init_once_control, __timer_init_once);
-
-  if (__timer_init_failed)
-    {
-      __set_errno (ENOMEM);
-      return -1;
-    }
-
-  pthread_mutex_lock (&__timer_mutex);
-
-  newtimer = __timer_alloc ();
-  if (__glibc_unlikely (newtimer == NULL))
-    {
-      __set_errno (EAGAIN);
-      goto unlock_bail;
-    }
-
-  if (evp != NULL)
-    newtimer->event = *evp;
-  else
-    {
-      newtimer->event.sigev_notify = SIGEV_SIGNAL;
-      newtimer->event.sigev_signo = SIGALRM;
-      newtimer->event.sigev_value.sival_ptr = newtimer;
-      newtimer->event.sigev_notify_function = 0;
-    }
-
-  newtimer->event.sigev_notify_attributes = &newtimer->attr;
-  newtimer->creator_pid = getpid ();
-
-  switch (__builtin_expect (newtimer->event.sigev_notify, SIGEV_SIGNAL))
-    {
-    case SIGEV_NONE:
-    case SIGEV_SIGNAL:
-      /* We have a global thread for delivering timed signals.
-	 If it is not running, try to start it up.  */
-      thread = &__timer_signal_thread_rclk;
-      if (! thread->exists)
-	{
-	  if (__builtin_expect (__timer_thread_start (thread),
-				1) < 0)
-	    {
-	      __set_errno (EAGAIN);
-	      goto unlock_bail;
-            }
-        }
-      break;
-
-    case SIGEV_THREAD:
-      /* Copy over thread attributes or set up default ones.  */
-      if (evp->sigev_notify_attributes)
-	newtimer->attr = *(pthread_attr_t *) evp->sigev_notify_attributes;
-      else
-	pthread_attr_init (&newtimer->attr);
-
-      /* Ensure thread attributes call for deatched thread.  */
-      pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
-
-      /* Try to find existing thread having the right attributes.  */
-      thread = __timer_thread_find_matching (&newtimer->attr, clock_id);
-
-      /* If no existing thread has these attributes, try to allocate one.  */
-      if (thread == NULL)
-	thread = __timer_thread_alloc (&newtimer->attr, clock_id);
-
-      /* Out of luck; no threads are available.  */
-      if (__glibc_unlikely (thread == NULL))
-	{
-	  __set_errno (EAGAIN);
-	  goto unlock_bail;
-	}
-
-      /* If the thread is not running already, try to start it.  */
-      if (! thread->exists
-	  && __builtin_expect (! __timer_thread_start (thread), 0))
-	{
-	  __set_errno (EAGAIN);
-	  goto unlock_bail;
-	}
-      break;
-
-    default:
-      __set_errno (EINVAL);
-      goto unlock_bail;
-    }
-
-  newtimer->clock = clock_id;
-  newtimer->abstime = 0;
-  newtimer->armed = 0;
-  newtimer->thread = thread;
-
-  *timerid = timer_ptr2id (newtimer);
-  retval = 0;
-
-  if (__builtin_expect (retval, 0) == -1)
-    {
-    unlock_bail:
-      if (thread != NULL)
-	__timer_thread_dealloc (thread);
-      if (newtimer != NULL)
-	{
-	  timer_delref (newtimer);
-	  __timer_dealloc (newtimer);
-	}
-    }
-
-  pthread_mutex_unlock (&__timer_mutex);
-
-  return retval;
-}
diff --git a/sysdeps/pthread/timer_delete.c b/sysdeps/pthread/timer_delete.c
deleted file mode 100644
index c6f6d9743d..0000000000
--- a/sysdeps/pthread/timer_delete.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-   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 <assert.h>
-#include <errno.h>
-#include <pthread.h>
-#include <time.h>
-
-#include "posix-timer.h"
-
-
-/* Delete timer TIMERID.  */
-int
-timer_delete (timer_t timerid)
-{
-  struct timer_node *timer;
-  int retval = -1;
-
-  pthread_mutex_lock (&__timer_mutex);
-
-  timer = timer_id2ptr (timerid);
-  if (! timer_valid (timer))
-    /* Invalid timer ID or the timer is not in use.  */
-    __set_errno (EINVAL);
-  else
-    {
-      if (timer->armed && timer->thread != NULL)
-	{
-	  struct thread_node *thread = timer->thread;
-	  assert (thread != NULL);
-
-	  /* If thread is cancelled while waiting for handler to terminate,
-	     the mutex is unlocked and timer_delete is aborted.  */
-	  pthread_cleanup_push (__timer_mutex_cancel_handler, &__timer_mutex);
-
-	  /* If timer is currently being serviced, wait for it to finish.  */
-	  while (thread->current_timer == timer)
-	    pthread_cond_wait (&thread->cond, &__timer_mutex);
-
-	  pthread_cleanup_pop (0);
-        }
-
-      /* Remove timer from whatever queue it may be on and deallocate it.  */
-      timer->inuse = TIMER_DELETED;
-      list_unlink_ip (&timer->links);
-      timer_delref (timer);
-      retval = 0;
-    }
-
-  pthread_mutex_unlock (&__timer_mutex);
-
-  return retval;
-}
diff --git a/sysdeps/pthread/timer_getoverr.c b/sysdeps/pthread/timer_getoverr.c
deleted file mode 100644
index c1952f80c6..0000000000
--- a/sysdeps/pthread/timer_getoverr.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-   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 <errno.h>
-#include <pthread.h>
-#include <time.h>
-
-#include "posix-timer.h"
-
-
-/* Get expiration overrun for timer TIMERID.  */
-int
-timer_getoverrun (timer_t timerid)
-{
-  struct timer_node *timer;
-  int retval = -1;
-
-  pthread_mutex_lock (&__timer_mutex);
-
-  if (! timer_valid (timer = timer_id2ptr (timerid)))
-    __set_errno (EINVAL);
-  else
-    retval = timer->overrun_count;
-
-  pthread_mutex_unlock (&__timer_mutex);
-
-  return retval;
-}
diff --git a/sysdeps/pthread/timer_gettime.c b/sysdeps/pthread/timer_gettime.c
deleted file mode 100644
index dd3b4a6281..0000000000
--- a/sysdeps/pthread/timer_gettime.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-   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 <errno.h>
-#include <pthread.h>
-#include <time.h>
-
-#include "posix-timer.h"
-
-
-/* Get current value of timer TIMERID and store it in VLAUE.  */
-int
-timer_gettime (timer_t timerid, struct itimerspec *value)
-{
-  struct timer_node *timer;
-  struct timespec now, expiry;
-  int retval = -1, armed = 0, valid;
-  clock_t clock = 0;
-
-  pthread_mutex_lock (&__timer_mutex);
-
-  timer = timer_id2ptr (timerid);
-  valid = timer_valid (timer);
-
-  if (valid) {
-    armed = timer->armed;
-    expiry = timer->expirytime;
-    clock = timer->clock;
-    value->it_interval = timer->value.it_interval;
-  }
-
-  pthread_mutex_unlock (&__timer_mutex);
-
-  if (valid)
-    {
-      if (armed)
-	{
-	  __clock_gettime (clock, &now);
-	  if (timespec_compare (&now, &expiry) < 0)
-	    timespec_sub (&value->it_value, &expiry, &now);
-	  else
-	    {
-	      value->it_value.tv_sec = 0;
-	      value->it_value.tv_nsec = 0;
-	    }
-	}
-      else
-	{
-	  value->it_value.tv_sec = 0;
-	  value->it_value.tv_nsec = 0;
-	}
-
-      retval = 0;
-    }
-  else
-    __set_errno (EINVAL);
-
-  return retval;
-}
diff --git a/sysdeps/pthread/timer_settime.c b/sysdeps/pthread/timer_settime.c
deleted file mode 100644
index c05adf166f..0000000000
--- a/sysdeps/pthread/timer_settime.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-   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 <errno.h>
-#include <pthread.h>
-#include <time.h>
-
-#include "posix-timer.h"
-
-
-/* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
-int
-timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
-	       struct itimerspec *ovalue)
-{
-  struct timer_node *timer;
-  struct thread_node *thread = NULL;
-  struct timespec now;
-  int have_now = 0, need_wakeup = 0;
-  int retval = -1;
-
-  timer = timer_id2ptr (timerid);
-  if (timer == NULL)
-    {
-      __set_errno (EINVAL);
-      goto bail;
-    }
-
-  if (! valid_nanoseconds (value->it_interval.tv_nsec)
-      || ! valid_nanoseconds (value->it_value.tv_nsec))
-    {
-      __set_errno (EINVAL);
-      goto bail;
-    }
-
-  /* Will need to know current time since this is a relative timer;
-     might as well make the system call outside of the lock now! */
-
-  if ((flags & TIMER_ABSTIME) == 0)
-    {
-      __clock_gettime (timer->clock, &now);
-      have_now = 1;
-    }
-
-  pthread_mutex_lock (&__timer_mutex);
-  timer_addref (timer);
-
-  /* One final check of timer validity; this one is possible only
-     until we have the mutex, because it accesses the inuse flag. */
-
-  if (! timer_valid(timer))
-    {
-      __set_errno (EINVAL);
-      goto unlock_bail;
-    }
-
-  if (ovalue != NULL)
-    {
-      ovalue->it_interval = timer->value.it_interval;
-
-      if (timer->armed)
-	{
-	  if (! have_now)
-	    {
-	      pthread_mutex_unlock (&__timer_mutex);
-	      __clock_gettime (timer->clock, &now);
-	      have_now = 1;
-	      pthread_mutex_lock (&__timer_mutex);
-	      timer_addref (timer);
-	    }
-
-	  timespec_sub (&ovalue->it_value, &timer->expirytime, &now);
-	}
-      else
-	{
-	  ovalue->it_value.tv_sec = 0;
-	  ovalue->it_value.tv_nsec = 0;
-	}
-    }
-
-  timer->value = *value;
-
-  list_unlink_ip (&timer->links);
-  timer->armed = 0;
-
-  thread = timer->thread;
-
-  /* A value of { 0, 0 } causes the timer to be stopped. */
-  if (value->it_value.tv_sec != 0
-      || __builtin_expect (value->it_value.tv_nsec != 0, 1))
-    {
-      if ((flags & TIMER_ABSTIME) != 0)
-	/* The user specified the expiration time.  */
-	timer->expirytime = value->it_value;
-      else
-	timespec_add (&timer->expirytime, &now, &value->it_value);
-
-      /* Only need to wake up the thread if timer is inserted
-	 at the head of the queue. */
-      if (thread != NULL)
-	need_wakeup = __timer_thread_queue_timer (thread, timer);
-      timer->armed = 1;
-    }
-
-  retval = 0;
-
-unlock_bail:
-  timer_delref (timer);
-  pthread_mutex_unlock (&__timer_mutex);
-
-bail:
-  if (thread != NULL && need_wakeup)
-    __timer_thread_wakeup (thread);
-
-  return retval;
-}
diff --git a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
index 0d6da82919..9f69b080ed 100644
--- a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
+++ b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
@@ -10,7 +10,7 @@ extern __typeof (aio_cancel) __old_aio_cancel;
 
 #define aio_cancel	__new_aio_cancel
 
-#include <sysdeps/pthread/aio_cancel.c>
+#include <rt/aio_cancel.c>
 
 #undef aio_cancel
 strong_alias (__new_aio_cancel, __new_aio_cancel64);
@@ -23,7 +23,7 @@ versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
 #define aio_cancel	__old_aio_cancel
 #define ECANCELED	125
 
-#include <sysdeps/pthread/aio_cancel.c>
+#include <rt/aio_cancel.c>
 
 #undef aio_cancel
 strong_alias (__old_aio_cancel, __old_aio_cancel64);
diff --git a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
index 0d6da82919..9f69b080ed 100644
--- a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
+++ b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
@@ -10,7 +10,7 @@ extern __typeof (aio_cancel) __old_aio_cancel;
 
 #define aio_cancel	__new_aio_cancel
 
-#include <sysdeps/pthread/aio_cancel.c>
+#include <rt/aio_cancel.c>
 
 #undef aio_cancel
 strong_alias (__new_aio_cancel, __new_aio_cancel64);
@@ -23,7 +23,7 @@ versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
 #define aio_cancel	__old_aio_cancel
 #define ECANCELED	125
 
-#include <sysdeps/pthread/aio_cancel.c>
+#include <rt/aio_cancel.c>
 
 #undef aio_cancel
 strong_alias (__old_aio_cancel, __old_aio_cancel64);
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
index d10fc4320b..8310b484d0 100644
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
@@ -1,6 +1,6 @@
 #define aio_read64 __renamed_aio_read64
 
-#include "../../../../pthread/aio_read.c"
+#include <rt/aio_read.c>
 
 #undef aio_read64
 
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
index b0fb469cb2..60d242f88f 100644
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
@@ -1,6 +1,6 @@
 #define aio_write64 __renamed_aio_write64
 
-#include "../../../../pthread/aio_write.c"
+#include <rt/aio_write.c>
 
 #undef aio_write64
 
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
index 25ee5a3507..be9fe7a9c7 100644
--- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
@@ -1,6 +1,6 @@
 #define lio_listio64 __renamed_lio_listio64
 
-#include "../../../../pthread/lio_listio.c"
+#include <rt/lio_listio.c>
 
 #undef lio_listio64
 
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (6 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-22  0:57   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 09/34] Add hidden prototypes for fsync, fdatasync Florian Weimer
                   ` (26 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

This mirrors the situation on Hurd.  These directories are on
the include search part, so #include <pthreadP.h> works after this
change on both Hurd and nptl.
---
 nptl_db/thread_dbP.h                      | 2 +-
 sysdeps/nptl/aio_misc.h                   | 2 +-
 sysdeps/nptl/dl-tls_init_tp.c             | 2 +-
 sysdeps/nptl/fork.c                       | 2 +-
 sysdeps/nptl/gai_misc.h                   | 2 +-
 sysdeps/nptl/jmp-unwind.c                 | 2 +-
 sysdeps/nptl/libc-lockP.h                 | 2 +-
 sysdeps/nptl/libc_start_call_main.h       | 2 +-
 {nptl => sysdeps/nptl}/pthreadP.h         | 2 +-
 sysdeps/nptl/pthread_early_init.h         | 2 +-
 sysdeps/nptl/setxid.h                     | 2 +-
 sysdeps/posix/spawni.c                    | 2 +-
 sysdeps/unix/sysv/linux/dl-execstack.c    | 2 +-
 sysdeps/unix/sysv/linux/mq_notify.c       | 2 +-
 sysdeps/unix/sysv/linux/s390/jmp-unwind.c | 2 +-
 sysdeps/unix/sysv/linux/sigprocmask.c     | 2 +-
 sysdeps/unix/sysv/linux/spawni.c          | 2 +-
 sysdeps/unix/sysv/linux/timer_create.c    | 2 +-
 sysdeps/unix/sysv/linux/timer_routines.c  | 2 +-
 sysdeps/unix/sysv/linux/tls-internal.h    | 2 +-
 sysdeps/unix/sysv/linux/x86/longjmp.c     | 2 +-
 21 files changed, 21 insertions(+), 21 deletions(-)
 rename {nptl => sysdeps/nptl}/pthreadP.h (99%)

diff --git a/nptl_db/thread_dbP.h b/nptl_db/thread_dbP.h
index 712fa3aeb6..7e7d1d5535 100644
--- a/nptl_db/thread_dbP.h
+++ b/nptl_db/thread_dbP.h
@@ -27,7 +27,7 @@
 #include <assert.h>
 #include "proc_service.h"
 #include "thread_db.h"
-#include "../nptl/pthreadP.h"  	/* This is for *_BITMASK only.  */
+#include <pthreadP.h>  	/* This is for *_BITMASK only.  */
 #include <list.h>
 #include <gnu/lib-names.h>
 #include <libc-diag.h>
diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
index 3e9b8929b2..a5c439fab5 100644
--- a/sysdeps/nptl/aio_misc.h
+++ b/sysdeps/nptl/aio_misc.h
@@ -21,7 +21,7 @@
    correct aio_suspend and lio_listio implementations.  */
 
 #include <assert.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <futex-internal.h>
 
 #define DONT_NEED_AIO_MISC_COND	1
diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
index b7b3bb1cdb..c3349dd14c 100644
--- a/sysdeps/nptl/dl-tls_init_tp.c
+++ b/sysdeps/nptl/dl-tls_init_tp.c
@@ -19,7 +19,7 @@
 #include <kernel-features.h>
 #include <ldsodefs.h>
 #include <list.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <tls.h>
 
 #ifndef __ASSUME_SET_ROBUST_LIST
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 062b01265a..39ab797612 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -27,7 +27,7 @@
 #include <ldsodefs.h>
 #include <stdio-lock.h>
 #include <atomic.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <register-atfork.h>
 #include <arch-fork.h>
 #include <futex-internal.h>
diff --git a/sysdeps/nptl/gai_misc.h b/sysdeps/nptl/gai_misc.h
index 82948fdf96..36bf27523d 100644
--- a/sysdeps/nptl/gai_misc.h
+++ b/sysdeps/nptl/gai_misc.h
@@ -22,7 +22,7 @@
 
 #include <assert.h>
 #include <signal.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <futex-internal.h>
 
 #define DONT_NEED_GAI_MISC_COND	1
diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
index 96c4862c74..5254c16b81 100644
--- a/sysdeps/nptl/jmp-unwind.c
+++ b/sysdeps/nptl/jmp-unwind.c
@@ -19,7 +19,7 @@
 #include <setjmp.h>
 #include <stddef.h>
 #include <libc-lock.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 
 void
 _longjmp_unwind (jmp_buf env, int val)
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index ec7b02bbdd..ef88a3e533 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -36,7 +36,7 @@
 #if IS_IN (libpthread)
 /* This gets us the declarations of the __pthread_* internal names,
    and hidden_proto for them.  */
-# include <nptl/pthreadP.h>
+# include <pthreadP.h>
 #endif
 
 /* Mutex type.  */
diff --git a/sysdeps/nptl/libc_start_call_main.h b/sysdeps/nptl/libc_start_call_main.h
index b56bf34325..06d72c1e38 100644
--- a/sysdeps/nptl/libc_start_call_main.h
+++ b/sysdeps/nptl/libc_start_call_main.h
@@ -17,7 +17,7 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <atomic.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 
 _Noreturn static void
 __libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
diff --git a/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
similarity index 99%
rename from nptl/pthreadP.h
rename to sysdeps/nptl/pthreadP.h
index 675d1de753..ca96ff073b 100644
--- a/nptl/pthreadP.h
+++ b/sysdeps/nptl/pthreadP.h
@@ -25,7 +25,7 @@
 #include <setjmp.h>
 #include <stdbool.h>
 #include <sys/syscall.h>
-#include "descr.h"
+#include <nptl/descr.h>
 #include <tls.h>
 #include <lowlevellock.h>
 #include <stackinfo.h>
diff --git a/sysdeps/nptl/pthread_early_init.h b/sysdeps/nptl/pthread_early_init.h
index 5b49ce39c2..89774c1477 100644
--- a/sysdeps/nptl/pthread_early_init.h
+++ b/sysdeps/nptl/pthread_early_init.h
@@ -20,7 +20,7 @@
 #define _PTHREAD_EARLY_INIT_H 1
 
 #include <nptl/nptl-stack.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <pthread_mutex_conf.h>
 #include <sys/resource.h>
 
diff --git a/sysdeps/nptl/setxid.h b/sysdeps/nptl/setxid.h
index 8b49d11550..e90367bf02 100644
--- a/sysdeps/nptl/setxid.h
+++ b/sysdeps/nptl/setxid.h
@@ -15,7 +15,7 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <sys/single_threaded.h>
 #include <sysdep.h>
 
diff --git a/sysdeps/posix/spawni.c b/sysdeps/posix/spawni.c
index a649788668..fe3b5bb7f6 100644
--- a/sysdeps/posix/spawni.c
+++ b/sysdeps/posix/spawni.c
@@ -28,7 +28,7 @@
 #include <not-cancel.h>
 #include <local-setxid.h>
 #include <shlib-compat.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <dl-sysdep.h>
 #include <libc-pointer-arith.h>
 #include <ldsodefs.h>
diff --git a/sysdeps/unix/sysv/linux/dl-execstack.c b/sysdeps/unix/sysv/linux/dl-execstack.c
index e2449d1890..6598c90357 100644
--- a/sysdeps/unix/sysv/linux/dl-execstack.c
+++ b/sysdeps/unix/sysv/linux/dl-execstack.c
@@ -20,7 +20,7 @@
 #include <ldsodefs.h>
 #include <libintl.h>
 #include <list.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <stackinfo.h>
 #include <stdbool.h>
 #include <sys/mman.h>
diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
index 6f46d29d1d..e22850a910 100644
--- a/sysdeps/unix/sysv/linux/mq_notify.c
+++ b/sysdeps/unix/sysv/linux/mq_notify.c
@@ -28,7 +28,7 @@
 #include <unistd.h>
 #include <sys/socket.h>
 #include <not-cancel.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 
 
 /* Defined in the kernel headers: */
diff --git a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
index 8e0399a3e9..5fbca71f5b 100644
--- a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
+++ b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
@@ -19,7 +19,7 @@
 #include <setjmp.h>
 #include <stddef.h>
 #include <libc-lock.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 
 void
 _longjmp_unwind (jmp_buf env, int val)
diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
index 9dfd8076d1..eeec05d037 100644
--- a/sysdeps/unix/sysv/linux/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sigprocmask.c
@@ -16,7 +16,7 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <signal.h>
-#include <nptl/pthreadP.h>              /* SIGCANCEL, SIGSETXID */
+#include <pthreadP.h>              /* SIGCANCEL, SIGSETXID */
 
 /* Get and/or change the set of blocked signals.  */
 int
diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
index 501f8fbccd..3b435e6c86 100644
--- a/sysdeps/unix/sysv/linux/spawni.c
+++ b/sysdeps/unix/sysv/linux/spawni.c
@@ -27,7 +27,7 @@
 #include <not-cancel.h>
 #include <local-setxid.h>
 #include <shlib-compat.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <dl-sysdep.h>
 #include <libc-pointer-arith.h>
 #include <ldsodefs.h>
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index 37de98fde4..1ea0086487 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -24,7 +24,7 @@
 #include <time.h>
 #include <sysdep.h>
 #include <internaltypes.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include "kernel-posix-timers.h"
 #include "kernel-posix-cpu-timers.h"
 
diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
index 60e60e0098..4098da8a5f 100644
--- a/sysdeps/unix/sysv/linux/timer_routines.c
+++ b/sysdeps/unix/sysv/linux/timer_routines.c
@@ -21,7 +21,7 @@
 #include <signal.h>
 #include <stdbool.h>
 #include <sysdep-cancel.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include "kernel-posix-timers.h"
 
 
diff --git a/sysdeps/unix/sysv/linux/tls-internal.h b/sysdeps/unix/sysv/linux/tls-internal.h
index 40798a5dcc..17128136dd 100644
--- a/sysdeps/unix/sysv/linux/tls-internal.h
+++ b/sysdeps/unix/sysv/linux/tls-internal.h
@@ -20,7 +20,7 @@
 #define _TLS_INTERNAL_H 1
 
 #include <stdlib.h>
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 
 static inline struct tls_internal_t *
 __glibc_tls_internal (void)
diff --git a/sysdeps/unix/sysv/linux/x86/longjmp.c b/sysdeps/unix/sysv/linux/x86/longjmp.c
index 1cc8b8dfad..25e2af7685 100644
--- a/sysdeps/unix/sysv/linux/x86/longjmp.c
+++ b/sysdeps/unix/sysv/linux/x86/longjmp.c
@@ -18,7 +18,7 @@
 
 #include <sysdeps/x86/longjmp.c>
 
-#include <nptl/pthreadP.h>
+#include <pthreadP.h>
 #include <jmp_buf-ssp.h>
 
 #ifdef __x86_64__
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 09/34] Add hidden prototypes for fsync, fdatasync
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (7 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-22  0:58   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 10/34] Linux: Move aio_init from librt into libc Florian Weimer
                   ` (25 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

---
 include/unistd.h                    | 2 ++
 misc/fdatasync.c                    | 1 +
 misc/fsync.c                        | 2 +-
 sysdeps/mach/hurd/fdatasync.c       | 1 +
 sysdeps/mach/hurd/fsync.c           | 1 +
 sysdeps/unix/sysv/linux/fdatasync.c | 1 +
 sysdeps/unix/sysv/linux/fsync.c     | 1 +
 7 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/unistd.h b/include/unistd.h
index 8ed8b1ea4b..34872d8b41 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -25,6 +25,8 @@ libc_hidden_proto (seteuid)
 libc_hidden_proto (setegid)
 libc_hidden_proto (tcgetpgrp)
 libc_hidden_proto (readlinkat)
+libc_hidden_proto (fsync)
+libc_hidden_proto (fdatasync)
 
 /* Now define the internal interfaces.  */
 extern int __access (const char *__name, int __type);
diff --git a/misc/fdatasync.c b/misc/fdatasync.c
index 28474812ca..c776978bba 100644
--- a/misc/fdatasync.c
+++ b/misc/fdatasync.c
@@ -25,3 +25,4 @@ fdatasync (int fildes)
 {
   return fsync (fildes);
 }
+libc_hidden_def (fdatasync)
diff --git a/misc/fsync.c b/misc/fsync.c
index e1c37c6016..1961dd0cb2 100644
--- a/misc/fsync.c
+++ b/misc/fsync.c
@@ -25,6 +25,6 @@ fsync (int fd)
   __set_errno (ENOSYS);
   return -1;
 }
-
+libc_hidden_def (fsync)
 
 stub_warning (fsync)
diff --git a/sysdeps/mach/hurd/fdatasync.c b/sysdeps/mach/hurd/fdatasync.c
index 0be8072e7f..68df551016 100644
--- a/sysdeps/mach/hurd/fdatasync.c
+++ b/sysdeps/mach/hurd/fdatasync.c
@@ -41,3 +41,4 @@ fdatasync (int fd)
     }
   return 0;
 }
+libc_hidden_def (fdatasync)
diff --git a/sysdeps/mach/hurd/fsync.c b/sysdeps/mach/hurd/fsync.c
index ef04ee97f9..c1d560f293 100644
--- a/sysdeps/mach/hurd/fsync.c
+++ b/sysdeps/mach/hurd/fsync.c
@@ -41,3 +41,4 @@ fsync (int fd)
     }
   return 0;
 }
+libc_hidden_def (fsync)
diff --git a/sysdeps/unix/sysv/linux/fdatasync.c b/sysdeps/unix/sysv/linux/fdatasync.c
index 84c07f212e..12fb3c13e5 100644
--- a/sysdeps/unix/sysv/linux/fdatasync.c
+++ b/sysdeps/unix/sysv/linux/fdatasync.c
@@ -27,3 +27,4 @@ fdatasync (int fd)
 {
   return SYSCALL_CANCEL (fdatasync, fd);
 }
+libc_hidden_def (fdatasync)
diff --git a/sysdeps/unix/sysv/linux/fsync.c b/sysdeps/unix/sysv/linux/fsync.c
index 234bb0049f..e4b5c8c342 100644
--- a/sysdeps/unix/sysv/linux/fsync.c
+++ b/sysdeps/unix/sysv/linux/fsync.c
@@ -26,3 +26,4 @@ fsync (int fd)
 {
   return SYSCALL_CANCEL (fsync, fd);
 }
+libc_hidden_def (fsync)
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 10/34] Linux: Move aio_init from librt into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (8 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 09/34] Add hidden prototypes for fsync, fdatasync Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-23 13:22   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
                   ` (24 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

This commit also moves the aio_misc and aio_sigquue helper,
so GLIBC_PRIVATE exports need to be added.

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 nptl/pthread_getschedparam.c                  |   1 +
 rt/Makefile                                   |   6 +-
 rt/Versions                                   |  23 ++++
 rt/aio_misc.c                                 | 107 ++++++++++++------
 rt/aio_notify.c                               |  21 +++-
 rt/aio_sigqueue.c                             |   2 +-
 sysdeps/generic/aio_misc.h                    |  43 +++++--
 sysdeps/nptl/aio_misc.h                       |   4 +-
 sysdeps/nptl/pthreadP.h                       |   1 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |   2 +
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |   1 -
 sysdeps/unix/sysv/linux/aio_misc.h            |  10 +-
 sysdeps/unix/sysv/linux/aio_sigqueue.c        |   3 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |   2 +
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |   1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |   2 +
 sysdeps/unix/sysv/linux/arc/librt.abilist     |   1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |   2 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |   1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |   2 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |   1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |   2 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |   1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |   2 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |   1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |   2 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |   1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |   2 +
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |   1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |   2 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |   1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |   2 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |   1 -
 .../sysv/linux/microblaze/be/libc.abilist     |   2 +
 .../sysv/linux/microblaze/be/librt.abilist    |   1 -
 .../sysv/linux/microblaze/le/libc.abilist     |   2 +
 .../sysv/linux/microblaze/le/librt.abilist    |   1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |   2 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |   1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |   2 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |   2 +
 .../sysv/linux/mips/mips64/n32/librt.abilist  |   1 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |   2 +
 .../sysv/linux/mips/mips64/n64/librt.abilist  |   1 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |   2 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |   1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |   2 +
 .../linux/powerpc/powerpc32/librt.abilist     |   1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |   2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |   2 +
 .../linux/powerpc/powerpc64/be/librt.abilist  |   1 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |   2 +
 .../linux/powerpc/powerpc64/le/librt.abilist  |   1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |   2 +
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |   1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |   2 +
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |   1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |   2 +
 .../sysv/linux/s390/s390-32/librt.abilist     |   1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |   2 +
 .../sysv/linux/s390/s390-64/librt.abilist     |   1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |   2 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |   1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |   2 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |   1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |   2 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |   1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |   2 +
 .../sysv/linux/sparc/sparc64/librt.abilist    |   1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |   2 +
 .../unix/sysv/linux/x86_64/64/librt.abilist   |   1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |   2 +
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |   1 -
 73 files changed, 222 insertions(+), 93 deletions(-)

diff --git a/nptl/pthread_getschedparam.c b/nptl/pthread_getschedparam.c
index a69ed8d8c3..94316cf897 100644
--- a/nptl/pthread_getschedparam.c
+++ b/nptl/pthread_getschedparam.c
@@ -70,4 +70,5 @@ __pthread_getschedparam (pthread_t threadid, int *policy,
 
   return result;
 }
+libc_hidden_def (__pthread_getschedparam)
 strong_alias (__pthread_getschedparam, pthread_getschedparam)
diff --git a/rt/Makefile b/rt/Makefile
index 329db09c32..ada87c845e 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -32,12 +32,9 @@ librt-routines = \
   aio_cancel \
   aio_error \
   aio_fsync \
-  aio_misc \
-  aio_notify \
   aio_read \
   aio_read64 \
   aio_return \
-  aio_sigqueue \
   aio_suspend \
   aio_write \
   aio_write64 \
@@ -60,6 +57,9 @@ librt-routines = \
   timer_settime \
 
 $(librt-routines-var) += \
+  aio_misc \
+  aio_notify \
+  aio_sigqueue \
 
 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 26c6d1ac63..2e991a9d93 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -1,12 +1,33 @@
 libc {
+  GLIBC_2.1 {
+%if PTHREAD_IN_LIBC
+    aio_init;
+%endif
+  }
   GLIBC_2.2 {
     shm_open;
     shm_unlink;
   }
   GLIBC_2.34 {
+%if PTHREAD_IN_LIBC
+    aio_init;
+%endif
     shm_open;
     shm_unlink;
   }
+%if PTHREAD_IN_LIBC
+  GLIBC_PRIVATE {
+    __aio_enqueue_request;
+    __aio_find_req;
+    __aio_find_req_fd;
+    __aio_free_request;
+    __aio_notify;
+    __aio_notify_only;
+    __aio_remove_request;
+    __aio_requests_mutex;
+    __aio_sigqueue;
+  }
+%endif
 }
 librt {
   GLIBC_2.1 {
@@ -16,7 +37,9 @@ librt {
     aio_error64;
     aio_fsync;
     aio_fsync64;
+%if !PTHREAD_IN_LIBC
     aio_init;
+%endif
     aio_read;
     aio_read64;
     aio_return;
diff --git a/rt/aio_misc.c b/rt/aio_misc.c
index b95f07d9d3..d9be8ac33d 100644
--- a/rt/aio_misc.c
+++ b/rt/aio_misc.c
@@ -21,7 +21,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <limits.h>
-#include <pthread.h>
+#include <pthreadP.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/param.h>
@@ -29,6 +29,20 @@
 #include <sys/time.h>
 #include <aio_misc.h>
 
+#if !PTHREAD_IN_LIBC
+/* The available function names differ outside of libc.  (In libc, we
+   need to use hidden aliases to avoid the PLT.)  */
+# define __pread __libc_pread
+# define __pthread_attr_destroy pthread_attr_destroy
+# define __pthread_attr_init pthread_attr_init
+# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
+# define __pthread_cond_signal pthread_cond_signal
+# define __pthread_cond_timedwait pthread_cond_timedwait
+# define __pthread_getschedparam pthread_getschedparam
+# define __pthread_setschedparam pthread_setschedparam
+# define __pwrite __libc_pwrite
+#endif
+
 #ifndef aio_create_helper_thread
 # define aio_create_helper_thread __aio_create_helper_thread
 
@@ -38,12 +52,12 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
   pthread_attr_t attr;
 
   /* Make sure the thread is created detached.  */
-  pthread_attr_init (&attr);
-  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+  __pthread_attr_init (&attr);
+  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
 
-  int ret = pthread_create (threadp, &attr, tf, arg);
+  int ret = __pthread_create (threadp, &attr, tf, arg);
 
-  (void) pthread_attr_destroy (&attr);
+  (void) __pthread_attr_destroy (&attr);
   return ret;
 }
 #endif
@@ -271,7 +285,7 @@ void
 __aio_init (const struct aioinit *init)
 {
   /* Get the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   /* Only allow writing new values if the table is not yet allocated.  */
   if (pool == NULL)
@@ -287,9 +301,8 @@ __aio_init (const struct aioinit *init)
     optim.aio_idle_time = init->aio_idle_time;
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 }
-weak_alias (__aio_init, aio_init)
 
 
 /* The main function of the async I/O handling.  It enqueues requests
@@ -319,11 +332,11 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
     }
 
   /* Compute priority for this request.  */
-  pthread_getschedparam (pthread_self (), &policy, &param);
+  __pthread_getschedparam (__pthread_self (), &policy, &param);
   prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
 
   /* Get the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   last = NULL;
   runp = requests;
@@ -340,7 +353,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
   newp = get_elem ();
   if (newp == NULL)
     {
-      pthread_mutex_unlock (&__aio_requests_mutex);
+      __pthread_mutex_unlock (&__aio_requests_mutex);
       __set_errno (EAGAIN);
       return NULL;
     }
@@ -454,7 +467,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
       /* If there is a thread waiting for work, then let it know that we
 	 have just given it something to do. */
       if (idle_thread_count > 0)
-	pthread_cond_signal (&__aio_new_request_notification);
+	__pthread_cond_signal (&__aio_new_request_notification);
     }
 
   if (result == 0)
@@ -469,7 +482,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
     }
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 
   return newp;
 }
@@ -478,14 +491,14 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
 static void *
 handle_fildes_io (void *arg)
 {
-  pthread_t self = pthread_self ();
+  pthread_t self = __pthread_self ();
   struct sched_param param;
   struct requestlist *runp = (struct requestlist *) arg;
   aiocb_union *aiocbp;
   int policy;
   int fildes;
 
-  pthread_getschedparam (self, &policy, &param);
+  __pthread_getschedparam (self, &policy, &param);
 
   do
     {
@@ -495,7 +508,7 @@ handle_fildes_io (void *arg)
 	 "get work off the work queue" part of this loop, which is near the
 	 end. */
       if (runp == NULL)
-	pthread_mutex_lock (&__aio_requests_mutex);
+	__pthread_mutex_lock (&__aio_requests_mutex);
       else
 	{
 	  /* Hopefully this request is marked as running.  */
@@ -511,7 +524,7 @@ handle_fildes_io (void *arg)
 	    {
 	      param.sched_priority = aiocbp->aiocb.__abs_prio;
 	      policy = aiocbp->aiocb.__policy;
-	      pthread_setschedparam (self, policy, &param);
+	      __pthread_setschedparam (self, policy, &param);
 	    }
 
 	  /* Process request pointed to by RUNP.  We must not be disturbed
@@ -527,11 +540,11 @@ handle_fildes_io (void *arg)
 						 aiocbp->aiocb64.aio_offset));
 	      else
 		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
-						    (void *)
-						    aiocbp->aiocb.aio_buf,
-						    aiocbp->aiocb.aio_nbytes,
-						    aiocbp->aiocb.aio_offset));
+		  TEMP_FAILURE_RETRY (__pread (fildes,
+					       (void *)
+					       aiocbp->aiocb.aio_buf,
+					       aiocbp->aiocb.aio_nbytes,
+					       aiocbp->aiocb.aio_offset));
 
 	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
 		/* The Linux kernel is different from others.  It returns
@@ -554,10 +567,10 @@ handle_fildes_io (void *arg)
 						  aiocbp->aiocb64.aio_offset));
 	      else
 		aiocbp->aiocb.__return_value =
-		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
-					      aiocbp->aiocb.aio_buf,
-					      aiocbp->aiocb.aio_nbytes,
-					      aiocbp->aiocb.aio_offset));
+		  TEMP_FAILURE_RETRY (__pwrite (fildes, (const void *)
+						aiocbp->aiocb.aio_buf,
+						aiocbp->aiocb.aio_nbytes,
+						aiocbp->aiocb.aio_offset));
 
 	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
 		/* The Linux kernel is different from others.  It returns
@@ -583,7 +596,7 @@ handle_fildes_io (void *arg)
 	    }
 
 	  /* Get the mutex.  */
-	  pthread_mutex_lock (&__aio_requests_mutex);
+	  __pthread_mutex_lock (&__aio_requests_mutex);
 
 	  if (aiocbp->aiocb.__return_value == -1)
 	    aiocbp->aiocb.__error_code = errno;
@@ -626,9 +639,9 @@ handle_fildes_io (void *arg)
 	      wakeup_time.tv_nsec -= 1000000000;
 	      ++wakeup_time.tv_sec;
 	    }
-	  pthread_cond_timedwait (&__aio_new_request_notification,
-				  &__aio_requests_mutex,
-				  &wakeup_time);
+	  __pthread_cond_timedwait (&__aio_new_request_notification,
+				    &__aio_requests_mutex,
+				    &wakeup_time);
 	  --idle_thread_count;
 	  runp = runlist;
 	}
@@ -651,20 +664,21 @@ handle_fildes_io (void *arg)
 		 up for these other work elements; otherwise, we should try
 		 to create a new thread. */
 	      if (idle_thread_count > 0)
-		pthread_cond_signal (&__aio_new_request_notification);
+		__pthread_cond_signal (&__aio_new_request_notification);
 	      else if (nthreads < optim.aio_threads)
 		{
 		  pthread_t thid;
 		  pthread_attr_t attr;
 
 		  /* Make sure the thread is created detached.  */
-		  pthread_attr_init (&attr);
-		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+		  __pthread_attr_init (&attr);
+		  __pthread_attr_setdetachstate (&attr,
+						 PTHREAD_CREATE_DETACHED);
 
 		  /* Now try to start a thread. If we fail, no big deal,
 		     because we know that there is at least one thread (us)
 		     that is working on AIO operations. */
-		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
+		  if (__pthread_create (&thid, &attr, handle_fildes_io, NULL)
 		      == 0)
 		    ++nthreads;
 		}
@@ -672,7 +686,7 @@ handle_fildes_io (void *arg)
 	}
 
       /* Release the mutex.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
+      __pthread_mutex_unlock (&__aio_requests_mutex);
     }
   while (runp != NULL);
 
@@ -719,3 +733,26 @@ add_request_to_runlist (struct requestlist *newrequest)
       runp->next_run = newrequest;
     }
 }
+
+#if PTHREAD_IN_LIBC
+libc_hidden_data_def (__aio_requests_mutex)
+libc_hidden_def (__aio_enqueue_request)
+libc_hidden_def (__aio_find_req)
+libc_hidden_def (__aio_find_req_fd)
+libc_hidden_def (__aio_free_request)
+libc_hidden_def (__aio_remove_request)
+
+versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
+# endif
+
+#else /* !PTHREAD_IN_LIBC */
+librt_hidden_data_def (__aio_requests_mutex)
+librt_hidden_def (__aio_enqueue_request)
+librt_hidden_def (__aio_find_req)
+librt_hidden_def (__aio_find_req_fd)
+librt_hidden_def (__aio_free_request)
+librt_hidden_def (__aio_remove_request)
+weak_alias (__aio_init, aio_init)
+#endif /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_notify.c b/rt/aio_notify.c
index a8d61503d8..432000e34b 100644
--- a/rt/aio_notify.c
+++ b/rt/aio_notify.c
@@ -18,12 +18,17 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
-#include <pthread.h>
+#include <pthreadP.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <aio_misc.h>
 #include <signal.h>
 
+#if !PTHREAD_IN_LIBC
+# define __pthread_attr_init pthread_attr_init
+# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
+#endif
+
 #ifndef aio_start_notify_thread
 # define aio_start_notify_thread() do { } while (0)
 #endif
@@ -62,8 +67,8 @@ __aio_notify_only (struct sigevent *sigev)
       pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
       if (pattr == NULL)
 	{
-	  pthread_attr_init (&attr);
-	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+	  __pthread_attr_init (&attr);
+	  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
 	  pattr = &attr;
 	}
 
@@ -81,7 +86,7 @@ __aio_notify_only (struct sigevent *sigev)
 	{
 	  nf->func = sigev->sigev_notify_function;
 	  nf->value = sigev->sigev_value;
-	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
+	  if (__pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
 	    {
 	      free (nf);
 	      result = -1;
@@ -155,3 +160,11 @@ __aio_notify (struct requestlist *req)
       waitlist = next;
     }
 }
+
+#if PTHREAD_IN_LIBC
+libc_hidden_def (__aio_notify)
+libc_hidden_def (__aio_notify_only)
+#else
+librt_hidden_def (__aio_notify)
+librt_hidden_def (__aio_notify_only)
+#endif
diff --git a/rt/aio_sigqueue.c b/rt/aio_sigqueue.c
index 2f7da00ad3..0ad95ae04c 100644
--- a/rt/aio_sigqueue.c
+++ b/rt/aio_sigqueue.c
@@ -28,5 +28,5 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
   __set_errno (ENOSYS);
   return -1;
 }
-
+librt_hidden_def (__aio_sigqueue)
 stub_warning (__aio_sigqueue)
diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
index e23524cffe..d9bff36e50 100644
--- a/sysdeps/generic/aio_misc.h
+++ b/sysdeps/generic/aio_misc.h
@@ -87,36 +87,55 @@ struct requestlist
 
 
 /* Lock for global I/O list of requests.  */
-extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
+extern pthread_mutex_t __aio_requests_mutex;
 
 
 /* Enqueue request.  */
 extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
-						  int operation)
-  attribute_hidden;
+						  int operation);
 
 /* Find request entry for given AIO control block.  */
-extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
+extern struct requestlist *__aio_find_req (aiocb_union *elem);
 
 /* Find request entry for given file descriptor.  */
-extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
+extern struct requestlist *__aio_find_req_fd (int fildes);
 
 /* Remove request from the list.  */
 extern void __aio_remove_request (struct requestlist *last,
-				  struct requestlist *req, int all)
-     attribute_hidden;
+				  struct requestlist *req, int all);
 
 /* Release the entry for the request.  */
-extern void __aio_free_request (struct requestlist *req) attribute_hidden;
+extern void __aio_free_request (struct requestlist *req);
 
 /* Notify initiator of request and tell this everybody listening.  */
-extern void __aio_notify (struct requestlist *req) attribute_hidden;
+extern void __aio_notify (struct requestlist *req);
 
 /* Notify initiator of request.  */
-extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
+extern int __aio_notify_only (struct sigevent *sigev);
 
 /* Send the signal.  */
-extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
-     attribute_hidden;
+extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
+
+#if PTHREAD_IN_LIBC
+libc_hidden_proto (__aio_enqueue_request)
+libc_hidden_proto (__aio_find_req)
+libc_hidden_proto (__aio_find_req_fd)
+libc_hidden_proto (__aio_free_request)
+libc_hidden_proto (__aio_notify)
+libc_hidden_proto (__aio_notify_only)
+libc_hidden_proto (__aio_remove_request)
+libc_hidden_proto (__aio_requests_mutex)
+libc_hidden_proto (__aio_sigqueue)
+#else
+librt_hidden_proto (__aio_enqueue_request)
+librt_hidden_proto (__aio_find_req)
+librt_hidden_proto (__aio_find_req_fd)
+librt_hidden_proto (__aio_free_request)
+librt_hidden_proto (__aio_notify)
+librt_hidden_proto (__aio_notify_only)
+librt_hidden_proto (__aio_remove_request)
+librt_hidden_proto (__aio_requests_mutex)
+librt_hidden_proto (__aio_sigqueue)
+#endif
 
 #endif /* aio_misc.h */
diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
index a5c439fab5..d85f9c2fef 100644
--- a/sysdeps/nptl/aio_misc.h
+++ b/sysdeps/nptl/aio_misc.h
@@ -39,7 +39,7 @@
 									      \
     if (oldval != 0)							      \
       {									      \
-	pthread_mutex_unlock (&__aio_requests_mutex);			      \
+	__pthread_mutex_unlock (&__aio_requests_mutex);			      \
 									      \
 	int status;							      \
 	do								      \
@@ -67,7 +67,7 @@
 	else								      \
 	  assert (status == 0 || status == EAGAIN);			      \
 									      \
-	pthread_mutex_lock (&__aio_requests_mutex);			      \
+	__pthread_mutex_lock (&__aio_requests_mutex);			      \
       }									      \
   } while (0)
 
diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
index ca96ff073b..374657a2fd 100644
--- a/sysdeps/nptl/pthreadP.h
+++ b/sysdeps/nptl/pthreadP.h
@@ -337,6 +337,7 @@ libc_hidden_proto (__pthread_get_minstack)
 /* Namespace save aliases.  */
 extern int __pthread_getschedparam (pthread_t thread_id, int *policy,
 				    struct sched_param *param);
+libc_hidden_proto (__pthread_getschedparam)
 extern int __pthread_setschedparam (pthread_t thread_id, int policy,
 				    const struct sched_param *param);
 extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 42e240e284..1bc4ffccce 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -589,6 +589,7 @@ GLIBC_2.17 addseverity F
 GLIBC_2.17 adjtime F
 GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
+GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2348,6 +2349,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index c41e0e675b..66dc3e4457 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
-GLIBC_2.17 aio_init F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
diff --git a/sysdeps/unix/sysv/linux/aio_misc.h b/sysdeps/unix/sysv/linux/aio_misc.h
index a661cee203..79907544dc 100644
--- a/sysdeps/unix/sysv/linux/aio_misc.h
+++ b/sysdeps/unix/sysv/linux/aio_misc.h
@@ -42,11 +42,11 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
   pthread_attr_t attr;
 
   /* Make sure the thread is created detached.  */
-  pthread_attr_init (&attr);
-  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+  __pthread_attr_init (&attr);
+  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
 
   /* The helper thread needs only very little resources.  */
-  (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
+  (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
 
   /* Block all signals in the helper thread.  To do this thoroughly we
      temporarily have to block all signals here.  */
@@ -56,13 +56,13 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
   INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, &oss,
 			 __NSIG_BYTES);
 
-  int ret = pthread_create (threadp, &attr, tf, arg);
+  int ret = __pthread_create (threadp, &attr, tf, arg);
 
   /* Restore the signal mask.  */
   INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &oss, NULL,
 			 __NSIG_BYTES);
 
-  (void) pthread_attr_destroy (&attr);
+  (void) __pthread_attr_destroy (&attr);
   return ret;
 }
 #endif
diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
index 398d7a2f1f..bd0da6e763 100644
--- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
+++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
@@ -39,8 +39,9 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
   info.si_signo = sig;
   info.si_code = SI_ASYNCIO;
   info.si_pid = caller_pid;
-  info.si_uid = getuid ();
+  info.si_uid = __getuid ();
   info.si_value = val;
 
   return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
 }
+libc_hidden_def (__aio_sigqueue)
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index fad54555dc..5f3bebef8c 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1502,6 +1502,7 @@ GLIBC_2.1 _sys_siglist D 0x200
 GLIBC_2.1 addseverity F
 GLIBC_2.1 adjtime F
 GLIBC_2.1 adjtimex F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2441,6 +2442,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index c4985067f7..94f5ca8b6f 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 907716ec39..24d3a3673c 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -550,6 +550,7 @@ GLIBC_2.32 addmntent F
 GLIBC_2.32 addseverity F
 GLIBC_2.32 adjtime F
 GLIBC_2.32 adjtimex F
+GLIBC_2.32 aio_init F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
 GLIBC_2.32 alphasort F
@@ -2107,6 +2108,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 7ee0b6d324..e53772e428 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.32 aio_error F
 GLIBC_2.32 aio_error64 F
 GLIBC_2.32 aio_fsync F
 GLIBC_2.32 aio_fsync64 F
-GLIBC_2.32 aio_init F
 GLIBC_2.32 aio_read F
 GLIBC_2.32 aio_read64 F
 GLIBC_2.32 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 50f987a429..582aa645c0 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -278,6 +278,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -981,6 +982,7 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 278da67f77..3aa50aa219 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
-GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index bf9038af84..400eae9ab0 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -275,6 +275,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -978,6 +979,7 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 278da67f77..3aa50aa219 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
-GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index afb91f6f43..4cd189d5db 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -564,6 +564,7 @@ GLIBC_2.29 addmntent F
 GLIBC_2.29 addseverity F
 GLIBC_2.29 adjtime F
 GLIBC_2.29 adjtimex F
+GLIBC_2.29 aio_init F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
 GLIBC_2.29 alphasort F
@@ -2367,6 +2368,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 60400954a3..640230cfc0 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.29 aio_error F
 GLIBC_2.29 aio_error64 F
 GLIBC_2.29 aio_fsync F
 GLIBC_2.29 aio_fsync64 F
-GLIBC_2.29 aio_init F
 GLIBC_2.29 aio_read F
 GLIBC_2.29 aio_read64 F
 GLIBC_2.29 aio_return F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 125f8a269a..ede6bee0cd 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -3,6 +3,7 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2321,6 +2322,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 517753bdd1..17063aaaf9 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1475,6 +1475,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2505,6 +2506,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 23d0928360..4991b80dd1 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -3,6 +3,7 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2281,6 +2282,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index fa7f54dd55..2c97c02f21 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index dd5fb50b18..c1d7edf1f9 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -279,6 +279,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -969,6 +970,7 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 278da67f77..3aa50aa219 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
-GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index cb1d553361..725280a9db 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1473,6 +1473,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2448,6 +2449,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6a20a6fdf2..fe9a9c2f09 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -591,6 +591,7 @@ GLIBC_2.18 addseverity F
 GLIBC_2.18 adjtime F
 GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
+GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2418,6 +2419,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index a14deaabdb..679050b4b7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
-GLIBC_2.18 aio_init F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 4c21cbb64d..8db8d27e29 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -591,6 +591,7 @@ GLIBC_2.18 addseverity F
 GLIBC_2.18 adjtime F
 GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
+GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2415,6 +2416,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index a14deaabdb..679050b4b7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
-GLIBC_2.18 aio_init F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f83ba2f780..b6cd21ace7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1651,6 +1651,7 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2413,6 +2414,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 2c212d29d0..617d124234 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
-GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 347bbddb94..65d0dcbe04 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1649,6 +1649,7 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2411,6 +2412,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 26b7ab529b..a2b2e09a63 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1650,6 +1650,7 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2419,6 +2420,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 2c212d29d0..617d124234 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
-GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index e667b0e553..78b96a7119 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1646,6 +1646,7 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x200
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2337,6 +2338,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 2c7d661e56..40749a395c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
-GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 89a1cc7da6..98943b6041 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -633,6 +633,7 @@ GLIBC_2.21 addseverity F
 GLIBC_2.21 adjtime F
 GLIBC_2.21 adjtimex F
 GLIBC_2.21 advance F
+GLIBC_2.21 aio_init F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
 GLIBC_2.21 alphasort F
@@ -2457,6 +2458,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index f600881b44..de354a6bb8 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.21 aio_error F
 GLIBC_2.21 aio_error64 F
 GLIBC_2.21 aio_fsync F
 GLIBC_2.21 aio_fsync64 F
-GLIBC_2.21 aio_init F
 GLIBC_2.21 aio_read F
 GLIBC_2.21 aio_read64 F
 GLIBC_2.21 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index f364c5219e..f5d5c03eb3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1480,6 +1480,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2475,6 +2476,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index f5bcc78afe..6e99869e4c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1480,6 +1480,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2508,6 +2509,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 6032716053..205768e241 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -633,6 +633,7 @@ GLIBC_2.3 addseverity F
 GLIBC_2.3 adjtime F
 GLIBC_2.3 adjtimex F
 GLIBC_2.3 advance F
+GLIBC_2.3 aio_init F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
 GLIBC_2.3 alphasort64 F
@@ -2245,6 +2246,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index b3c7afb461..3607639c50 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.3 aio_error F
 GLIBC_2.3 aio_error64 F
 GLIBC_2.3 aio_fsync F
 GLIBC_2.3 aio_fsync64 F
-GLIBC_2.3 aio_init F
 GLIBC_2.3 aio_read F
 GLIBC_2.3 aio_read64 F
 GLIBC_2.3 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 8c5494e1dc..fccca7ccc6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -677,6 +677,7 @@ GLIBC_2.17 addseverity F
 GLIBC_2.17 adjtime F
 GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
+GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2544,6 +2545,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index c41e0e675b..66dc3e4457 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
-GLIBC_2.17 aio_init F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index d7db279c1e..1de14d1195 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -544,6 +544,7 @@ GLIBC_2.33 addmntent F
 GLIBC_2.33 addseverity F
 GLIBC_2.33 adjtime F
 GLIBC_2.33 adjtimex F
+GLIBC_2.33 aio_init F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
 GLIBC_2.33 alphasort F
@@ -2109,6 +2110,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index c03b8a741e..c588e04ae0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.33 aio_error F
 GLIBC_2.33 aio_error64 F
 GLIBC_2.33 aio_fsync F
 GLIBC_2.33 aio_fsync64 F
-GLIBC_2.33 aio_init F
 GLIBC_2.33 aio_read F
 GLIBC_2.33 aio_read64 F
 GLIBC_2.33 aio_return F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index ef03dc0f9e..fd243b77de 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -570,6 +570,7 @@ GLIBC_2.27 addmntent F
 GLIBC_2.27 addseverity F
 GLIBC_2.27 adjtime F
 GLIBC_2.27 adjtimex F
+GLIBC_2.27 aio_init F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
 GLIBC_2.27 alphasort F
@@ -2309,6 +2310,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 3cc7884927..4be13a5327 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.27 aio_error F
 GLIBC_2.27 aio_error64 F
 GLIBC_2.27 aio_fsync F
 GLIBC_2.27 aio_fsync64 F
-GLIBC_2.27 aio_init F
 GLIBC_2.27 aio_read F
 GLIBC_2.27 aio_read64 F
 GLIBC_2.27 aio_return F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 9118cb68ec..5a9ccc644b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1472,6 +1472,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2473,6 +2474,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 66c01bd7e7..4b336dcbae 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -570,6 +570,7 @@ GLIBC_2.2 addseverity F
 GLIBC_2.2 adjtime F
 GLIBC_2.2 adjtimex F
 GLIBC_2.2 advance F
+GLIBC_2.2 aio_init F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
 GLIBC_2.2 alphasort64 F
@@ -2282,6 +2283,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 80735b140b..97673a21d4 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
-GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index c40eb412c2..702fc7cd1c 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2328,6 +2329,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 1412d33835..cca5fe2265 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2325,6 +2326,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 6ac4f0597e..0114c42067 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 7b55d34753..937efaaba4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1474,6 +1474,7 @@ GLIBC_2.1 _sys_errlist D 0x1fc
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2466,6 +2467,7 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 100bd4fb76..e4e4569d81 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index cfd5f38864..47f96b1480 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2302,6 +2303,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index c4985067f7..94f5ca8b6f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
-GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 17be05f14f..4ff62311e9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -559,6 +559,7 @@ GLIBC_2.2.5 addseverity F
 GLIBC_2.2.5 adjtime F
 GLIBC_2.2.5 adjtimex F
 GLIBC_2.2.5 advance F
+GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
 GLIBC_2.2.5 alphasort64 F
@@ -2260,6 +2261,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index a3da4f8e6e..bac8c74b5f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.2.5 aio_error F
 GLIBC_2.2.5 aio_error64 F
 GLIBC_2.2.5 aio_fsync F
 GLIBC_2.2.5 aio_fsync64 F
-GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 aio_read F
 GLIBC_2.2.5 aio_read64 F
 GLIBC_2.2.5 aio_return F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index a9db18906b..e34873201d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -592,6 +592,7 @@ GLIBC_2.16 addseverity F
 GLIBC_2.16 adjtime F
 GLIBC_2.16 adjtimex F
 GLIBC_2.16 advance F
+GLIBC_2.16 aio_init F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
 GLIBC_2.16 alphasort F
@@ -2363,6 +2364,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index a0069d137b..2e432fe7d6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.16 aio_error F
 GLIBC_2.16 aio_error64 F
 GLIBC_2.16 aio_fsync F
 GLIBC_2.16 aio_fsync64 F
-GLIBC_2.16 aio_init F
 GLIBC_2.16 aio_read F
 GLIBC_2.16 aio_read64 F
 GLIBC_2.16 aio_return F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (9 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 10/34] Linux: Move aio_init from librt into libc Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-23 17:26   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 12/34] Linux: Move aio_error, aio_error64 " Florian Weimer
                   ` (23 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.

A version placeholder symbol is needed on alpha and sparc because
of the additional symbols formerly at version GLIBC_2.3.
---
 rt/Makefile                                   |  5 +++-
 rt/Versions                                   |  6 ++++
 rt/aio_cancel.c                               | 28 ++++++++++++------
 rt/librt-compat.c                             | 29 +++++++++++++++++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 +++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/alpha/Versions        | 13 +++++++--
 sysdeps/unix/sysv/linux/alpha/aio_cancel.c    | 22 +++++++-------
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++++
 sysdeps/unix/sysv/linux/alpha/librt-compat.c  | 24 +++++++++++++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  5 +---
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 +++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 +++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 --
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 +++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 +++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
 .../sysv/linux/microblaze/be/libc.abilist     |  4 +++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 --
 .../sysv/linux/microblaze/le/libc.abilist     |  4 +++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 +++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 +++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 +++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 --
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 +++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 +++
 .../linux/powerpc/powerpc32/librt.abilist     |  2 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 +++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 +++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 --
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 +++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 +++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 +++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 +++
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 +++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/sparc/Versions        | 11 ++++---
 sysdeps/unix/sysv/linux/sparc/aio_cancel.c    | 22 +++++++-------
 sysdeps/unix/sysv/linux/sparc/librt-compat.c  | 24 +++++++++++++++
 .../sysv/linux/sparc/sparc32/libc.abilist     |  6 ++++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  5 +---
 .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  5 +---
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 +++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 +++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
 72 files changed, 284 insertions(+), 103 deletions(-)
 create mode 100644 rt/librt-compat.c
 create mode 100644 sysdeps/unix/sysv/linux/alpha/librt-compat.c
 create mode 100644 sysdeps/unix/sysv/linux/sparc/librt-compat.c

diff --git a/rt/Makefile b/rt/Makefile
index ada87c845e..5534b4c9b3 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,7 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_cancel \
   aio_error \
   aio_fsync \
   aio_read \
@@ -38,6 +37,7 @@ librt-routines = \
   aio_suspend \
   aio_write \
   aio_write64 \
+  librt-compat \
   lio_listio \
   lio_listio64 \
   mq_close \
@@ -56,7 +56,10 @@ librt-routines = \
   timer_gettime \
   timer_settime \
 
+librt-shared-only-routines = librt-compat
+
 $(librt-routines-var) += \
+  aio_cancel \
   aio_misc \
   aio_notify \
   aio_sigqueue \
diff --git a/rt/Versions b/rt/Versions
index 2e991a9d93..402a1188e7 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -2,6 +2,8 @@ libc {
   GLIBC_2.1 {
 %if PTHREAD_IN_LIBC
     aio_init;
+    aio_cancel;
+    aio_cancel64;
 %endif
   }
   GLIBC_2.2 {
@@ -10,6 +12,8 @@ libc {
   }
   GLIBC_2.34 {
 %if PTHREAD_IN_LIBC
+    aio_cancel;
+    aio_cancel64;
     aio_init;
 %endif
     shm_open;
@@ -31,8 +35,10 @@ libc {
 }
 librt {
   GLIBC_2.1 {
+%if !PTHREAD_IN_LIBC
     aio_cancel;
     aio_cancel64;
+%endif
     aio_error;
     aio_error64;
     aio_fsync;
diff --git a/rt/aio_cancel.c b/rt/aio_cancel.c
index 63fd88f36c..5934205199 100644
--- a/rt/aio_cancel.c
+++ b/rt/aio_cancel.c
@@ -35,23 +35,24 @@
 #include <fcntl.h>
 
 #include <aio_misc.h>
+#include <pthreadP.h>
 
 
 int
-aio_cancel (int fildes, struct aiocb *aiocbp)
+__aio_cancel (int fildes, struct aiocb *aiocbp)
 {
   struct requestlist *req = NULL;
   int result = AIO_ALLDONE;
 
   /* If fildes is invalid, error. */
-  if (fcntl (fildes, F_GETFL) < 0)
+  if (__fcntl (fildes, F_GETFL) < 0)
     {
       __set_errno (EBADF);
       return -1;
     }
 
   /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   /* We are asked to cancel a specific AIO request.  */
   if (aiocbp != NULL)
@@ -60,7 +61,7 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
 	 to look for the request block.  */
       if (aiocbp->aio_fildes != fildes)
 	{
-	  pthread_mutex_unlock (&__aio_requests_mutex);
+	  __pthread_mutex_unlock (&__aio_requests_mutex);
 	  __set_errno (EINVAL);
 	  return -1;
 	}
@@ -73,7 +74,7 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
 	  if (req == NULL)
 	    {
 	    not_found:
-	      pthread_mutex_unlock (&__aio_requests_mutex);
+	      __pthread_mutex_unlock (&__aio_requests_mutex);
 	      __set_errno (EINVAL);
 	      return -1;
 	    }
@@ -147,11 +148,20 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
     }
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 
   return result;
 }
-
-#ifndef aio_cancel
-weak_alias (aio_cancel, aio_cancel64)
+#if PTHREAD_IN_LIBC
+# ifndef __aio_cancel
+versioned_symbol (libc, __aio_cancel, aio_cancel, GLIBC_2_34);
+versioned_symbol (libc, __aio_cancel, aio_cancel64, GLIBC_2_34);
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_cancel, aio_cancel, GLIBC_2_1);
+compat_symbol (librt, __aio_cancel, aio_cancel64, GLIBC_2_1);
+#  endif
+# endif /* __aio_cancel */
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_cancel, aio_cancel)
+weak_alias (__aio_cancel, aio_cancel64)
 #endif
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
new file mode 100644
index 0000000000..7e5f1db940
--- /dev/null
+++ b/rt/librt-compat.c
@@ -0,0 +1,29 @@
+/* Placeholder definitions to pull in removed symbol versions.
+   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/>.  */
+
+#if PTHREAD_IN_LIBC
+# include <shlib-compat.h>
+# include <sys/cdefs.h>
+
+void
+attribute_compat_text_section
+__attribute_used__
+__librt_version_placeholder_1 (void)
+{
+}
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 1bc4ffccce..b0ead487fe 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -589,6 +589,8 @@ GLIBC_2.17 addseverity F
 GLIBC_2.17 adjtime F
 GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
+GLIBC_2.17 aio_cancel F
+GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2349,6 +2351,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 66dc3e4457..0f3a79e3a4 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_cancel F
-GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index b113cb60e4..db6116a890 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -62,7 +62,12 @@ libc {
     wordexp;
   }
   GLIBC_2.3 {
-    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
+    _sys_errlist;
+    _sys_nerr;
+    aio_cancel64;
+    aio_cancel;
+    sys_errlist;
+    sys_nerr;
   }
   GLIBC_2.3.3 {
     # Changed PTHREAD_STACK_MIN.
@@ -81,6 +86,9 @@ libc {
   GLIBC_2.27 {
     getrlimit; setrlimit; getrlimit64; setrlimit64;
   }
+  GLIBC_2.34 {
+    aio_cancel64;
+  }
   GLIBC_PRIVATE {
     __libc_alpha_cache_shape;
   }
@@ -92,8 +100,7 @@ ld {
 }
 librt {
   GLIBC_2.3 {
-    # AIO functions.
-    aio_cancel; aio_cancel64;
+    __librt_version_placeholder;
   }
   GLIBC_2.3.3 {
     # Changed timer_t.
diff --git a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
index 9f69b080ed..6e4352a9a4 100644
--- a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
+++ b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
@@ -8,26 +8,28 @@
 extern __typeof (aio_cancel) __new_aio_cancel;
 extern __typeof (aio_cancel) __old_aio_cancel;
 
-#define aio_cancel	__new_aio_cancel
+#define __aio_cancel	__new_aio_cancel
 
 #include <rt/aio_cancel.c>
 
-#undef aio_cancel
-strong_alias (__new_aio_cancel, __new_aio_cancel64);
-versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
-versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
+#undef __aio_cancel
+versioned_symbol (libc, __new_aio_cancel, aio_cancel, GLIBC_2_34);
+versioned_symbol (libc, __new_aio_cancel, aio_cancel64, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
+compat_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
+compat_symbol (librt, __new_aio_cancel, aio_cancel64, GLIBC_2_3);
+#endif
 
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
 
 #undef ECANCELED
-#define aio_cancel	__old_aio_cancel
+#define __aio_cancel	__old_aio_cancel
 #define ECANCELED	125
 
 #include <rt/aio_cancel.c>
 
-#undef aio_cancel
-strong_alias (__old_aio_cancel, __old_aio_cancel64);
+#undef __aio_cancel
 compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
-compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
+compat_symbol (librt, __old_aio_cancel, aio_cancel64, GLIBC_2_1);
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 5f3bebef8c..0d621c3185 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1502,6 +1502,8 @@ GLIBC_2.1 _sys_siglist D 0x200
 GLIBC_2.1 addseverity F
 GLIBC_2.1 adjtime F
 GLIBC_2.1 adjtimex F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2202,6 +2204,8 @@ GLIBC_2.3 __uselocale F
 GLIBC_2.3 __wcsftime_l F
 GLIBC_2.3 _sys_errlist D 0x420
 GLIBC_2.3 _sys_nerr D 0x4
+GLIBC_2.3 aio_cancel F
+GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 duplocale F
 GLIBC_2.3 fgetxattr F
 GLIBC_2.3 flistxattr F
@@ -2442,6 +2446,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt-compat.c b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
new file mode 100644
index 0000000000..96e92e1637
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
@@ -0,0 +1,24 @@
+/* Placeholder definitions to pull in removed symbol versions.  alpha 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>
+
+#if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_3);
+#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 94f5ca8b6f..c7e49f9a98 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
@@ -19,8 +17,7 @@ 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.3 aio_cancel F
-GLIBC_2.3 aio_cancel64 F
+GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 24d3a3673c..ce4d40c70f 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -550,6 +550,8 @@ GLIBC_2.32 addmntent F
 GLIBC_2.32 addseverity F
 GLIBC_2.32 adjtime F
 GLIBC_2.32 adjtimex F
+GLIBC_2.32 aio_cancel F
+GLIBC_2.32 aio_cancel64 F
 GLIBC_2.32 aio_init F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
@@ -2108,6 +2110,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index e53772e428..ca2aac8d45 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_cancel F
-GLIBC_2.32 aio_cancel64 F
 GLIBC_2.32 aio_error F
 GLIBC_2.32 aio_error64 F
 GLIBC_2.32 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 582aa645c0..85526095ec 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -278,6 +278,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -982,6 +984,8 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_cancel F
+GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3aa50aa219..f13a5f43f2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_cancel F
-GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 400eae9ab0..d721446d49 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -275,6 +275,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -979,6 +981,8 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_cancel F
+GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3aa50aa219..f13a5f43f2 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_cancel F
-GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 4cd189d5db..912b71d360 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -564,6 +564,8 @@ GLIBC_2.29 addmntent F
 GLIBC_2.29 addseverity F
 GLIBC_2.29 adjtime F
 GLIBC_2.29 adjtimex F
+GLIBC_2.29 aio_cancel F
+GLIBC_2.29 aio_cancel64 F
 GLIBC_2.29 aio_init F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
@@ -2368,6 +2370,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 640230cfc0..3834cf1838 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_cancel F
-GLIBC_2.29 aio_cancel64 F
 GLIBC_2.29 aio_error F
 GLIBC_2.29 aio_error64 F
 GLIBC_2.29 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index ede6bee0cd..b1392524cd 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -3,6 +3,8 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2322,6 +2324,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 17063aaaf9..89c0531bff 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1475,6 +1475,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2506,6 +2508,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 4991b80dd1..69454c38aa 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -3,6 +3,8 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2282,6 +2284,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 2c97c02f21..cfe45b0383 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index c1d7edf1f9..aab8d3a3dc 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -279,6 +279,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -970,6 +972,8 @@ GLIBC_2.4 addseverity F
 GLIBC_2.4 adjtime F
 GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
+GLIBC_2.4 aio_cancel F
+GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3aa50aa219..f13a5f43f2 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_cancel F
-GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 725280a9db..8308c4e15b 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1473,6 +1473,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2449,6 +2451,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index fe9a9c2f09..ed3bbb44ac 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -591,6 +591,8 @@ GLIBC_2.18 addseverity F
 GLIBC_2.18 adjtime F
 GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
+GLIBC_2.18 aio_cancel F
+GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2419,6 +2421,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 679050b4b7..276c6eab44 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_cancel F
-GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 8db8d27e29..909b471383 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -591,6 +591,8 @@ GLIBC_2.18 addseverity F
 GLIBC_2.18 adjtime F
 GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
+GLIBC_2.18 aio_cancel F
+GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2416,6 +2418,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 679050b4b7..276c6eab44 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_cancel F
-GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index b6cd21ace7..c5569a40ad 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1651,6 +1651,8 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_cancel F
+GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2414,6 +2416,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 617d124234..d8544013dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_cancel F
-GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 65d0dcbe04..56163ef271 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1649,6 +1649,8 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_cancel F
+GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2412,6 +2414,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index a2b2e09a63..da4a1dc99e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1650,6 +1650,8 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x100
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_cancel F
+GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2420,6 +2422,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 617d124234..d8544013dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_cancel F
-GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 78b96a7119..1843d27812 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1646,6 +1646,8 @@ GLIBC_2.2 _sys_nerr D 0x4
 GLIBC_2.2 _sys_siglist D 0x200
 GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
+GLIBC_2.2 aio_cancel F
+GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2338,6 +2340,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 40749a395c..c9e82563c1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_cancel F
-GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 98943b6041..c0f6dcf1e3 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -633,6 +633,8 @@ GLIBC_2.21 addseverity F
 GLIBC_2.21 adjtime F
 GLIBC_2.21 adjtimex F
 GLIBC_2.21 advance F
+GLIBC_2.21 aio_cancel F
+GLIBC_2.21 aio_cancel64 F
 GLIBC_2.21 aio_init F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
@@ -2458,6 +2460,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index de354a6bb8..1edad5b4cb 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_cancel F
-GLIBC_2.21 aio_cancel64 F
 GLIBC_2.21 aio_error F
 GLIBC_2.21 aio_error64 F
 GLIBC_2.21 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index f5d5c03eb3..130ab63a59 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1480,6 +1480,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2476,6 +2478,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 6e99869e4c..1b83ce1f6e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1480,6 +1480,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2509,6 +2511,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 205768e241..a24bd98fbe 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -633,6 +633,8 @@ GLIBC_2.3 addseverity F
 GLIBC_2.3 adjtime F
 GLIBC_2.3 adjtimex F
 GLIBC_2.3 advance F
+GLIBC_2.3 aio_cancel F
+GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 aio_init F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
@@ -2246,6 +2248,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 3607639c50..1943e645ed 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_cancel F
-GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 aio_error F
 GLIBC_2.3 aio_error64 F
 GLIBC_2.3 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index fccca7ccc6..bd0b3dd94f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -677,6 +677,8 @@ GLIBC_2.17 addseverity F
 GLIBC_2.17 adjtime F
 GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
+GLIBC_2.17 aio_cancel F
+GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2545,6 +2547,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 66dc3e4457..0f3a79e3a4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_cancel F
-GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 1de14d1195..b1d1dac1b6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -544,6 +544,8 @@ GLIBC_2.33 addmntent F
 GLIBC_2.33 addseverity F
 GLIBC_2.33 adjtime F
 GLIBC_2.33 adjtimex F
+GLIBC_2.33 aio_cancel F
+GLIBC_2.33 aio_cancel64 F
 GLIBC_2.33 aio_init F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
@@ -2110,6 +2112,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index c588e04ae0..3a0bb5db43 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_cancel F
-GLIBC_2.33 aio_cancel64 F
 GLIBC_2.33 aio_error F
 GLIBC_2.33 aio_error64 F
 GLIBC_2.33 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index fd243b77de..2acb65c58c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -570,6 +570,8 @@ GLIBC_2.27 addmntent F
 GLIBC_2.27 addseverity F
 GLIBC_2.27 adjtime F
 GLIBC_2.27 adjtimex F
+GLIBC_2.27 aio_cancel F
+GLIBC_2.27 aio_cancel64 F
 GLIBC_2.27 aio_init F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
@@ -2310,6 +2312,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 4be13a5327..7f78e1b461 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_cancel F
-GLIBC_2.27 aio_cancel64 F
 GLIBC_2.27 aio_error F
 GLIBC_2.27 aio_error64 F
 GLIBC_2.27 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 5a9ccc644b..36b5ff2685 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1472,6 +1472,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2474,6 +2476,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 4b336dcbae..ed2a90f013 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -570,6 +570,8 @@ GLIBC_2.2 addseverity F
 GLIBC_2.2 adjtime F
 GLIBC_2.2 adjtimex F
 GLIBC_2.2 advance F
+GLIBC_2.2 aio_cancel F
+GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
@@ -2283,6 +2285,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 97673a21d4..7948f84cec 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_cancel F
-GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 702fc7cd1c..b8eb5d98d7 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2329,6 +2331,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index cca5fe2265..5f4efe2398 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2326,6 +2328,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 0114c42067..172d23f5c9 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions
index f1027603a4..f127bdf0b8 100644
--- a/sysdeps/unix/sysv/linux/sparc/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/Versions
@@ -6,7 +6,12 @@ libc {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
   GLIBC_2.3 {
-    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
+    _sys_errlist;
+    _sys_nerr;
+    aio_cancel64;
+    aio_cancel;
+    sys_errlist;
+    sys_nerr;
   }
   GLIBC_2.3.3 {
     # Changed PTHREAD_STACK_MIN.
@@ -29,10 +34,8 @@ libc {
     __vdso_clock_gettime;
   }
 }
-
 librt {
   GLIBC_2.3 {
-    # AIO functions.
-    aio_cancel; aio_cancel64;
+    __librt_version_placeholder;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
index 9f69b080ed..6e4352a9a4 100644
--- a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
+++ b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
@@ -8,26 +8,28 @@
 extern __typeof (aio_cancel) __new_aio_cancel;
 extern __typeof (aio_cancel) __old_aio_cancel;
 
-#define aio_cancel	__new_aio_cancel
+#define __aio_cancel	__new_aio_cancel
 
 #include <rt/aio_cancel.c>
 
-#undef aio_cancel
-strong_alias (__new_aio_cancel, __new_aio_cancel64);
-versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
-versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
+#undef __aio_cancel
+versioned_symbol (libc, __new_aio_cancel, aio_cancel, GLIBC_2_34);
+versioned_symbol (libc, __new_aio_cancel, aio_cancel64, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
+compat_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
+compat_symbol (librt, __new_aio_cancel, aio_cancel64, GLIBC_2_3);
+#endif
 
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
 
 #undef ECANCELED
-#define aio_cancel	__old_aio_cancel
+#define __aio_cancel	__old_aio_cancel
 #define ECANCELED	125
 
 #include <rt/aio_cancel.c>
 
-#undef aio_cancel
-strong_alias (__old_aio_cancel, __old_aio_cancel64);
+#undef __aio_cancel
 compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
-compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
+compat_symbol (librt, __old_aio_cancel, aio_cancel64, GLIBC_2_1);
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/sparc/librt-compat.c b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
new file mode 100644
index 0000000000..a3862ba127
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
@@ -0,0 +1,24 @@
+/* Placeholder definitions to pull in removed symbol versions.  sparc 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>
+
+#if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_3);
+#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 937efaaba4..82439ec5c4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1474,6 +1474,8 @@ GLIBC_2.1 _sys_errlist D 0x1fc
 GLIBC_2.1 _sys_nerr D 0x4
 GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2165,6 +2167,8 @@ GLIBC_2.3 __uselocale F
 GLIBC_2.3 __wcsftime_l F
 GLIBC_2.3 _sys_errlist D 0x200
 GLIBC_2.3 _sys_nerr D 0x4
+GLIBC_2.3 aio_cancel F
+GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 duplocale F
 GLIBC_2.3 fgetxattr F
 GLIBC_2.3 flistxattr F
@@ -2467,6 +2471,8 @@ GLIBC_2.34 __wait3_time64 F
 GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index e4e4569d81..61cc93c180 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
@@ -19,8 +17,7 @@ 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.3 aio_cancel F
-GLIBC_2.3 aio_cancel64 F
+GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 47f96b1480..8868399fce 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.1 aio_cancel F
+GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2091,6 +2093,8 @@ GLIBC_2.3 __uselocale F
 GLIBC_2.3 __wcsftime_l F
 GLIBC_2.3 _sys_errlist D 0x400
 GLIBC_2.3 _sys_nerr D 0x4
+GLIBC_2.3 aio_cancel F
+GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 duplocale F
 GLIBC_2.3 fgetxattr F
 GLIBC_2.3 flistxattr F
@@ -2303,6 +2307,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 94f5ca8b6f..c7e49f9a98 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_cancel F
-GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
@@ -19,8 +17,7 @@ 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.3 aio_cancel F
-GLIBC_2.3 aio_cancel64 F
+GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.3 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 4ff62311e9..9ee8856769 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -559,6 +559,8 @@ GLIBC_2.2.5 addseverity F
 GLIBC_2.2.5 adjtime F
 GLIBC_2.2.5 adjtimex F
 GLIBC_2.2.5 advance F
+GLIBC_2.2.5 aio_cancel F
+GLIBC_2.2.5 aio_cancel64 F
 GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
@@ -2261,6 +2263,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index bac8c74b5f..1853412bcc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_cancel F
-GLIBC_2.2.5 aio_cancel64 F
 GLIBC_2.2.5 aio_error F
 GLIBC_2.2.5 aio_error64 F
 GLIBC_2.2.5 aio_fsync F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index e34873201d..beac8c71ba 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -592,6 +592,8 @@ GLIBC_2.16 addseverity F
 GLIBC_2.16 adjtime F
 GLIBC_2.16 adjtimex F
 GLIBC_2.16 advance F
+GLIBC_2.16 aio_cancel F
+GLIBC_2.16 aio_cancel64 F
 GLIBC_2.16 aio_init F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
@@ -2364,6 +2366,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
+GLIBC_2.34 aio_cancel F
+GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 2e432fe7d6..310b1bf338 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_cancel F
-GLIBC_2.16 aio_cancel64 F
 GLIBC_2.16 aio_error F
 GLIBC_2.16 aio_error64 F
 GLIBC_2.16 aio_fsync F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 12/34] Linux: Move aio_error, aio_error64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (10 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-23 17:43   ` Adhemerval Zanella
  2021-06-17 18:57 ` [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
                   ` (22 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  6 +++++-
 rt/aio_error.c                                | 21 ++++++++++++++-----
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 --
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 --
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 --
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
 .../linux/powerpc/powerpc32/librt.abilist     |  2 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 --
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 --
 .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 --
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
 65 files changed, 150 insertions(+), 67 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 5534b4c9b3..1b36886dd6 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,7 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_error \
   aio_fsync \
   aio_read \
   aio_read64 \
@@ -60,6 +59,7 @@ librt-shared-only-routines = librt-compat
 
 $(librt-routines-var) += \
   aio_cancel \
+  aio_error \
   aio_misc \
   aio_notify \
   aio_sigqueue \
diff --git a/rt/Versions b/rt/Versions
index 402a1188e7..aae1d3c47d 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -4,6 +4,8 @@ libc {
     aio_init;
     aio_cancel;
     aio_cancel64;
+    aio_error;
+    aio_error64;
 %endif
   }
   GLIBC_2.2 {
@@ -15,6 +17,8 @@ libc {
     aio_cancel;
     aio_cancel64;
     aio_init;
+    aio_error;
+    aio_error64;
 %endif
     shm_open;
     shm_unlink;
@@ -38,9 +42,9 @@ librt {
 %if !PTHREAD_IN_LIBC
     aio_cancel;
     aio_cancel64;
-%endif
     aio_error;
     aio_error64;
+%endif
     aio_fsync;
     aio_fsync64;
 %if !PTHREAD_IN_LIBC
diff --git a/rt/aio_error.c b/rt/aio_error.c
index ed664ae0ef..ae5a1f8cc5 100644
--- a/rt/aio_error.c
+++ b/rt/aio_error.c
@@ -29,20 +29,31 @@
 #undef aio_error64
 
 #include <aio_misc.h>
-
+#include <pthreadP.h>
+#include <shlib-compat.h>
 
 int
-aio_error (const struct aiocb *aiocbp)
+__aio_error (const struct aiocb *aiocbp)
 {
   int ret;
 
   /* Acquire the mutex to make sure all operations for this request are
      complete.  */
-  pthread_mutex_lock(&__aio_requests_mutex);
+  __pthread_mutex_lock(&__aio_requests_mutex);
   ret = aiocbp->__error_code;
-  pthread_mutex_unlock(&__aio_requests_mutex);
+  __pthread_mutex_unlock(&__aio_requests_mutex);
 
   return ret;
 }
 
-weak_alias (aio_error, aio_error64)
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_error, aio_error, GLIBC_2_34);
+versioned_symbol (libc, __aio_error, aio_error64, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_error, aio_error, GLIBC_2_1);
+compat_symbol (librt, __aio_error, aio_error64, GLIBC_2_1);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_error, aio_error)
+weak_alias (__aio_error, aio_error64)
+#endif /* !PTHREAD_IN_LIBC */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index b0ead487fe..e19168ddc5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -591,6 +591,8 @@ GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
 GLIBC_2.17 aio_cancel F
 GLIBC_2.17 aio_cancel64 F
+GLIBC_2.17 aio_error F
+GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2353,6 +2355,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 0f3a79e3a4..39e753fdde 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_error F
-GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_read F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 0d621c3185..4efbbef2dc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1504,6 +1504,8 @@ GLIBC_2.1 adjtime F
 GLIBC_2.1 adjtimex F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2448,6 +2450,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index c7e49f9a98..09ba914d65 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index ce4d40c70f..60fec8ba00 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -552,6 +552,8 @@ GLIBC_2.32 adjtime F
 GLIBC_2.32 adjtimex F
 GLIBC_2.32 aio_cancel F
 GLIBC_2.32 aio_cancel64 F
+GLIBC_2.32 aio_error F
+GLIBC_2.32 aio_error64 F
 GLIBC_2.32 aio_init F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
@@ -2112,6 +2114,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index ca2aac8d45..678bd29799 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_error F
-GLIBC_2.32 aio_error64 F
 GLIBC_2.32 aio_fsync F
 GLIBC_2.32 aio_fsync64 F
 GLIBC_2.32 aio_read F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 85526095ec..1810ff85ca 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -280,6 +280,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -986,6 +988,8 @@ GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
+GLIBC_2.4 aio_error F
+GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index f13a5f43f2..07178bcea0 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_error F
-GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index d721446d49..5f6c562a90 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -277,6 +277,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -983,6 +985,8 @@ GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
+GLIBC_2.4 aio_error F
+GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index f13a5f43f2..07178bcea0 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_error F
-GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 912b71d360..b8e78b1016 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -566,6 +566,8 @@ GLIBC_2.29 adjtime F
 GLIBC_2.29 adjtimex F
 GLIBC_2.29 aio_cancel F
 GLIBC_2.29 aio_cancel64 F
+GLIBC_2.29 aio_error F
+GLIBC_2.29 aio_error64 F
 GLIBC_2.29 aio_init F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
@@ -2372,6 +2374,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 3834cf1838..e39a91e633 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_error F
-GLIBC_2.29 aio_error64 F
 GLIBC_2.29 aio_fsync F
 GLIBC_2.29 aio_fsync64 F
 GLIBC_2.29 aio_read F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index b1392524cd..34516ba43e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -5,6 +5,8 @@ GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2326,6 +2328,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 89c0531bff..f4035eed4a 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1477,6 +1477,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2510,6 +2512,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 69454c38aa..3f6a281098 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -5,6 +5,8 @@ GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2286,6 +2288,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index cfe45b0383..68b34cf0f6 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index aab8d3a3dc..3c017951e3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -281,6 +281,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -974,6 +976,8 @@ GLIBC_2.4 adjtimex F
 GLIBC_2.4 advance F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
+GLIBC_2.4 aio_error F
+GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index f13a5f43f2..07178bcea0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_error F
-GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 8308c4e15b..6922e2ae69 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1475,6 +1475,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2453,6 +2455,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index ed3bbb44ac..315c73587e 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -593,6 +593,8 @@ GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
 GLIBC_2.18 aio_cancel F
 GLIBC_2.18 aio_cancel64 F
+GLIBC_2.18 aio_error F
+GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2423,6 +2425,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 276c6eab44..e9e0c0a91f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_error F
-GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_read F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 909b471383..ce2a4eca6d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -593,6 +593,8 @@ GLIBC_2.18 adjtimex F
 GLIBC_2.18 advance F
 GLIBC_2.18 aio_cancel F
 GLIBC_2.18 aio_cancel64 F
+GLIBC_2.18 aio_error F
+GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2420,6 +2422,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 276c6eab44..e9e0c0a91f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_error F
-GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_read F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index c5569a40ad..83ea40ad7f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1653,6 +1653,8 @@ GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
 GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
+GLIBC_2.2 aio_error F
+GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2418,6 +2420,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index d8544013dd..f84f4e8cf2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_error F
-GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 56163ef271..e3a34b81a5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1651,6 +1651,8 @@ GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
 GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
+GLIBC_2.2 aio_error F
+GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2416,6 +2418,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index da4a1dc99e..a60151e94c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1652,6 +1652,8 @@ GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
 GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
+GLIBC_2.2 aio_error F
+GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2424,6 +2426,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index d8544013dd..f84f4e8cf2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_error F
-GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 1843d27812..d9d5dfc258 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1648,6 +1648,8 @@ GLIBC_2.2 _test_and_set F
 GLIBC_2.2 addseverity F
 GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
+GLIBC_2.2 aio_error F
+GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2342,6 +2344,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index c9e82563c1..fbd1bb1039 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_error F
-GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index c0f6dcf1e3..11b8d3d035 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -635,6 +635,8 @@ GLIBC_2.21 adjtimex F
 GLIBC_2.21 advance F
 GLIBC_2.21 aio_cancel F
 GLIBC_2.21 aio_cancel64 F
+GLIBC_2.21 aio_error F
+GLIBC_2.21 aio_error64 F
 GLIBC_2.21 aio_init F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
@@ -2462,6 +2464,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 1edad5b4cb..5da84ad590 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_error F
-GLIBC_2.21 aio_error64 F
 GLIBC_2.21 aio_fsync F
 GLIBC_2.21 aio_fsync64 F
 GLIBC_2.21 aio_read F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 130ab63a59..53bfeff0c8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1482,6 +1482,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2480,6 +2482,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 1b83ce1f6e..354a8c5e1e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1482,6 +1482,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2513,6 +2515,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index a24bd98fbe..3c82273e63 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -635,6 +635,8 @@ GLIBC_2.3 adjtimex F
 GLIBC_2.3 advance F
 GLIBC_2.3 aio_cancel F
 GLIBC_2.3 aio_cancel64 F
+GLIBC_2.3 aio_error F
+GLIBC_2.3 aio_error64 F
 GLIBC_2.3 aio_init F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
@@ -2250,6 +2252,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 1943e645ed..66926097e0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_error F
-GLIBC_2.3 aio_error64 F
 GLIBC_2.3 aio_fsync F
 GLIBC_2.3 aio_fsync64 F
 GLIBC_2.3 aio_read F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index bd0b3dd94f..0d9d8ed602 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -679,6 +679,8 @@ GLIBC_2.17 adjtimex F
 GLIBC_2.17 advance F
 GLIBC_2.17 aio_cancel F
 GLIBC_2.17 aio_cancel64 F
+GLIBC_2.17 aio_error F
+GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2549,6 +2551,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 0f3a79e3a4..39e753fdde 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_error F
-GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_read F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index b1d1dac1b6..4ff01efcca 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -546,6 +546,8 @@ GLIBC_2.33 adjtime F
 GLIBC_2.33 adjtimex F
 GLIBC_2.33 aio_cancel F
 GLIBC_2.33 aio_cancel64 F
+GLIBC_2.33 aio_error F
+GLIBC_2.33 aio_error64 F
 GLIBC_2.33 aio_init F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
@@ -2114,6 +2116,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 3a0bb5db43..be604bb966 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_error F
-GLIBC_2.33 aio_error64 F
 GLIBC_2.33 aio_fsync F
 GLIBC_2.33 aio_fsync64 F
 GLIBC_2.33 aio_read F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 2acb65c58c..cdcc2fe800 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -572,6 +572,8 @@ GLIBC_2.27 adjtime F
 GLIBC_2.27 adjtimex F
 GLIBC_2.27 aio_cancel F
 GLIBC_2.27 aio_cancel64 F
+GLIBC_2.27 aio_error F
+GLIBC_2.27 aio_error64 F
 GLIBC_2.27 aio_init F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
@@ -2314,6 +2316,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 7f78e1b461..541ef4aa42 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_error F
-GLIBC_2.27 aio_error64 F
 GLIBC_2.27 aio_fsync F
 GLIBC_2.27 aio_fsync64 F
 GLIBC_2.27 aio_read F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 36b5ff2685..3372cb7340 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1474,6 +1474,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2478,6 +2480,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index ed2a90f013..a7e74a0d44 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -572,6 +572,8 @@ GLIBC_2.2 adjtimex F
 GLIBC_2.2 advance F
 GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
+GLIBC_2.2 aio_error F
+GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
@@ -2287,6 +2289,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 7948f84cec..40a823f6de 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_error F
-GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index b8eb5d98d7..c856450c1f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2333,6 +2335,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 5f4efe2398..459119e6de 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2330,6 +2332,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 172d23f5c9..07dbd9a87b 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 82439ec5c4..c78e328a0f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1476,6 +1476,8 @@ GLIBC_2.1 _sys_siglist D 0x100
 GLIBC_2.1 addseverity F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2473,6 +2475,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 61cc93c180..e6990a5c82 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 8868399fce..3b4ef5f093 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
 GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
+GLIBC_2.1 aio_error F
+GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2309,6 +2311,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index c7e49f9a98..09ba914d65 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_error F
-GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 9ee8856769..1d6e7030fc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -561,6 +561,8 @@ GLIBC_2.2.5 adjtimex F
 GLIBC_2.2.5 advance F
 GLIBC_2.2.5 aio_cancel F
 GLIBC_2.2.5 aio_cancel64 F
+GLIBC_2.2.5 aio_error F
+GLIBC_2.2.5 aio_error64 F
 GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
@@ -2265,6 +2267,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 1853412bcc..ef23d67e9d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_error F
-GLIBC_2.2.5 aio_error64 F
 GLIBC_2.2.5 aio_fsync F
 GLIBC_2.2.5 aio_fsync64 F
 GLIBC_2.2.5 aio_read F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index beac8c71ba..1480d7ada7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -594,6 +594,8 @@ GLIBC_2.16 adjtimex F
 GLIBC_2.16 advance F
 GLIBC_2.16 aio_cancel F
 GLIBC_2.16 aio_cancel64 F
+GLIBC_2.16 aio_error F
+GLIBC_2.16 aio_error64 F
 GLIBC_2.16 aio_init F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
@@ -2368,6 +2370,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
 GLIBC_2.34 _pthread_cleanup_push F
 GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
+GLIBC_2.34 aio_error F
+GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 310b1bf338..629dd4fd75 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_error F
-GLIBC_2.16 aio_error64 F
 GLIBC_2.16 aio_fsync F
 GLIBC_2.16 aio_fsync64 F
 GLIBC_2.16 aio_read F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (11 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 12/34] Linux: Move aio_error, aio_error64 " Florian Weimer
@ 2021-06-17 18:57 ` Florian Weimer
  2021-06-23 17:46   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 14/34] Linux: Move aio_read, aio_read64 " Florian Weimer
                   ` (21 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:57 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                    |  2 +-
 rt/Versions                                    |  6 ++++--
 rt/aio_fsync.c                                 | 18 ++++++++++++++----
 sysdeps/unix/sysv/linux/aarch64/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/arc/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/arc/librt.abilist      |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/csky/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/i386/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/ia64/librt.abilist     |  2 --
 .../unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
 .../sysv/linux/m68k/coldfire/librt.abilist     |  2 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist  |  2 --
 .../unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
 .../sysv/linux/microblaze/be/librt.abilist     |  2 --
 .../unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
 .../sysv/linux/microblaze/le/librt.abilist     |  2 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist    |  4 ++++
 .../unix/sysv/linux/mips/mips32/librt.abilist  |  2 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist  |  4 ++++
 .../sysv/linux/mips/mips64/n32/libc.abilist    |  4 ++++
 .../sysv/linux/mips/mips64/n32/librt.abilist   |  2 --
 .../sysv/linux/mips/mips64/n64/libc.abilist    |  4 ++++
 .../sysv/linux/mips/mips64/n64/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/nios2/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist    |  2 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist   |  4 ++++
 .../sysv/linux/powerpc/powerpc32/librt.abilist |  2 --
 .../linux/powerpc/powerpc32/nofpu/libc.abilist |  4 ++++
 .../linux/powerpc/powerpc64/be/libc.abilist    |  4 ++++
 .../linux/powerpc/powerpc64/be/librt.abilist   |  2 --
 .../linux/powerpc/powerpc64/le/libc.abilist    |  4 ++++
 .../linux/powerpc/powerpc64/le/librt.abilist   |  2 --
 .../unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
 .../unix/sysv/linux/riscv/rv32/librt.abilist   |  2 --
 .../unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
 .../unix/sysv/linux/riscv/rv64/librt.abilist   |  2 --
 .../unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
 .../unix/sysv/linux/s390/s390-32/librt.abilist |  2 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
 .../unix/sysv/linux/s390/s390-64/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist    |  2 --
 .../unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
 .../sysv/linux/sparc/sparc32/librt.abilist     |  2 --
 .../unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
 .../sysv/linux/sparc/sparc64/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist |  4 ++++
 .../unix/sysv/linux/x86_64/64/librt.abilist    |  2 --
 .../unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
 .../unix/sysv/linux/x86_64/x32/librt.abilist   |  2 --
 65 files changed, 147 insertions(+), 67 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 1b36886dd6..ca8c818a25 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,7 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_fsync \
   aio_read \
   aio_read64 \
   aio_return \
@@ -60,6 +59,7 @@ librt-shared-only-routines = librt-compat
 $(librt-routines-var) += \
   aio_cancel \
   aio_error \
+  aio_fsync \
   aio_misc \
   aio_notify \
   aio_sigqueue \
diff --git a/rt/Versions b/rt/Versions
index aae1d3c47d..1a0aa77fd0 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -6,6 +6,8 @@ libc {
     aio_cancel64;
     aio_error;
     aio_error64;
+    aio_fsync;
+    aio_fsync64;
 %endif
   }
   GLIBC_2.2 {
@@ -19,6 +21,8 @@ libc {
     aio_init;
     aio_error;
     aio_error64;
+    aio_fsync;
+    aio_fsync64;
 %endif
     shm_open;
     shm_unlink;
@@ -44,10 +48,8 @@ librt {
     aio_cancel64;
     aio_error;
     aio_error64;
-%endif
     aio_fsync;
     aio_fsync64;
-%if !PTHREAD_IN_LIBC
     aio_init;
 %endif
     aio_read;
diff --git a/rt/aio_fsync.c b/rt/aio_fsync.c
index 5a52e2fec0..73b906a1e2 100644
--- a/rt/aio_fsync.c
+++ b/rt/aio_fsync.c
@@ -31,10 +31,10 @@
 #include <fcntl.h>
 
 #include <aio_misc.h>
-
+#include <shlib-compat.h>
 
 int
-aio_fsync (int op, struct aiocb *aiocbp)
+__aio_fsync (int op, struct aiocb *aiocbp)
 {
   if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
     {
@@ -43,7 +43,7 @@ aio_fsync (int op, struct aiocb *aiocbp)
     }
 
   /* Verify that this is an open file descriptor.  */
-  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
+  if (__glibc_unlikely (__fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
     {
       __set_errno (EBADF);
       return -1;
@@ -54,4 +54,14 @@ aio_fsync (int op, struct aiocb *aiocbp)
 	  ? -1 : 0);
 }
 
-weak_alias (aio_fsync, aio_fsync64)
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_fsync, aio_fsync, GLIBC_2_34);
+versioned_symbol (libc, __aio_fsync, aio_fsync64, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_fsync, aio_fsync, GLIBC_2_1);
+compat_symbol (librt, __aio_fsync, aio_fsync64, GLIBC_2_1);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_fsync, aio_fsync)
+weak_alias (__aio_fsync, aio_fsync64)
+#endif /* !PTHREAD_IN_LIBC */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index e19168ddc5..cf141fdf08 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -593,6 +593,8 @@ GLIBC_2.17 aio_cancel F
 GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
+GLIBC_2.17 aio_fsync F
+GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2357,6 +2359,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 39e753fdde..1519e07346 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_fsync F
-GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 4efbbef2dc..8d58f3ea87 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1506,6 +1506,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2452,6 +2454,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 09ba914d65..f4dd36f97b 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 60fec8ba00..7579936aca 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -554,6 +554,8 @@ GLIBC_2.32 aio_cancel F
 GLIBC_2.32 aio_cancel64 F
 GLIBC_2.32 aio_error F
 GLIBC_2.32 aio_error64 F
+GLIBC_2.32 aio_fsync F
+GLIBC_2.32 aio_fsync64 F
 GLIBC_2.32 aio_init F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
@@ -2116,6 +2118,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 678bd29799..15b9acf33c 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_fsync F
-GLIBC_2.32 aio_fsync64 F
 GLIBC_2.32 aio_read F
 GLIBC_2.32 aio_read64 F
 GLIBC_2.32 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 1810ff85ca..566d18d20a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -282,6 +282,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -990,6 +992,8 @@ GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
+GLIBC_2.4 aio_fsync F
+GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 07178bcea0..1fa78d6811 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_fsync F
-GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 5f6c562a90..40da72fe92 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -279,6 +279,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -987,6 +989,8 @@ GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
+GLIBC_2.4 aio_fsync F
+GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 07178bcea0..1fa78d6811 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_fsync F
-GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index b8e78b1016..b0e1eab37e 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -568,6 +568,8 @@ GLIBC_2.29 aio_cancel F
 GLIBC_2.29 aio_cancel64 F
 GLIBC_2.29 aio_error F
 GLIBC_2.29 aio_error64 F
+GLIBC_2.29 aio_fsync F
+GLIBC_2.29 aio_fsync64 F
 GLIBC_2.29 aio_init F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
@@ -2376,6 +2378,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index e39a91e633..9c3edc9f2f 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_fsync F
-GLIBC_2.29 aio_fsync64 F
 GLIBC_2.29 aio_read F
 GLIBC_2.29 aio_read64 F
 GLIBC_2.29 aio_return F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 34516ba43e..463b498665 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -7,6 +7,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2330,6 +2332,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index f4035eed4a..2015282000 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1479,6 +1479,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2514,6 +2516,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 3f6a281098..f83ba75cac 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -7,6 +7,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2290,6 +2292,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 68b34cf0f6..38dd6dfb53 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 3c017951e3..a0ca9ddc48 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -283,6 +283,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
@@ -978,6 +980,8 @@ GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
 GLIBC_2.4 aio_error64 F
+GLIBC_2.4 aio_fsync F
+GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 07178bcea0..1fa78d6811 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_fsync F
-GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 6922e2ae69..bef73ca536 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1477,6 +1477,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2457,6 +2459,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 315c73587e..1f2c7f0fd9 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -595,6 +595,8 @@ GLIBC_2.18 aio_cancel F
 GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
+GLIBC_2.18 aio_fsync F
+GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2427,6 +2429,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index e9e0c0a91f..87eeccd69c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_fsync F
-GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index ce2a4eca6d..191db5f985 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -595,6 +595,8 @@ GLIBC_2.18 aio_cancel F
 GLIBC_2.18 aio_cancel64 F
 GLIBC_2.18 aio_error F
 GLIBC_2.18 aio_error64 F
+GLIBC_2.18 aio_fsync F
+GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
@@ -2424,6 +2426,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index e9e0c0a91f..87eeccd69c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_fsync F
-GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 83ea40ad7f..5eb630a9f5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1655,6 +1655,8 @@ GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
+GLIBC_2.2 aio_fsync F
+GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2422,6 +2424,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index f84f4e8cf2..9e2c283942 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_fsync F
-GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e3a34b81a5..a1b8e02ca4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1653,6 +1653,8 @@ GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
+GLIBC_2.2 aio_fsync F
+GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2420,6 +2422,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index a60151e94c..dd33f448b7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1654,6 +1654,8 @@ GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
+GLIBC_2.2 aio_fsync F
+GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2428,6 +2430,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index f84f4e8cf2..9e2c283942 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_fsync F
-GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index d9d5dfc258..efda95dd32 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1650,6 +1650,8 @@ GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
+GLIBC_2.2 aio_fsync F
+GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
@@ -2346,6 +2348,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index fbd1bb1039..848a39faae 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_fsync F
-GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 11b8d3d035..e2739a9145 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -637,6 +637,8 @@ GLIBC_2.21 aio_cancel F
 GLIBC_2.21 aio_cancel64 F
 GLIBC_2.21 aio_error F
 GLIBC_2.21 aio_error64 F
+GLIBC_2.21 aio_fsync F
+GLIBC_2.21 aio_fsync64 F
 GLIBC_2.21 aio_init F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
@@ -2466,6 +2468,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 5da84ad590..24472cb04f 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_fsync F
-GLIBC_2.21 aio_fsync64 F
 GLIBC_2.21 aio_read F
 GLIBC_2.21 aio_read64 F
 GLIBC_2.21 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 53bfeff0c8..6c816268cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2484,6 +2486,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 354a8c5e1e..03dadcef85 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2517,6 +2519,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 3c82273e63..c355eb4607 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -637,6 +637,8 @@ GLIBC_2.3 aio_cancel F
 GLIBC_2.3 aio_cancel64 F
 GLIBC_2.3 aio_error F
 GLIBC_2.3 aio_error64 F
+GLIBC_2.3 aio_fsync F
+GLIBC_2.3 aio_fsync64 F
 GLIBC_2.3 aio_init F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
@@ -2254,6 +2256,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 66926097e0..951344a6ef 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_fsync F
-GLIBC_2.3 aio_fsync64 F
 GLIBC_2.3 aio_read F
 GLIBC_2.3 aio_read64 F
 GLIBC_2.3 aio_return F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 0d9d8ed602..abe39f4a96 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -681,6 +681,8 @@ GLIBC_2.17 aio_cancel F
 GLIBC_2.17 aio_cancel64 F
 GLIBC_2.17 aio_error F
 GLIBC_2.17 aio_error64 F
+GLIBC_2.17 aio_fsync F
+GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
@@ -2553,6 +2555,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 39e753fdde..1519e07346 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_fsync F
-GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 4ff01efcca..585c9b7cf7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -548,6 +548,8 @@ GLIBC_2.33 aio_cancel F
 GLIBC_2.33 aio_cancel64 F
 GLIBC_2.33 aio_error F
 GLIBC_2.33 aio_error64 F
+GLIBC_2.33 aio_fsync F
+GLIBC_2.33 aio_fsync64 F
 GLIBC_2.33 aio_init F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
@@ -2118,6 +2120,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index be604bb966..8e30efa6a1 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_fsync F
-GLIBC_2.33 aio_fsync64 F
 GLIBC_2.33 aio_read F
 GLIBC_2.33 aio_read64 F
 GLIBC_2.33 aio_return F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index cdcc2fe800..d8aa40cb34 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -574,6 +574,8 @@ GLIBC_2.27 aio_cancel F
 GLIBC_2.27 aio_cancel64 F
 GLIBC_2.27 aio_error F
 GLIBC_2.27 aio_error64 F
+GLIBC_2.27 aio_fsync F
+GLIBC_2.27 aio_fsync64 F
 GLIBC_2.27 aio_init F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
@@ -2318,6 +2320,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 541ef4aa42..7145c7d249 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_fsync F
-GLIBC_2.27 aio_fsync64 F
 GLIBC_2.27 aio_read F
 GLIBC_2.27 aio_read64 F
 GLIBC_2.27 aio_return F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 3372cb7340..52a7d18745 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1476,6 +1476,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2482,6 +2484,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index a7e74a0d44..1078e94135 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -574,6 +574,8 @@ GLIBC_2.2 aio_cancel F
 GLIBC_2.2 aio_cancel64 F
 GLIBC_2.2 aio_error F
 GLIBC_2.2 aio_error64 F
+GLIBC_2.2 aio_fsync F
+GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
@@ -2291,6 +2293,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 40a823f6de..0396a04bd2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_fsync F
-GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index c856450c1f..90c2a79d6e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2337,6 +2339,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 459119e6de..a624e97cab 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2334,6 +2336,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 07dbd9a87b..8ac375872c 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c78e328a0f..c65022cdd9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1478,6 +1478,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
@@ -2477,6 +2479,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index e6990a5c82..183e0cbf21 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 3b4ef5f093..5e90b1e6f7 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
 GLIBC_2.1 aio_cancel64 F
 GLIBC_2.1 aio_error F
 GLIBC_2.1 aio_error64 F
+GLIBC_2.1 aio_fsync F
+GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
@@ -2313,6 +2315,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 09ba914d65..f4dd36f97b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_fsync F
-GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 1d6e7030fc..3911e41a47 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -563,6 +563,8 @@ GLIBC_2.2.5 aio_cancel F
 GLIBC_2.2.5 aio_cancel64 F
 GLIBC_2.2.5 aio_error F
 GLIBC_2.2.5 aio_error64 F
+GLIBC_2.2.5 aio_fsync F
+GLIBC_2.2.5 aio_fsync64 F
 GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
@@ -2269,6 +2271,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index ef23d67e9d..f1cce35e0a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_fsync F
-GLIBC_2.2.5 aio_fsync64 F
 GLIBC_2.2.5 aio_read F
 GLIBC_2.2.5 aio_read64 F
 GLIBC_2.2.5 aio_return F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 1480d7ada7..bae6dd505b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -596,6 +596,8 @@ GLIBC_2.16 aio_cancel F
 GLIBC_2.16 aio_cancel64 F
 GLIBC_2.16 aio_error F
 GLIBC_2.16 aio_error64 F
+GLIBC_2.16 aio_fsync F
+GLIBC_2.16 aio_fsync64 F
 GLIBC_2.16 aio_init F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
@@ -2372,6 +2374,8 @@ GLIBC_2.34 aio_cancel F
 GLIBC_2.34 aio_cancel64 F
 GLIBC_2.34 aio_error F
 GLIBC_2.34 aio_error64 F
+GLIBC_2.34 aio_fsync F
+GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 629dd4fd75..acaa63d92f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_fsync F
-GLIBC_2.16 aio_fsync64 F
 GLIBC_2.16 aio_read F
 GLIBC_2.16 aio_read64 F
 GLIBC_2.16 aio_return F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 14/34] Linux: Move aio_read, aio_read64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (12 preceding siblings ...)
  2021-06-17 18:57 ` [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 17:51   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 15/34] Linux: Move aio_return, aio_return64 " Florian Weimer
                   ` (20 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

Both symbols have to be moved at the same time because they
are intertwined for __WORDSIZE == 64.  The treatment of this case
is also changed to match more closely how the other files suppress
the declaration of the *64 identifier.

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                   |  4 +-
 rt/Versions                                   |  6 ++-
 rt/aio_read.c                                 | 37 +++++++++++++++++--
 rt/aio_read64.c                               | 20 ++++++++--
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 -
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  2 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../unix/sysv/linux/wordsize-64/aio_read.c    |  7 ----
 .../unix/sysv/linux/wordsize-64/aio_read64.c  |  1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 68 files changed, 185 insertions(+), 78 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c

diff --git a/rt/Makefile b/rt/Makefile
index ca8c818a25..f080be56d5 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,8 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_read \
-  aio_read64 \
   aio_return \
   aio_suspend \
   aio_write \
@@ -62,6 +60,8 @@ $(librt-routines-var) += \
   aio_fsync \
   aio_misc \
   aio_notify \
+  aio_read \
+  aio_read64 \
   aio_sigqueue \
 
 tests := tst-shm tst-timer tst-timer2 \
diff --git a/rt/Versions b/rt/Versions
index 1a0aa77fd0..6db40bebc4 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -8,6 +8,8 @@ libc {
     aio_error64;
     aio_fsync;
     aio_fsync64;
+    aio_read;
+    aio_read64;
 %endif
   }
   GLIBC_2.2 {
@@ -23,6 +25,8 @@ libc {
     aio_error64;
     aio_fsync;
     aio_fsync64;
+    aio_read;
+    aio_read64;
 %endif
     shm_open;
     shm_unlink;
@@ -51,9 +55,9 @@ librt {
     aio_fsync;
     aio_fsync64;
     aio_init;
-%endif
     aio_read;
     aio_read64;
+%endif
     aio_return;
     aio_return64;
     aio_suspend;
diff --git a/rt/aio_read.c b/rt/aio_read.c
index 4698e48b1c..1b7a7fcfa9 100644
--- a/rt/aio_read.c
+++ b/rt/aio_read.c
@@ -17,14 +17,45 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
+#include <bits/wordsize.h>
+#if __WORDSIZE == 64
+/* We use an UGLY hack to prevent gcc from finding us cheating.  The
+   implementation of aio_read and aio_read64 are identical and so
+   we want to avoid code duplication by using aliases.  But gcc sees
+   the different parameter lists and prints a warning.  We define here
+   a function so that aio_read64 has no prototype.  */
+# define aio_read64 XXX
+# include <aio.h>
+/* And undo the hack.  */
+# undef aio_read64
+#else
+# include <aio.h>
+#endif
 
 #include <aio_misc.h>
-
+#include <shlib-compat.h>
 
 int
-aio_read (struct aiocb *aiocbp)
+__aio_read (struct aiocb *aiocbp)
 {
   return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
 	  ? -1 : 0);
 }
+
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_read, aio_read, GLIBC_2_34);
+# if __WORDSIZE == 64
+versioned_symbol (libc, __aio_read, aio_read64, GLIBC_2_34);
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_read, aio_read, GLIBC_2_1);
+#  if __WORDSIZE == 64
+compat_symbol (librt, __aio_read, aio_read64, GLIBC_2_1);
+#  endif
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_read, aio_read)
+# if __WORDSIZE == 64
+weak_alias (__aio_read, aio_read64)
+#endif
+#endif  /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_read64.c b/rt/aio_read64.c
index 26b9b0b380..3aa169fbf3 100644
--- a/rt/aio_read64.c
+++ b/rt/aio_read64.c
@@ -17,14 +17,26 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
-
-#include <aio_misc.h>
+#include <bits/wordsize.h>
+#if __WORDSIZE != 64
 
+# include <aio.h>
+# include <aio_misc.h>
+# include <shlib-compat.h>
 
 int
-aio_read64 (struct aiocb64 *aiocbp)
+__aio_read64 (struct aiocb64 *aiocbp)
 {
   return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
 	  ? -1 : 0);
 }
+
+# if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_read64, aio_read64, GLIBC_2_34);
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_read64, aio_read64, GLIBC_2_1);
+#  endif
+# else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_read64, aio_read64)
+# endif
+#endif /* __WORDSIZE != 64 */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index cf141fdf08..d210f88f0e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -596,6 +596,8 @@ GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
+GLIBC_2.17 aio_read F
+GLIBC_2.17 aio_read64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2362,6 +2364,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 1519e07346..58a853230e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_read F
-GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 8d58f3ea87..08ea11c9fe 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1509,6 +1509,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2457,6 +2459,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index f4dd36f97b..2afa483191 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 7579936aca..817c4c6ff0 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -557,6 +557,8 @@ GLIBC_2.32 aio_error64 F
 GLIBC_2.32 aio_fsync F
 GLIBC_2.32 aio_fsync64 F
 GLIBC_2.32 aio_init F
+GLIBC_2.32 aio_read F
+GLIBC_2.32 aio_read64 F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
 GLIBC_2.32 alphasort F
@@ -2121,6 +2123,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 15b9acf33c..e49be2ff36 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_read F
-GLIBC_2.32 aio_read64 F
 GLIBC_2.32 aio_return F
 GLIBC_2.32 aio_return64 F
 GLIBC_2.32 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 566d18d20a..0be92527af 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -285,6 +285,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -995,6 +997,8 @@ GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
+GLIBC_2.4 aio_read F
+GLIBC_2.4 aio_read64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 1fa78d6811..9a68bb887b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_read F
-GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 40da72fe92..615b37769a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -282,6 +282,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -992,6 +994,8 @@ GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
+GLIBC_2.4 aio_read F
+GLIBC_2.4 aio_read64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 1fa78d6811..9a68bb887b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_read F
-GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index b0e1eab37e..e77bb5b57b 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -571,6 +571,8 @@ GLIBC_2.29 aio_error64 F
 GLIBC_2.29 aio_fsync F
 GLIBC_2.29 aio_fsync64 F
 GLIBC_2.29 aio_init F
+GLIBC_2.29 aio_read F
+GLIBC_2.29 aio_read64 F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
 GLIBC_2.29 alphasort F
@@ -2381,6 +2383,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 9c3edc9f2f..93475f5bd5 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_read F
-GLIBC_2.29 aio_read64 F
 GLIBC_2.29 aio_return F
 GLIBC_2.29 aio_return64 F
 GLIBC_2.29 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 463b498665..12704a350a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -10,6 +10,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2335,6 +2337,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 2015282000..67d1fbcade 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1482,6 +1482,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2519,6 +2521,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index f83ba75cac..83d6bbfdf2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -10,6 +10,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2295,6 +2297,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 38dd6dfb53..152692a5a6 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index a0ca9ddc48..537df59369 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -286,6 +286,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -983,6 +985,8 @@ GLIBC_2.4 aio_error64 F
 GLIBC_2.4 aio_fsync F
 GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
+GLIBC_2.4 aio_read F
+GLIBC_2.4 aio_read64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 1fa78d6811..9a68bb887b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_read F
-GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index bef73ca536..fefee687b2 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1480,6 +1480,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2462,6 +2464,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 1f2c7f0fd9..635b62cd31 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -598,6 +598,8 @@ GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
+GLIBC_2.18 aio_read F
+GLIBC_2.18 aio_read64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2432,6 +2434,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 87eeccd69c..34f5bc3964 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_read F
-GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 191db5f985..cce81d50da 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -598,6 +598,8 @@ GLIBC_2.18 aio_error64 F
 GLIBC_2.18 aio_fsync F
 GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
+GLIBC_2.18 aio_read F
+GLIBC_2.18 aio_read64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2429,6 +2431,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 87eeccd69c..34f5bc3964 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_read F
-GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 5eb630a9f5..d4e0f597ba 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1658,6 +1658,8 @@ GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
+GLIBC_2.2 aio_read F
+GLIBC_2.2 aio_read64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2427,6 +2429,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 9e2c283942..d886f0376c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_read F
-GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index a1b8e02ca4..757c40c34c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1656,6 +1656,8 @@ GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
+GLIBC_2.2 aio_read F
+GLIBC_2.2 aio_read64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2425,6 +2427,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index dd33f448b7..d1c919b14f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1657,6 +1657,8 @@ GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
+GLIBC_2.2 aio_read F
+GLIBC_2.2 aio_read64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2433,6 +2435,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 9e2c283942..d886f0376c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_read F
-GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index efda95dd32..6c3dd08461 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1653,6 +1653,8 @@ GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
+GLIBC_2.2 aio_read F
+GLIBC_2.2 aio_read64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2351,6 +2353,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 848a39faae..6c94c34024 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_read F
-GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index e2739a9145..160e1d491e 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -640,6 +640,8 @@ GLIBC_2.21 aio_error64 F
 GLIBC_2.21 aio_fsync F
 GLIBC_2.21 aio_fsync64 F
 GLIBC_2.21 aio_init F
+GLIBC_2.21 aio_read F
+GLIBC_2.21 aio_read64 F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
 GLIBC_2.21 alphasort F
@@ -2471,6 +2473,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 24472cb04f..7d197b8c5d 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_read F
-GLIBC_2.21 aio_read64 F
 GLIBC_2.21 aio_return F
 GLIBC_2.21 aio_return64 F
 GLIBC_2.21 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 6c816268cd..2923d162e0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2489,6 +2491,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 03dadcef85..b6feabe5e4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2522,6 +2524,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index c355eb4607..b149e31698 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -640,6 +640,8 @@ GLIBC_2.3 aio_error64 F
 GLIBC_2.3 aio_fsync F
 GLIBC_2.3 aio_fsync64 F
 GLIBC_2.3 aio_init F
+GLIBC_2.3 aio_read F
+GLIBC_2.3 aio_read64 F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
 GLIBC_2.3 alphasort64 F
@@ -2259,6 +2261,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 951344a6ef..d0ddb7852e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_read F
-GLIBC_2.3 aio_read64 F
 GLIBC_2.3 aio_return F
 GLIBC_2.3 aio_return64 F
 GLIBC_2.3 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index abe39f4a96..607abc7f32 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -684,6 +684,8 @@ GLIBC_2.17 aio_error64 F
 GLIBC_2.17 aio_fsync F
 GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
+GLIBC_2.17 aio_read F
+GLIBC_2.17 aio_read64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2558,6 +2560,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 1519e07346..58a853230e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_read F
-GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 585c9b7cf7..de26c22e23 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -551,6 +551,8 @@ GLIBC_2.33 aio_error64 F
 GLIBC_2.33 aio_fsync F
 GLIBC_2.33 aio_fsync64 F
 GLIBC_2.33 aio_init F
+GLIBC_2.33 aio_read F
+GLIBC_2.33 aio_read64 F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
 GLIBC_2.33 alphasort F
@@ -2123,6 +2125,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 8e30efa6a1..8e15ebe652 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_read F
-GLIBC_2.33 aio_read64 F
 GLIBC_2.33 aio_return F
 GLIBC_2.33 aio_return64 F
 GLIBC_2.33 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index d8aa40cb34..d0ca205432 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -577,6 +577,8 @@ GLIBC_2.27 aio_error64 F
 GLIBC_2.27 aio_fsync F
 GLIBC_2.27 aio_fsync64 F
 GLIBC_2.27 aio_init F
+GLIBC_2.27 aio_read F
+GLIBC_2.27 aio_read64 F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
 GLIBC_2.27 alphasort F
@@ -2323,6 +2325,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 7145c7d249..fe48c3cfea 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_read F
-GLIBC_2.27 aio_read64 F
 GLIBC_2.27 aio_return F
 GLIBC_2.27 aio_return64 F
 GLIBC_2.27 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 52a7d18745..a773148442 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1479,6 +1479,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2487,6 +2489,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 1078e94135..14899f40f7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -577,6 +577,8 @@ GLIBC_2.2 aio_error64 F
 GLIBC_2.2 aio_fsync F
 GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
+GLIBC_2.2 aio_read F
+GLIBC_2.2 aio_read64 F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
 GLIBC_2.2 alphasort64 F
@@ -2296,6 +2298,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 0396a04bd2..a65683ca9d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_read F
-GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 90c2a79d6e..a255e3eeac 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2342,6 +2344,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a624e97cab..45c49ba662 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2339,6 +2341,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 8ac375872c..0402dcddcc 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c65022cdd9..07a68d78e3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1481,6 +1481,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2482,6 +2484,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 183e0cbf21..2202b8ef5f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 5e90b1e6f7..8b549e7efc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
 GLIBC_2.1 aio_fsync F
 GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
+GLIBC_2.1 aio_read F
+GLIBC_2.1 aio_read64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2318,6 +2320,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index f4dd36f97b..2afa483191 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_read F
-GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
deleted file mode 100644
index 8310b484d0..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#define aio_read64 __renamed_aio_read64
-
-#include <rt/aio_read.c>
-
-#undef aio_read64
-
-weak_alias (aio_read, aio_read64)
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
deleted file mode 100644
index 6a6a102c8d..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in aio_read.c.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 3911e41a47..e8d70016a6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -566,6 +566,8 @@ GLIBC_2.2.5 aio_error64 F
 GLIBC_2.2.5 aio_fsync F
 GLIBC_2.2.5 aio_fsync64 F
 GLIBC_2.2.5 aio_init F
+GLIBC_2.2.5 aio_read F
+GLIBC_2.2.5 aio_read64 F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
 GLIBC_2.2.5 alphasort64 F
@@ -2274,6 +2276,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index f1cce35e0a..e9d2aeb05b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_read F
-GLIBC_2.2.5 aio_read64 F
 GLIBC_2.2.5 aio_return F
 GLIBC_2.2.5 aio_return64 F
 GLIBC_2.2.5 aio_suspend F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index bae6dd505b..40921d5579 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -599,6 +599,8 @@ GLIBC_2.16 aio_error64 F
 GLIBC_2.16 aio_fsync F
 GLIBC_2.16 aio_fsync64 F
 GLIBC_2.16 aio_init F
+GLIBC_2.16 aio_read F
+GLIBC_2.16 aio_read64 F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
 GLIBC_2.16 alphasort F
@@ -2377,6 +2379,8 @@ GLIBC_2.34 aio_error64 F
 GLIBC_2.34 aio_fsync F
 GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
+GLIBC_2.34 aio_read F
+GLIBC_2.34 aio_read64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index acaa63d92f..bbd0f42caa 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_read F
-GLIBC_2.16 aio_read64 F
 GLIBC_2.16 aio_return F
 GLIBC_2.16 aio_return64 F
 GLIBC_2.16 aio_suspend F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 15/34] Linux: Move aio_return, aio_return64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (13 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 14/34] Linux: Move aio_read, aio_read64 " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 19:44   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc Florian Weimer
                   ` (19 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                       |  2 +-
 rt/Versions                                       |  6 +++++-
 rt/aio_return.c                                   | 15 +++++++++++++--
 sysdeps/unix/sysv/linux/aarch64/libc.abilist      |  4 ++++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist       |  2 --
 sysdeps/unix/sysv/linux/arc/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/arc/librt.abilist         |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist      |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist      |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/csky/librt.abilist        |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist        |  2 --
 sysdeps/unix/sysv/linux/i386/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/i386/librt.abilist        |  2 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/ia64/librt.abilist        |  2 --
 .../unix/sysv/linux/m68k/coldfire/libc.abilist    |  4 ++++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
 .../unix/sysv/linux/microblaze/be/libc.abilist    |  4 ++++
 .../unix/sysv/linux/microblaze/be/librt.abilist   |  2 --
 .../unix/sysv/linux/microblaze/le/libc.abilist    |  4 ++++
 .../unix/sysv/linux/microblaze/le/librt.abilist   |  2 --
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist |  2 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist     |  4 ++++
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist  |  4 ++++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist |  2 --
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist  |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/nios2/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist       |  2 --
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist |  4 ++++
 .../sysv/linux/powerpc/powerpc32/librt.abilist    |  2 --
 .../linux/powerpc/powerpc32/nofpu/libc.abilist    |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/libc.abilist  |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/librt.abilist |  2 --
 .../sysv/linux/powerpc/powerpc64/le/libc.abilist  |  4 ++++
 .../sysv/linux/powerpc/powerpc64/le/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
 .../unix/sysv/linux/s390/s390-32/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
 .../unix/sysv/linux/s390/s390-64/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/sh/be/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist       |  2 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist       |  2 --
 .../unix/sysv/linux/sparc/sparc32/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist   |  2 --
 .../unix/sysv/linux/sparc/sparc64/libc.abilist    |  4 ++++
 .../unix/sysv/linux/sparc/sparc64/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
 65 files changed, 147 insertions(+), 64 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index f080be56d5..810599a736 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,7 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_return \
   aio_suspend \
   aio_write \
   aio_write64 \
@@ -62,6 +61,7 @@ $(librt-routines-var) += \
   aio_notify \
   aio_read \
   aio_read64 \
+  aio_return \
   aio_sigqueue \
 
 tests := tst-shm tst-timer tst-timer2 \
diff --git a/rt/Versions b/rt/Versions
index 6db40bebc4..0780dc8400 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -10,6 +10,8 @@ libc {
     aio_fsync64;
     aio_read;
     aio_read64;
+    aio_return;
+    aio_return64;
 %endif
   }
   GLIBC_2.2 {
@@ -27,6 +29,8 @@ libc {
     aio_fsync64;
     aio_read;
     aio_read64;
+    aio_return;
+    aio_return64;
 %endif
     shm_open;
     shm_unlink;
@@ -57,9 +61,9 @@ librt {
     aio_init;
     aio_read;
     aio_read64;
-%endif
     aio_return;
     aio_return64;
+%endif
     aio_suspend;
     aio_suspend64;
     aio_write;
diff --git a/rt/aio_return.c b/rt/aio_return.c
index cc50719dcb..a7a0b141d2 100644
--- a/rt/aio_return.c
+++ b/rt/aio_return.c
@@ -28,11 +28,22 @@
 /* And undo the hack.  */
 #undef aio_return64
 
+#include <shlib-compat.h>
 
 ssize_t
-aio_return (struct aiocb *aiocbp)
+__aio_return (struct aiocb *aiocbp)
 {
   return aiocbp->__return_value;
 }
 
-weak_alias (aio_return, aio_return64)
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_return, aio_return, GLIBC_2_34);
+versioned_symbol (libc, __aio_return, aio_return64, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_return, aio_return, GLIBC_2_1);
+compat_symbol (librt, __aio_return, aio_return64, GLIBC_2_1);
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_return, aio_return)
+weak_alias (__aio_return, aio_return64)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index d210f88f0e..79405d26e9 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -598,6 +598,8 @@ GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
+GLIBC_2.17 aio_return F
+GLIBC_2.17 aio_return64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2366,6 +2368,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 58a853230e..451560dc87 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_return F
-GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
 GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 aio_write F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 08ea11c9fe..f6fa8966f8 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1511,6 +1511,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2461,6 +2463,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 2afa483191..90a66e4a4b 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 817c4c6ff0..a5c1df7eaf 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -559,6 +559,8 @@ GLIBC_2.32 aio_fsync64 F
 GLIBC_2.32 aio_init F
 GLIBC_2.32 aio_read F
 GLIBC_2.32 aio_read64 F
+GLIBC_2.32 aio_return F
+GLIBC_2.32 aio_return64 F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
 GLIBC_2.32 alphasort F
@@ -2125,6 +2127,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index e49be2ff36..9cac9c759b 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_return F
-GLIBC_2.32 aio_return64 F
 GLIBC_2.32 aio_suspend F
 GLIBC_2.32 aio_suspend64 F
 GLIBC_2.32 aio_write F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 0be92527af..1928717cfd 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -287,6 +287,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -999,6 +1001,8 @@ GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
+GLIBC_2.4 aio_return F
+GLIBC_2.4 aio_return64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 9a68bb887b..05957aae03 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_return F
-GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 615b37769a..bee5d9f757 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -284,6 +284,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -996,6 +998,8 @@ GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
+GLIBC_2.4 aio_return F
+GLIBC_2.4 aio_return64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 9a68bb887b..05957aae03 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_return F
-GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index e77bb5b57b..753f54085a 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -573,6 +573,8 @@ GLIBC_2.29 aio_fsync64 F
 GLIBC_2.29 aio_init F
 GLIBC_2.29 aio_read F
 GLIBC_2.29 aio_read64 F
+GLIBC_2.29 aio_return F
+GLIBC_2.29 aio_return64 F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
 GLIBC_2.29 alphasort F
@@ -2385,6 +2387,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 93475f5bd5..74fc5621d6 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_return F
-GLIBC_2.29 aio_return64 F
 GLIBC_2.29 aio_suspend F
 GLIBC_2.29 aio_suspend64 F
 GLIBC_2.29 aio_write F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 12704a350a..4a96fcfb39 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -12,6 +12,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2339,6 +2341,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 67d1fbcade..b704bf4756 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2523,6 +2525,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 83d6bbfdf2..08bea0c72f 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -12,6 +12,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2299,6 +2301,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 152692a5a6..ac9f293b6b 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 537df59369..187672fa76 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -288,6 +288,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -987,6 +989,8 @@ GLIBC_2.4 aio_fsync64 F
 GLIBC_2.4 aio_init F
 GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
+GLIBC_2.4 aio_return F
+GLIBC_2.4 aio_return64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 9a68bb887b..05957aae03 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_return F
-GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index fefee687b2..379779793c 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1482,6 +1482,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2466,6 +2468,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 635b62cd31..2fce5d9138 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -600,6 +600,8 @@ GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
+GLIBC_2.18 aio_return F
+GLIBC_2.18 aio_return64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2436,6 +2438,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 34f5bc3964..1503d19eae 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_return F
-GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
 GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 aio_write F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index cce81d50da..6c3cd2a9e3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -600,6 +600,8 @@ GLIBC_2.18 aio_fsync64 F
 GLIBC_2.18 aio_init F
 GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
+GLIBC_2.18 aio_return F
+GLIBC_2.18 aio_return64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2433,6 +2435,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 34f5bc3964..1503d19eae 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_return F
-GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
 GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 aio_write F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index d4e0f597ba..46aa64baaa 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1660,6 +1660,8 @@ GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
+GLIBC_2.2 aio_return F
+GLIBC_2.2 aio_return64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2431,6 +2433,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index d886f0376c..2b7c3cabec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_return F
-GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 757c40c34c..169b386cc1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1658,6 +1658,8 @@ GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
+GLIBC_2.2 aio_return F
+GLIBC_2.2 aio_return64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2429,6 +2431,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index d1c919b14f..ad52c15c3e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1659,6 +1659,8 @@ GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
+GLIBC_2.2 aio_return F
+GLIBC_2.2 aio_return64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2437,6 +2439,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index d886f0376c..2b7c3cabec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_return F
-GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 6c3dd08461..16a67a0d6d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1655,6 +1655,8 @@ GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
+GLIBC_2.2 aio_return F
+GLIBC_2.2 aio_return64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2355,6 +2357,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 6c94c34024..293b92eaec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_return F
-GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 160e1d491e..3567fa8efc 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -642,6 +642,8 @@ GLIBC_2.21 aio_fsync64 F
 GLIBC_2.21 aio_init F
 GLIBC_2.21 aio_read F
 GLIBC_2.21 aio_read64 F
+GLIBC_2.21 aio_return F
+GLIBC_2.21 aio_return64 F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
 GLIBC_2.21 alphasort F
@@ -2475,6 +2477,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 7d197b8c5d..b63036c526 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_return F
-GLIBC_2.21 aio_return64 F
 GLIBC_2.21 aio_suspend F
 GLIBC_2.21 aio_suspend64 F
 GLIBC_2.21 aio_write F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 2923d162e0..0b393c0a5a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1489,6 +1489,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2493,6 +2495,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index b6feabe5e4..0bc73512d3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1489,6 +1489,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2526,6 +2528,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index b149e31698..22d277a32e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -642,6 +642,8 @@ GLIBC_2.3 aio_fsync64 F
 GLIBC_2.3 aio_init F
 GLIBC_2.3 aio_read F
 GLIBC_2.3 aio_read64 F
+GLIBC_2.3 aio_return F
+GLIBC_2.3 aio_return64 F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
 GLIBC_2.3 alphasort64 F
@@ -2263,6 +2265,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index d0ddb7852e..b98e7cf9de 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_return F
-GLIBC_2.3 aio_return64 F
 GLIBC_2.3 aio_suspend F
 GLIBC_2.3 aio_suspend64 F
 GLIBC_2.3 aio_write F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 607abc7f32..15b0f5e367 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -686,6 +686,8 @@ GLIBC_2.17 aio_fsync64 F
 GLIBC_2.17 aio_init F
 GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
+GLIBC_2.17 aio_return F
+GLIBC_2.17 aio_return64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2562,6 +2564,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 58a853230e..451560dc87 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_return F
-GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
 GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 aio_write F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index de26c22e23..6003434931 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -553,6 +553,8 @@ GLIBC_2.33 aio_fsync64 F
 GLIBC_2.33 aio_init F
 GLIBC_2.33 aio_read F
 GLIBC_2.33 aio_read64 F
+GLIBC_2.33 aio_return F
+GLIBC_2.33 aio_return64 F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
 GLIBC_2.33 alphasort F
@@ -2127,6 +2129,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 8e15ebe652..dc23391407 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_return F
-GLIBC_2.33 aio_return64 F
 GLIBC_2.33 aio_suspend F
 GLIBC_2.33 aio_suspend64 F
 GLIBC_2.33 aio_write F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index d0ca205432..5041f05217 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -579,6 +579,8 @@ GLIBC_2.27 aio_fsync64 F
 GLIBC_2.27 aio_init F
 GLIBC_2.27 aio_read F
 GLIBC_2.27 aio_read64 F
+GLIBC_2.27 aio_return F
+GLIBC_2.27 aio_return64 F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
 GLIBC_2.27 alphasort F
@@ -2327,6 +2329,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index fe48c3cfea..5f1cecd612 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_return F
-GLIBC_2.27 aio_return64 F
 GLIBC_2.27 aio_suspend F
 GLIBC_2.27 aio_suspend64 F
 GLIBC_2.27 aio_write F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a773148442..ed6c511cc9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1481,6 +1481,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2491,6 +2493,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 14899f40f7..9f1e31574e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -579,6 +579,8 @@ GLIBC_2.2 aio_fsync64 F
 GLIBC_2.2 aio_init F
 GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
+GLIBC_2.2 aio_return F
+GLIBC_2.2 aio_return64 F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
 GLIBC_2.2 alphasort64 F
@@ -2300,6 +2302,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index a65683ca9d..2442ed5222 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_return F
-GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index a255e3eeac..b9e583fa88 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2346,6 +2348,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 45c49ba662..2f737fadb8 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2343,6 +2345,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 0402dcddcc..4cae24e768 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 07a68d78e3..f4c87b4fa9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1483,6 +1483,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2486,6 +2488,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 2202b8ef5f..6061373aae 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 8b549e7efc..03acd40463 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
 GLIBC_2.1 aio_init F
 GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
+GLIBC_2.1 aio_return F
+GLIBC_2.1 aio_return64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2322,6 +2324,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 2afa483191..90a66e4a4b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_return F
-GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index e8d70016a6..f81fe5301d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -568,6 +568,8 @@ GLIBC_2.2.5 aio_fsync64 F
 GLIBC_2.2.5 aio_init F
 GLIBC_2.2.5 aio_read F
 GLIBC_2.2.5 aio_read64 F
+GLIBC_2.2.5 aio_return F
+GLIBC_2.2.5 aio_return64 F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
 GLIBC_2.2.5 alphasort64 F
@@ -2278,6 +2280,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index e9d2aeb05b..62fe3da2cb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_return F
-GLIBC_2.2.5 aio_return64 F
 GLIBC_2.2.5 aio_suspend F
 GLIBC_2.2.5 aio_suspend64 F
 GLIBC_2.2.5 aio_write F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 40921d5579..45d74a3958 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -601,6 +601,8 @@ GLIBC_2.16 aio_fsync64 F
 GLIBC_2.16 aio_init F
 GLIBC_2.16 aio_read F
 GLIBC_2.16 aio_read64 F
+GLIBC_2.16 aio_return F
+GLIBC_2.16 aio_return64 F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
 GLIBC_2.16 alphasort F
@@ -2381,6 +2383,8 @@ GLIBC_2.34 aio_fsync64 F
 GLIBC_2.34 aio_init F
 GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
+GLIBC_2.34 aio_return F
+GLIBC_2.34 aio_return64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index bbd0f42caa..a531990038 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_return F
-GLIBC_2.16 aio_return64 F
 GLIBC_2.16 aio_suspend F
 GLIBC_2.16 aio_suspend64 F
 GLIBC_2.16 aio_write F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (14 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 15/34] Linux: Move aio_return, aio_return64 " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 19:52   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc Florian Weimer
                   ` (18 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.

There is a minor oddity here: This is generic code shared with Hurd,
and Hurd does not have time64 support.  This is why the
versioned_symbol export for __aio_suspend_time64 is restricted to
the PTHREAD_IN_LIBC code.
---
 include/aio.h                                 |  4 ++
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  6 ++-
 rt/aio_suspend.c                              | 49 +++++++++++++++----
 sysdeps/unix/sysv/linux/Versions              |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  5 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
 .../sysv/linux/microblaze/be/libc.abilist     |  5 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  3 --
 .../sysv/linux/microblaze/le/libc.abilist     |  5 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  3 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  3 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  5 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
 .../sysv/linux/sparc/sparc32/libc.abilist     |  5 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 67 files changed, 197 insertions(+), 90 deletions(-)

diff --git a/include/aio.h b/include/aio.h
index c7f4233310..5d67800aff 100644
--- a/include/aio.h
+++ b/include/aio.h
@@ -15,7 +15,11 @@ extern void __aio_init (const struct aioinit *__init);
 # else
 extern int __aio_suspend_time64 (const struct aiocb *const list[], int nent,
                                  const struct __timespec64 *timeout);
+#  if PTHREAD_IN_LIBC
+libc_hidden_proto (__aio_suspend_time64)
+#  else
 librt_hidden_proto (__aio_suspend_time64)
+#endif
 # endif
 #endif
 
diff --git a/rt/Makefile b/rt/Makefile
index 810599a736..b375d37ba2 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,7 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_suspend \
   aio_write \
   aio_write64 \
   librt-compat \
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   aio_read64 \
   aio_return \
   aio_sigqueue \
+  aio_suspend \
 
 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 0780dc8400..d54b9cc4bf 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -12,6 +12,8 @@ libc {
     aio_read64;
     aio_return;
     aio_return64;
+    aio_suspend;
+    aio_suspend64;
 %endif
   }
   GLIBC_2.2 {
@@ -31,6 +33,8 @@ libc {
     aio_read64;
     aio_return;
     aio_return64;
+    aio_suspend;
+    aio_suspend64;
 %endif
     shm_open;
     shm_unlink;
@@ -63,9 +67,9 @@ librt {
     aio_read64;
     aio_return;
     aio_return64;
-%endif
     aio_suspend;
     aio_suspend64;
+%endif
     aio_write;
     aio_write64;
     lio_listio;
diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c
index 6fd5b1bee2..29f01d1023 100644
--- a/rt/aio_suspend.c
+++ b/rt/aio_suspend.c
@@ -36,6 +36,8 @@
 
 #include <libc-lock.h>
 #include <aio_misc.h>
+#include <pthreadP.h>
+#include <shlib-compat.h>
 
 
 struct clparam
@@ -56,7 +58,7 @@ cleanup (void *arg)
 #ifdef DONT_NEED_AIO_MISC_COND
   /* Acquire the mutex.  If pthread_cond_*wait is used this would
      happen implicitly.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 #endif
 
   const struct clparam *param = (const struct clparam *) arg;
@@ -88,7 +90,7 @@ cleanup (void *arg)
 #endif
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 }
 
 #ifdef DONT_NEED_AIO_MISC_COND
@@ -105,7 +107,7 @@ do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
 #endif
 
 int
-__aio_suspend_time64 (const struct aiocb *const list[], int nent,
+___aio_suspend_time64 (const struct aiocb *const list[], int nent,
 		      const struct __timespec64 *timeout)
 {
   if (__glibc_unlikely (nent < 0))
@@ -125,7 +127,7 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
   unsigned int cntr = 1;
 
   /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   /* There is not yet a finished request.  Signal the request that
      we are working for it.  */
@@ -184,7 +186,11 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
 	  .nent = nent
 	};
 
-      pthread_cleanup_push (cleanup, &clparam);
+#if PTHREAD_IN_LIBC
+      __libc_cleanup_region_start (1, cleanup, &clparam);
+#else
+      __pthread_cleanup_push (cleanup, &clparam);
+#endif
 
 #ifdef DONT_NEED_AIO_MISC_COND
       result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
@@ -194,7 +200,11 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
 				       timeout == NULL ? NULL : &ts32);
 #endif
 
+#if PTHREAD_IN_LIBC
+      __libc_cleanup_region_end (0);
+#else
       pthread_cleanup_pop (0);
+#endif
     }
 
   /* Now remove the entry in the waiting list for all requests
@@ -239,13 +249,22 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
     }
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 
   return result;
 }
 
-#if __TIMESIZE != 64
-librt_hidden_def (__aio_suspend_time64)
+#if __TIMESIZE == 64
+strong_alias (___aio_suspend_time64, __aio_suspend)
+#else /* __TIMESIZE != 64 */
+# if PTHREAD_IN_LIBC
+libc_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
+/* The conditional is slightly wrong: PTHREAD_IN_LIBC is a stand-in
+   for whether time64 support is needed.  */
+versioned_symbol (libc, ___aio_suspend_time64, __aio_suspend_time64, GLIBC_2_34);
+# else
+librt_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
+# endif
 
 int
 __aio_suspend (const struct aiocb *const list[], int nent,
@@ -258,6 +277,16 @@ __aio_suspend (const struct aiocb *const list[], int nent,
 
   return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
 }
-#endif
+#endif /* __TIMESPEC64 != 64 */
+
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_suspend, aio_suspend, GLIBC_2_34);
+versioned_symbol (libc, __aio_suspend, aio_suspend64, GLIBC_2_34);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_suspend, aio_suspend, GLIBC_2_1);
+compat_symbol (librt, __aio_suspend, aio_suspend64, GLIBC_2_1);
+# endif
+#else /* !PTHREAD_IN_LIBC */
 weak_alias (__aio_suspend, aio_suspend)
-weak_alias (aio_suspend, aio_suspend64)
+weak_alias (__aio_suspend, aio_suspend64)
+#endif /* !PTHREAD_IN_LIBC */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index ea0b22d7af..f246a389e1 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -192,6 +192,7 @@ libc {
     # 64-bit time_t support
     __adjtime64;
     ___adjtimex64;
+    __aio_suspend_time64;
     __clock_adjtime64;
     __clock_getres64;
     __clock_gettime64;
@@ -294,7 +295,6 @@ librt {
   GLIBC_2.34 {
 %ifdef TIME64_NON_DEFAULT
     # 64-bit time_t support
-    __aio_suspend_time64;
     __mq_timedsend_time64;
     __mq_timedreceive_time64;
     __timer_gettime64;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 79405d26e9..6c76d0df61 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -600,6 +600,8 @@ GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
+GLIBC_2.17 aio_suspend F
+GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2370,6 +2372,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 451560dc87..37ff014ed8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_suspend F
-GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 aio_write F
 GLIBC_2.17 aio_write64 F
 GLIBC_2.17 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index f6fa8966f8..e7f0e1b49a 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1513,6 +1513,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2465,6 +2467,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 90a66e4a4b..8a8fe654e0 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index a5c1df7eaf..cf93d14e6f 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -561,6 +561,8 @@ GLIBC_2.32 aio_read F
 GLIBC_2.32 aio_read64 F
 GLIBC_2.32 aio_return F
 GLIBC_2.32 aio_return64 F
+GLIBC_2.32 aio_suspend F
+GLIBC_2.32 aio_suspend64 F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
 GLIBC_2.32 alphasort F
@@ -2129,6 +2131,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 9cac9c759b..4eb7de36e1 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_suspend F
-GLIBC_2.32 aio_suspend64 F
 GLIBC_2.32 aio_write F
 GLIBC_2.32 aio_write64 F
 GLIBC_2.32 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 1928717cfd..9d9e4c6b73 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -192,6 +192,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -289,6 +290,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -1003,6 +1006,8 @@ GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
+GLIBC_2.4 aio_suspend F
+GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 05957aae03..7cb476c7b4 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_suspend F
-GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
 GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index bee5d9f757..a195587b66 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -189,6 +189,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -286,6 +287,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -1000,6 +1003,8 @@ GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
+GLIBC_2.4 aio_suspend F
+GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 05957aae03..7cb476c7b4 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_suspend F
-GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
 GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 753f54085a..1e3c73aa2d 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -575,6 +575,8 @@ GLIBC_2.29 aio_read F
 GLIBC_2.29 aio_read64 F
 GLIBC_2.29 aio_return F
 GLIBC_2.29 aio_return64 F
+GLIBC_2.29 aio_suspend F
+GLIBC_2.29 aio_suspend64 F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
 GLIBC_2.29 alphasort F
@@ -2292,6 +2294,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2389,6 +2392,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 74fc5621d6..fcc993f16f 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_suspend F
-GLIBC_2.29 aio_suspend64 F
 GLIBC_2.29 aio_write F
 GLIBC_2.29 aio_write64 F
 GLIBC_2.29 lio_listio F
@@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 4a96fcfb39..3e0ff7575e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -14,6 +14,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2246,6 +2248,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2343,6 +2346,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index b704bf4756..54b5ee4649 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1486,6 +1486,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2429,6 +2431,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2527,6 +2530,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 08bea0c72f..9aac5c8ff4 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -14,6 +14,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2303,6 +2305,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index ac9f293b6b..67435f760c 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 187672fa76..87baa69dfe 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -193,6 +193,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -290,6 +291,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -991,6 +994,8 @@ GLIBC_2.4 aio_read F
 GLIBC_2.4 aio_read64 F
 GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
+GLIBC_2.4 aio_suspend F
+GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 05957aae03..7cb476c7b4 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_suspend F
-GLIBC_2.4 aio_suspend64 F
 GLIBC_2.4 aio_write F
 GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 379779793c..68aa865da4 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2373,6 +2375,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2470,6 +2473,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 2fce5d9138..19aef593f3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -602,6 +602,8 @@ GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
+GLIBC_2.18 aio_suspend F
+GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2343,6 +2345,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2440,6 +2443,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 1503d19eae..06e862de52 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_suspend F
-GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 aio_write F
 GLIBC_2.18 aio_write64 F
 GLIBC_2.18 lio_listio F
@@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 6c3cd2a9e3..d5f26a2d9b 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -602,6 +602,8 @@ GLIBC_2.18 aio_read F
 GLIBC_2.18 aio_read64 F
 GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
+GLIBC_2.18 aio_suspend F
+GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2340,6 +2342,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2437,6 +2440,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 1503d19eae..06e862de52 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_suspend F
-GLIBC_2.18 aio_suspend64 F
 GLIBC_2.18 aio_write F
 GLIBC_2.18 aio_write64 F
 GLIBC_2.18 lio_listio F
@@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 46aa64baaa..ba77980ef8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1662,6 +1662,8 @@ GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
+GLIBC_2.2 aio_suspend F
+GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2338,6 +2340,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2435,6 +2438,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 2b7c3cabec..0a07f87ce9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_suspend F
-GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 169b386cc1..1e6c7a1eb3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1660,6 +1660,8 @@ GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
+GLIBC_2.2 aio_suspend F
+GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2336,6 +2338,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2433,6 +2436,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index ad52c15c3e..fd731ffed0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1661,6 +1661,8 @@ GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
+GLIBC_2.2 aio_suspend F
+GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2344,6 +2346,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2441,6 +2444,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 2b7c3cabec..0a07f87ce9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_suspend F
-GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 16a67a0d6d..9f82375689 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1657,6 +1657,8 @@ GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
+GLIBC_2.2 aio_suspend F
+GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2359,6 +2361,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 293b92eaec..7d7be4d9ec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_suspend F
-GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 3567fa8efc..77a0544dbf 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -644,6 +644,8 @@ GLIBC_2.21 aio_read F
 GLIBC_2.21 aio_read64 F
 GLIBC_2.21 aio_return F
 GLIBC_2.21 aio_return64 F
+GLIBC_2.21 aio_suspend F
+GLIBC_2.21 aio_suspend64 F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
 GLIBC_2.21 alphasort F
@@ -2382,6 +2384,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2479,6 +2482,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b63036c526..0db5142065 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_suspend F
-GLIBC_2.21 aio_suspend64 F
 GLIBC_2.21 aio_write F
 GLIBC_2.21 aio_write64 F
 GLIBC_2.21 lio_listio F
@@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 0b393c0a5a..ed6f66c610 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1491,6 +1491,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2400,6 +2402,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2497,6 +2500,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 0bc73512d3..817530d12f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1491,6 +1491,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2433,6 +2435,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2530,6 +2533,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 22d277a32e..40a27cfd26 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -644,6 +644,8 @@ GLIBC_2.3 aio_read F
 GLIBC_2.3 aio_read64 F
 GLIBC_2.3 aio_return F
 GLIBC_2.3 aio_return64 F
+GLIBC_2.3 aio_suspend F
+GLIBC_2.3 aio_suspend64 F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
 GLIBC_2.3 alphasort64 F
@@ -2267,6 +2269,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index b98e7cf9de..205c9536b4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_suspend F
-GLIBC_2.3 aio_suspend64 F
 GLIBC_2.3 aio_write F
 GLIBC_2.3 aio_write64 F
 GLIBC_2.3 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 15b0f5e367..208096bebf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -688,6 +688,8 @@ GLIBC_2.17 aio_read F
 GLIBC_2.17 aio_read64 F
 GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
+GLIBC_2.17 aio_suspend F
+GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2566,6 +2568,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 451560dc87..37ff014ed8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_suspend F
-GLIBC_2.17 aio_suspend64 F
 GLIBC_2.17 aio_write F
 GLIBC_2.17 aio_write64 F
 GLIBC_2.17 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 6003434931..20b4b7c0ad 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -555,6 +555,8 @@ GLIBC_2.33 aio_read F
 GLIBC_2.33 aio_read64 F
 GLIBC_2.33 aio_return F
 GLIBC_2.33 aio_return64 F
+GLIBC_2.33 aio_suspend F
+GLIBC_2.33 aio_suspend64 F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
 GLIBC_2.33 alphasort F
@@ -2131,6 +2133,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index dc23391407..51c25c849d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_suspend F
-GLIBC_2.33 aio_suspend64 F
 GLIBC_2.33 aio_write F
 GLIBC_2.33 aio_write64 F
 GLIBC_2.33 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 5041f05217..9675d2f767 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -581,6 +581,8 @@ GLIBC_2.27 aio_read F
 GLIBC_2.27 aio_read64 F
 GLIBC_2.27 aio_return F
 GLIBC_2.27 aio_return64 F
+GLIBC_2.27 aio_suspend F
+GLIBC_2.27 aio_suspend64 F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
 GLIBC_2.27 alphasort F
@@ -2331,6 +2333,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 5f1cecd612..7ccf2b6591 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_suspend F
-GLIBC_2.27 aio_suspend64 F
 GLIBC_2.27 aio_write F
 GLIBC_2.27 aio_write64 F
 GLIBC_2.27 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index ed6c511cc9..3f64ebb9bd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1483,6 +1483,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2398,6 +2400,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2495,6 +2498,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 9f1e31574e..f727420c0a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -581,6 +581,8 @@ GLIBC_2.2 aio_read F
 GLIBC_2.2 aio_read64 F
 GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
+GLIBC_2.2 aio_suspend F
+GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
 GLIBC_2.2 alphasort64 F
@@ -2304,6 +2306,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 2442ed5222..15c2ca3e70 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_suspend F
-GLIBC_2.2 aio_suspend64 F
 GLIBC_2.2 aio_write F
 GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index b9e583fa88..3aed85ad55 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2253,6 +2255,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2350,6 +2353,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 2f737fadb8..eed02a7f07 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2250,6 +2252,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2347,6 +2350,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 4cae24e768..b9b9b71dba 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index f4c87b4fa9..c627a8beb7 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1485,6 +1485,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2393,6 +2395,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __clock_adjtime64 F
 GLIBC_2.34 __clock_getres64 F
 GLIBC_2.34 __clock_gettime64 F
@@ -2490,6 +2493,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 6061373aae..13fff57eb0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
@@ -20,7 +18,6 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __aio_suspend_time64 F
 GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 03acd40463..574b4ef2c1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
 GLIBC_2.1 aio_read64 F
 GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
+GLIBC_2.1 aio_suspend F
+GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2326,6 +2328,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 90a66e4a4b..8a8fe654e0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_suspend F
-GLIBC_2.1 aio_suspend64 F
 GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index f81fe5301d..6e3c1ce83b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -570,6 +570,8 @@ GLIBC_2.2.5 aio_read F
 GLIBC_2.2.5 aio_read64 F
 GLIBC_2.2.5 aio_return F
 GLIBC_2.2.5 aio_return64 F
+GLIBC_2.2.5 aio_suspend F
+GLIBC_2.2.5 aio_suspend64 F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
 GLIBC_2.2.5 alphasort64 F
@@ -2282,6 +2284,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 62fe3da2cb..c2e8ab87d0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_suspend F
-GLIBC_2.2.5 aio_suspend64 F
 GLIBC_2.2.5 aio_write F
 GLIBC_2.2.5 aio_write64 F
 GLIBC_2.2.5 lio_listio F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 45d74a3958..42376975e6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -603,6 +603,8 @@ GLIBC_2.16 aio_read F
 GLIBC_2.16 aio_read64 F
 GLIBC_2.16 aio_return F
 GLIBC_2.16 aio_return64 F
+GLIBC_2.16 aio_suspend F
+GLIBC_2.16 aio_suspend64 F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
 GLIBC_2.16 alphasort F
@@ -2385,6 +2387,8 @@ GLIBC_2.34 aio_read F
 GLIBC_2.34 aio_read64 F
 GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
+GLIBC_2.34 aio_suspend F
+GLIBC_2.34 aio_suspend64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index a531990038..f7245c6716 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_suspend F
-GLIBC_2.16 aio_suspend64 F
 GLIBC_2.16 aio_write F
 GLIBC_2.16 aio_write64 F
 GLIBC_2.16 lio_listio F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (15 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 20:02   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 18/34] rt: Rework lio_listio implementation Florian Weimer
                   ` (17 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

Both symbols have to be moved at the same time because they
are intertwined for __WORDSIZE == 64.  The treatment of this case
is also changed to match more closely how the other files suppress
the declaration of the *64 identifier.

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                   |  4 +-
 rt/Versions                                   |  6 ++-
 rt/aio_write.c                                | 37 +++++++++++++++++--
 rt/aio_write64.c                              | 22 ++++++++---
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 -
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  2 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../unix/sysv/linux/wordsize-64/aio_write.c   |  7 ----
 .../unix/sysv/linux/wordsize-64/aio_write64.c |  1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 68 files changed, 186 insertions(+), 79 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c

diff --git a/rt/Makefile b/rt/Makefile
index b375d37ba2..55ebfde457 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -29,8 +29,6 @@ routines = \
   shm_unlink \
 
 librt-routines = \
-  aio_write \
-  aio_write64 \
   librt-compat \
   lio_listio \
   lio_listio64 \
@@ -63,6 +61,8 @@ $(librt-routines-var) += \
   aio_return \
   aio_sigqueue \
   aio_suspend \
+  aio_write \
+  aio_write64 \
 
 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 d54b9cc4bf..f2b4ced257 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -14,6 +14,8 @@ libc {
     aio_return64;
     aio_suspend;
     aio_suspend64;
+    aio_write;
+    aio_write64;
 %endif
   }
   GLIBC_2.2 {
@@ -35,6 +37,8 @@ libc {
     aio_return64;
     aio_suspend;
     aio_suspend64;
+    aio_write;
+    aio_write64;
 %endif
     shm_open;
     shm_unlink;
@@ -69,9 +73,9 @@ librt {
     aio_return64;
     aio_suspend;
     aio_suspend64;
-%endif
     aio_write;
     aio_write64;
+%endif
     lio_listio;
     lio_listio64;
   }
diff --git a/rt/aio_write.c b/rt/aio_write.c
index ea55f0dbbc..ad50bc9282 100644
--- a/rt/aio_write.c
+++ b/rt/aio_write.c
@@ -17,14 +17,45 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
+#include <bits/wordsize.h>
+#if __WORDSIZE == 64
+/* We use an UGLY hack to prevent gcc from finding us cheating.  The
+   implementation of aio_write and aio_write64 are identical and so
+   we want to avoid code duplication by using aliases.  But gcc sees
+   the different parameter lists and prints a warning.  We define here
+   a function so that aio_write64 has no prototype.  */
+# define aio_write64 XXX
+# include <aio.h>
+/* And undo the hack.  */
+# undef aio_write64
+#else
+# include <aio.h>
+#endif
 
 #include <aio_misc.h>
-
+#include <shlib-compat.h>
 
 int
-aio_write (struct aiocb *aiocbp)
+__aio_write (struct aiocb *aiocbp)
 {
   return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
 	  ? -1 : 0);
 }
+
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_write, aio_write, GLIBC_2_34);
+# if __WORDSIZE == 64
+versioned_symbol (libc, __aio_write, aio_write64, GLIBC_2_34);
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_write, aio_write, GLIBC_2_1);
+#  if __WORDSIZE == 64
+compat_symbol (librt, __aio_write, aio_write64, GLIBC_2_1);
+#  endif
+# endif
+#else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_write, aio_write)
+# if __WORDSIZE == 64
+weak_alias (__aio_write, aio_write64)
+#endif
+#endif  /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_write64.c b/rt/aio_write64.c
index bd6dd316be..5660fa5a41 100644
--- a/rt/aio_write64.c
+++ b/rt/aio_write64.c
@@ -1,4 +1,4 @@
-/* Asynchronous write, 64bit offset version.
+/* Asynchronous read, 64bit offset version.
    Copyright (C) 1997-2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -17,14 +17,26 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
-
-#include <aio_misc.h>
+#include <bits/wordsize.h>
+#if __WORDSIZE != 64
 
+# include <aio.h>
+# include <aio_misc.h>
+# include <shlib-compat.h>
 
 int
-aio_write64 (struct aiocb64 *aiocbp)
+__aio_write64 (struct aiocb64 *aiocbp)
 {
   return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
 	  ? -1 : 0);
 }
+
+# if PTHREAD_IN_LIBC
+versioned_symbol (libc, __aio_write64, aio_write64, GLIBC_2_34);
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (librt, __aio_write64, aio_write64, GLIBC_2_1);
+#  endif
+# else /* !PTHREAD_IN_LIBC */
+strong_alias (__aio_write64, aio_write64)
+# endif
+#endif /* __WORDSIZE != 64 */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 6c76d0df61..880dc08ffa 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -602,6 +602,8 @@ GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
 GLIBC_2.17 aio_suspend64 F
+GLIBC_2.17 aio_write F
+GLIBC_2.17 aio_write64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2374,6 +2376,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 37ff014ed8..66c645887e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_write F
-GLIBC_2.17 aio_write64 F
 GLIBC_2.17 lio_listio F
 GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 mq_close F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index e7f0e1b49a..45ba500389 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1515,6 +1515,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2469,6 +2471,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 8a8fe654e0..89a7344c1c 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index cf93d14e6f..fdfe20796b 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -563,6 +563,8 @@ GLIBC_2.32 aio_return F
 GLIBC_2.32 aio_return64 F
 GLIBC_2.32 aio_suspend F
 GLIBC_2.32 aio_suspend64 F
+GLIBC_2.32 aio_write F
+GLIBC_2.32 aio_write64 F
 GLIBC_2.32 alarm F
 GLIBC_2.32 aligned_alloc F
 GLIBC_2.32 alphasort F
@@ -2133,6 +2135,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 4eb7de36e1..780fb36a31 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 aio_write F
-GLIBC_2.32 aio_write64 F
 GLIBC_2.32 lio_listio F
 GLIBC_2.32 lio_listio64 F
 GLIBC_2.32 mq_close F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 9d9e4c6b73..8e6cb9ad9d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -292,6 +292,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -1008,6 +1010,8 @@ GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
+GLIBC_2.4 aio_write F
+GLIBC_2.4 aio_write64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 7cb476c7b4..5c655ba14e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_write F
-GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index a195587b66..58190af9e0 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -289,6 +289,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -1005,6 +1007,8 @@ GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
+GLIBC_2.4 aio_write F
+GLIBC_2.4 aio_write64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 7cb476c7b4..5c655ba14e 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_write F
-GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 1e3c73aa2d..4ebfe66490 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -577,6 +577,8 @@ GLIBC_2.29 aio_return F
 GLIBC_2.29 aio_return64 F
 GLIBC_2.29 aio_suspend F
 GLIBC_2.29 aio_suspend64 F
+GLIBC_2.29 aio_write F
+GLIBC_2.29 aio_write64 F
 GLIBC_2.29 alarm F
 GLIBC_2.29 aligned_alloc F
 GLIBC_2.29 alphasort F
@@ -2394,6 +2396,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index fcc993f16f..e8bf05dae6 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 aio_write F
-GLIBC_2.29 aio_write64 F
 GLIBC_2.29 lio_listio F
 GLIBC_2.29 lio_listio64 F
 GLIBC_2.29 mq_close F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 3e0ff7575e..685eab4532 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -16,6 +16,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2348,6 +2350,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 54b5ee4649..19b2f11845 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1488,6 +1488,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2532,6 +2534,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 9aac5c8ff4..8d9f6ff3b6 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -16,6 +16,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2307,6 +2309,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 67435f760c..1eef73b204 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 87baa69dfe..2ab4862211 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -293,6 +293,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
@@ -996,6 +998,8 @@ GLIBC_2.4 aio_return F
 GLIBC_2.4 aio_return64 F
 GLIBC_2.4 aio_suspend F
 GLIBC_2.4 aio_suspend64 F
+GLIBC_2.4 aio_write F
+GLIBC_2.4 aio_write64 F
 GLIBC_2.4 alarm F
 GLIBC_2.4 alphasort F
 GLIBC_2.4 alphasort64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 7cb476c7b4..5c655ba14e 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 aio_write F
-GLIBC_2.4 aio_write64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 68aa865da4..f4ee74ce72 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1486,6 +1486,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2475,6 +2477,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 19aef593f3..d0dcf88270 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -604,6 +604,8 @@ GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
 GLIBC_2.18 aio_suspend64 F
+GLIBC_2.18 aio_write F
+GLIBC_2.18 aio_write64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2445,6 +2447,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 06e862de52..5a24a449c8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_write F
-GLIBC_2.18 aio_write64 F
 GLIBC_2.18 lio_listio F
 GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 mq_close F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d5f26a2d9b..a5a1b7ddc4 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -604,6 +604,8 @@ GLIBC_2.18 aio_return F
 GLIBC_2.18 aio_return64 F
 GLIBC_2.18 aio_suspend F
 GLIBC_2.18 aio_suspend64 F
+GLIBC_2.18 aio_write F
+GLIBC_2.18 aio_write64 F
 GLIBC_2.18 alarm F
 GLIBC_2.18 aligned_alloc F
 GLIBC_2.18 alphasort F
@@ -2442,6 +2444,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 06e862de52..5a24a449c8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 aio_write F
-GLIBC_2.18 aio_write64 F
 GLIBC_2.18 lio_listio F
 GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 mq_close F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ba77980ef8..a6d55c9639 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1664,6 +1664,8 @@ GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
+GLIBC_2.2 aio_write F
+GLIBC_2.2 aio_write64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2440,6 +2442,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 0a07f87ce9..1d8e4643b5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_write F
-GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 1e6c7a1eb3..4f72d3c617 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1662,6 +1662,8 @@ GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
+GLIBC_2.2 aio_write F
+GLIBC_2.2 aio_write64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2438,6 +2440,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index fd731ffed0..216e8fbe03 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1663,6 +1663,8 @@ GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
+GLIBC_2.2 aio_write F
+GLIBC_2.2 aio_write64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2446,6 +2448,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 0a07f87ce9..1d8e4643b5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_write F
-GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9f82375689..9671631450 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1659,6 +1659,8 @@ GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
+GLIBC_2.2 aio_write F
+GLIBC_2.2 aio_write64 F
 GLIBC_2.2 alphasort64 F
 GLIBC_2.2 argp_err_exit_status D 0x4
 GLIBC_2.2 argp_error F
@@ -2363,6 +2365,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 7d7be4d9ec..f2cda0ef51 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_write F
-GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 77a0544dbf..6d105407dd 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -646,6 +646,8 @@ GLIBC_2.21 aio_return F
 GLIBC_2.21 aio_return64 F
 GLIBC_2.21 aio_suspend F
 GLIBC_2.21 aio_suspend64 F
+GLIBC_2.21 aio_write F
+GLIBC_2.21 aio_write64 F
 GLIBC_2.21 alarm F
 GLIBC_2.21 aligned_alloc F
 GLIBC_2.21 alphasort F
@@ -2484,6 +2486,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 0db5142065..dc18b0dc39 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 aio_write F
-GLIBC_2.21 aio_write64 F
 GLIBC_2.21 lio_listio F
 GLIBC_2.21 lio_listio64 F
 GLIBC_2.21 mq_close F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index ed6f66c610..783ce5aa8e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1493,6 +1493,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2502,6 +2504,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 817530d12f..badcc67295 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1493,6 +1493,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2535,6 +2537,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 40a27cfd26..838b3323f1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -646,6 +646,8 @@ GLIBC_2.3 aio_return F
 GLIBC_2.3 aio_return64 F
 GLIBC_2.3 aio_suspend F
 GLIBC_2.3 aio_suspend64 F
+GLIBC_2.3 aio_write F
+GLIBC_2.3 aio_write64 F
 GLIBC_2.3 alarm F
 GLIBC_2.3 alphasort F
 GLIBC_2.3 alphasort64 F
@@ -2271,6 +2273,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 205c9536b4..dcbadb2a1b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 aio_write F
-GLIBC_2.3 aio_write64 F
 GLIBC_2.3 lio_listio F
 GLIBC_2.3 lio_listio64 F
 GLIBC_2.3 timer_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 208096bebf..b51ebf0861 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -690,6 +690,8 @@ GLIBC_2.17 aio_return F
 GLIBC_2.17 aio_return64 F
 GLIBC_2.17 aio_suspend F
 GLIBC_2.17 aio_suspend64 F
+GLIBC_2.17 aio_write F
+GLIBC_2.17 aio_write64 F
 GLIBC_2.17 alarm F
 GLIBC_2.17 aligned_alloc F
 GLIBC_2.17 alphasort F
@@ -2570,6 +2572,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 37ff014ed8..66c645887e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 aio_write F
-GLIBC_2.17 aio_write64 F
 GLIBC_2.17 lio_listio F
 GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 mq_close F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 20b4b7c0ad..caed7efe2b 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -557,6 +557,8 @@ GLIBC_2.33 aio_return F
 GLIBC_2.33 aio_return64 F
 GLIBC_2.33 aio_suspend F
 GLIBC_2.33 aio_suspend64 F
+GLIBC_2.33 aio_write F
+GLIBC_2.33 aio_write64 F
 GLIBC_2.33 alarm F
 GLIBC_2.33 aligned_alloc F
 GLIBC_2.33 alphasort F
@@ -2135,6 +2137,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 51c25c849d..82f04551d5 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 aio_write F
-GLIBC_2.33 aio_write64 F
 GLIBC_2.33 lio_listio F
 GLIBC_2.33 lio_listio64 F
 GLIBC_2.33 mq_close F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 9675d2f767..e9574cf0e4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -583,6 +583,8 @@ GLIBC_2.27 aio_return F
 GLIBC_2.27 aio_return64 F
 GLIBC_2.27 aio_suspend F
 GLIBC_2.27 aio_suspend64 F
+GLIBC_2.27 aio_write F
+GLIBC_2.27 aio_write64 F
 GLIBC_2.27 alarm F
 GLIBC_2.27 aligned_alloc F
 GLIBC_2.27 alphasort F
@@ -2335,6 +2337,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 7ccf2b6591..044eace5c3 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 aio_write F
-GLIBC_2.27 aio_write64 F
 GLIBC_2.27 lio_listio F
 GLIBC_2.27 lio_listio64 F
 GLIBC_2.27 mq_close F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 3f64ebb9bd..28f002dcd8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1485,6 +1485,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2500,6 +2502,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index f727420c0a..2d6d3fd601 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -583,6 +583,8 @@ GLIBC_2.2 aio_return F
 GLIBC_2.2 aio_return64 F
 GLIBC_2.2 aio_suspend F
 GLIBC_2.2 aio_suspend64 F
+GLIBC_2.2 aio_write F
+GLIBC_2.2 aio_write64 F
 GLIBC_2.2 alarm F
 GLIBC_2.2 alphasort F
 GLIBC_2.2 alphasort64 F
@@ -2308,6 +2310,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 15c2ca3e70..03aed4d0f7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 aio_write F
-GLIBC_2.2 aio_write64 F
 GLIBC_2.2 lio_listio F
 GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 3aed85ad55..327cc0812d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2355,6 +2357,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eed02a7f07..4993b24e22 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2352,6 +2354,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index b9b9b71dba..eb80c67c84 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c627a8beb7..e48e78079f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 alphasort64 F
 GLIBC_2.1 argp_err_exit_status D 0x4
 GLIBC_2.1 argp_error F
@@ -2495,6 +2497,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 13fff57eb0..3c39a8ba0a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 574b4ef2c1..85a4dfa37c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
 GLIBC_2.1 aio_return64 F
 GLIBC_2.1 aio_suspend F
 GLIBC_2.1 aio_suspend64 F
+GLIBC_2.1 aio_write F
+GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2330,6 +2332,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 8a8fe654e0..89a7344c1c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.1 aio_write F
-GLIBC_2.1 aio_write64 F
 GLIBC_2.1 lio_listio F
 GLIBC_2.1 lio_listio64 F
 GLIBC_2.2 timer_create F
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
deleted file mode 100644
index 60d242f88f..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#define aio_write64 __renamed_aio_write64
-
-#include <rt/aio_write.c>
-
-#undef aio_write64
-
-weak_alias (aio_write, aio_write64)
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
deleted file mode 100644
index ced07fa273..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in aio_write.c.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 6e3c1ce83b..c95b54fad3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -572,6 +572,8 @@ GLIBC_2.2.5 aio_return F
 GLIBC_2.2.5 aio_return64 F
 GLIBC_2.2.5 aio_suspend F
 GLIBC_2.2.5 aio_suspend64 F
+GLIBC_2.2.5 aio_write F
+GLIBC_2.2.5 aio_write64 F
 GLIBC_2.2.5 alarm F
 GLIBC_2.2.5 alphasort F
 GLIBC_2.2.5 alphasort64 F
@@ -2286,6 +2288,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index c2e8ab87d0..974a0bf943 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 aio_write F
-GLIBC_2.2.5 aio_write64 F
 GLIBC_2.2.5 lio_listio F
 GLIBC_2.2.5 lio_listio64 F
 GLIBC_2.2.5 timer_create F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 42376975e6..c543baf92b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -605,6 +605,8 @@ GLIBC_2.16 aio_return F
 GLIBC_2.16 aio_return64 F
 GLIBC_2.16 aio_suspend F
 GLIBC_2.16 aio_suspend64 F
+GLIBC_2.16 aio_write F
+GLIBC_2.16 aio_write64 F
 GLIBC_2.16 alarm F
 GLIBC_2.16 aligned_alloc F
 GLIBC_2.16 alphasort F
@@ -2389,6 +2391,8 @@ GLIBC_2.34 aio_return F
 GLIBC_2.34 aio_return64 F
 GLIBC_2.34 aio_suspend F
 GLIBC_2.34 aio_suspend64 F
+GLIBC_2.34 aio_write F
+GLIBC_2.34 aio_write64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index f7245c6716..42f733844b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 aio_write F
-GLIBC_2.16 aio_write64 F
 GLIBC_2.16 lio_listio F
 GLIBC_2.16 lio_listio64 F
 GLIBC_2.16 mq_close F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 18/34] rt: Rework lio_listio implementation
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (16 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 20:10   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
                   ` (16 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

Move the common code into rt/lio_listio-common.c and include
the file in both rt/lio_listio.c and rt/lio_listio64.c.  The common
code automatically defines both public symbols for __WORDSIZE == 64.
---
 rt/lio_listio-common.c                        | 275 ++++++++++++++++++
 rt/lio_listio.c                               | 235 +--------------
 rt/lio_listio64.c                             |  27 +-
 .../unix/sysv/linux/wordsize-64/lio_listio.c  |  13 -
 .../sysv/linux/wordsize-64/lio_listio64.c     |   1 -
 5 files changed, 292 insertions(+), 259 deletions(-)
 create mode 100644 rt/lio_listio-common.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c

diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
new file mode 100644
index 0000000000..a85753823f
--- /dev/null
+++ b/rt/lio_listio-common.c
@@ -0,0 +1,275 @@
+/* Enqueue and list of read or write requests.  Common code template.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   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/>.  */
+
+/* The following macros must be defined before including this file:
+
+   LIO_LISTIO         The public symbol (lio_listio or lio_listio64).
+   AIOCB              Struct tag used by LIO_LISTIO (aiocb or aiocb64).
+   LIO_LISTIO_OLD     The internal symbol for the compat implementation.
+   LIO_LISTIO_NEW     The internal symbol for the current implementation.
+   LIO_OPCODE_BASE    Opcode shift for 64-bit version with 32-bit word size.
+
+   For __WORDSIZE == 64, LIO_LISTIO must always be lio_listio, and
+   lio_listio64 is automatically defined as well.  */
+
+#include <bits/wordsize.h>
+#if __WORDSIZE == 64
+/* We use an UGLY hack to prevent gcc from finding us cheating.  The
+   implementation of lio_listio and lio_listio64 are identical and so
+   we want to avoid code duplication by using aliases.  But gcc sees
+   the different parameter lists and prints a warning.  We define here
+   a function so that lio_listio64 has no prototype.  */
+# define lio_listio64 XXX
+# include <aio.h>
+/* And undo the hack.  */
+# undef lio_listio64
+#else
+# include <aio.h>
+#endif
+
+#include <assert.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <aio_misc.h>
+
+#include <shlib-compat.h>
+
+
+/* We need this special structure to handle asynchronous I/O.  */
+struct async_waitlist
+  {
+    unsigned int counter;
+    struct sigevent sigev;
+    struct waitlist list[0];
+  };
+
+
+/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
+   requests submitted with lio_listio finished.  The existing practice
+   is to issue events for the individual requests as well.  This is
+   what the new code does.  */
+#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
+# define LIO_MODE(mode) ((mode) & 127)
+# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
+#else
+# define LIO_MODE(mode) mode
+# define NO_INDIVIDUAL_EVENT_P(mode) 0
+#endif
+
+
+static int
+lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
+		     struct sigevent *sig)
+{
+  struct sigevent defsigev;
+  struct requestlist *requests[nent];
+  int cnt;
+  volatile unsigned int total = 0;
+  int result = 0;
+
+  if (sig == NULL)
+    {
+      defsigev.sigev_notify = SIGEV_NONE;
+      sig = &defsigev;
+    }
+
+  /* Request the mutex.  */
+  pthread_mutex_lock (&__aio_requests_mutex);
+
+  /* Now we can enqueue all requests.  Since we already acquired the
+     mutex the enqueue function need not do this.  */
+  for (cnt = 0; cnt < nent; ++cnt)
+    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
+      {
+	if (NO_INDIVIDUAL_EVENT_P (mode))
+	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
+
+	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
+					       (list[cnt]->aio_lio_opcode
+						| LIO_OPCODE_BASE));
+
+	if (requests[cnt] != NULL)
+	  /* Successfully enqueued.  */
+	  ++total;
+	else
+	  /* Signal that we've seen an error.  `errno' and the error code
+	     of the aiocb will tell more.  */
+	  result = -1;
+      }
+    else
+      requests[cnt] = NULL;
+
+  if (total == 0)
+    {
+      /* We don't have anything to do except signalling if we work
+	 asynchronously.  */
+
+      /* Release the mutex.  We do this before raising a signal since the
+	 signal handler might do a `siglongjmp' and then the mutex is
+	 locked forever.  */
+      pthread_mutex_unlock (&__aio_requests_mutex);
+
+      if (LIO_MODE (mode) == LIO_NOWAIT)
+	__aio_notify_only (sig);
+
+      return result;
+    }
+  else if (LIO_MODE (mode) == LIO_WAIT)
+    {
+#ifndef DONT_NEED_AIO_MISC_COND
+      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+      int oldstate;
+#endif
+      struct waitlist waitlist[nent];
+
+      total = 0;
+      for (cnt = 0; cnt < nent; ++cnt)
+	{
+	  assert (requests[cnt] == NULL || list[cnt] != NULL);
+
+	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
+	    {
+#ifndef DONT_NEED_AIO_MISC_COND
+	      waitlist[cnt].cond = &cond;
+#endif
+	      waitlist[cnt].result = &result;
+	      waitlist[cnt].next = requests[cnt]->waiting;
+	      waitlist[cnt].counterp = &total;
+	      waitlist[cnt].sigevp = NULL;
+	      requests[cnt]->waiting = &waitlist[cnt];
+	      ++total;
+	    }
+	}
+
+#ifdef DONT_NEED_AIO_MISC_COND
+      AIO_MISC_WAIT (result, total, NULL, 0);
+#else
+      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
+	 points we must be careful.  We added entries to the waiting lists
+	 which we must remove.  So defer cancellation for now.  */
+      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
+
+      while (total > 0)
+	pthread_cond_wait (&cond, &__aio_requests_mutex);
+
+      /* Now it's time to restore the cancellation state.  */
+      pthread_setcancelstate (oldstate, NULL);
+
+      /* Release the conditional variable.  */
+      if (pthread_cond_destroy (&cond) != 0)
+	/* This must never happen.  */
+	abort ();
+#endif
+
+      /* If any of the I/O requests failed, return -1 and set errno.  */
+      if (result != 0)
+	{
+	  __set_errno (result == EINTR ? EINTR : EIO);
+	  result = -1;
+	}
+    }
+  else
+    {
+      struct async_waitlist *waitlist;
+
+      waitlist = (struct async_waitlist *)
+	malloc (sizeof (struct async_waitlist)
+		+ (nent * sizeof (struct waitlist)));
+
+      if (waitlist == NULL)
+	{
+	  __set_errno (EAGAIN);
+	  result = -1;
+	}
+      else
+	{
+	  total = 0;
+
+	  for (cnt = 0; cnt < nent; ++cnt)
+	    {
+	      assert (requests[cnt] == NULL || list[cnt] != NULL);
+
+	      if (requests[cnt] != NULL
+		  && list[cnt]->aio_lio_opcode != LIO_NOP)
+		{
+#ifndef DONT_NEED_AIO_MISC_COND
+		  waitlist->list[cnt].cond = NULL;
+#endif
+		  waitlist->list[cnt].result = NULL;
+		  waitlist->list[cnt].next = requests[cnt]->waiting;
+		  waitlist->list[cnt].counterp = &waitlist->counter;
+		  waitlist->list[cnt].sigevp = &waitlist->sigev;
+		  requests[cnt]->waiting = &waitlist->list[cnt];
+		  ++total;
+		}
+	    }
+
+	  waitlist->counter = total;
+	  waitlist->sigev = *sig;
+	}
+    }
+
+  /* Release the mutex.  */
+  pthread_mutex_unlock (&__aio_requests_mutex);
+
+  return result;
+}
+
+
+#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
+int
+attribute_compat_text_section
+LIO_LISTIO_OLD (int mode, struct AIOCB *const list[], int nent,
+                struct sigevent *sig)
+{
+  /* Check arguments.  */
+  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
+}
+compat_symbol (librt, LIO_LISTIO_OLD, LIO_LISTIO, GLIBC_2_1);
+# if __WORDSIZE == 64
+compat_symbol (librt, LIO_LISTIO_OLD, lio_listio64, GLIBC_2_1);
+# endif
+#endif /* SHLIB_COMPAT */
+
+
+int
+LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int nent,
+                struct sigevent *sig)
+{
+    /* Check arguments.  */
+  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return lio_listio_internal (mode, list, nent, sig);
+}
+versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
+#if __WORDSIZE == 64
+versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
+#endif
diff --git a/rt/lio_listio.c b/rt/lio_listio.c
index 2cab3c2254..bcc3bb1393 100644
--- a/rt/lio_listio.c
+++ b/rt/lio_listio.c
@@ -1,7 +1,6 @@
 /* Enqueue and list of read or write requests.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   Copyright (C) 2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -17,232 +16,10 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#ifndef lio_listio
-#include <aio.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <aio_misc.h>
-
+#define LIO_LISTIO lio_listio
+#define AIOCB aiocb
+#define LIO_LISTIO_OLD __lio_listio_21
+#define LIO_LISTIO_NEW __lio_listio_24
 #define LIO_OPCODE_BASE 0
-#endif
-
-#include <shlib-compat.h>
-
-
-/* We need this special structure to handle asynchronous I/O.  */
-struct async_waitlist
-  {
-    unsigned int counter;
-    struct sigevent sigev;
-    struct waitlist list[0];
-  };
-
-
-/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
-   requests submitted with lio_listio finished.  The existing practice
-   is to issue events for the individual requests as well.  This is
-   what the new code does.  */
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
-# define LIO_MODE(mode) ((mode) & 127)
-# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
-#else
-# define LIO_MODE(mode) mode
-# define NO_INDIVIDUAL_EVENT_P(mode) 0
-#endif
-
-
-static int
-lio_listio_internal (int mode, struct aiocb *const list[], int nent,
-		     struct sigevent *sig)
-{
-  struct sigevent defsigev;
-  struct requestlist *requests[nent];
-  int cnt;
-  volatile unsigned int total = 0;
-  int result = 0;
-
-  if (sig == NULL)
-    {
-      defsigev.sigev_notify = SIGEV_NONE;
-      sig = &defsigev;
-    }
-
-  /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
-
-  /* Now we can enqueue all requests.  Since we already acquired the
-     mutex the enqueue function need not do this.  */
-  for (cnt = 0; cnt < nent; ++cnt)
-    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
-      {
-	if (NO_INDIVIDUAL_EVENT_P (mode))
-	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
-
-	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
-					       (list[cnt]->aio_lio_opcode
-						| LIO_OPCODE_BASE));
-
-	if (requests[cnt] != NULL)
-	  /* Successfully enqueued.  */
-	  ++total;
-	else
-	  /* Signal that we've seen an error.  `errno' and the error code
-	     of the aiocb will tell more.  */
-	  result = -1;
-      }
-    else
-      requests[cnt] = NULL;
-
-  if (total == 0)
-    {
-      /* We don't have anything to do except signalling if we work
-	 asynchronously.  */
-
-      /* Release the mutex.  We do this before raising a signal since the
-	 signal handler might do a `siglongjmp' and then the mutex is
-	 locked forever.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
-
-      if (LIO_MODE (mode) == LIO_NOWAIT)
-	__aio_notify_only (sig);
-
-      return result;
-    }
-  else if (LIO_MODE (mode) == LIO_WAIT)
-    {
-#ifndef DONT_NEED_AIO_MISC_COND
-      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
-      int oldstate;
-#endif
-      struct waitlist waitlist[nent];
-
-      total = 0;
-      for (cnt = 0; cnt < nent; ++cnt)
-	{
-	  assert (requests[cnt] == NULL || list[cnt] != NULL);
-
-	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
-	    {
-#ifndef DONT_NEED_AIO_MISC_COND
-	      waitlist[cnt].cond = &cond;
-#endif
-	      waitlist[cnt].result = &result;
-	      waitlist[cnt].next = requests[cnt]->waiting;
-	      waitlist[cnt].counterp = &total;
-	      waitlist[cnt].sigevp = NULL;
-	      requests[cnt]->waiting = &waitlist[cnt];
-	      ++total;
-	    }
-	}
-
-#ifdef DONT_NEED_AIO_MISC_COND
-      AIO_MISC_WAIT (result, total, NULL, 0);
-#else
-      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
-	 points we must be careful.  We added entries to the waiting lists
-	 which we must remove.  So defer cancellation for now.  */
-      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
-
-      while (total > 0)
-	pthread_cond_wait (&cond, &__aio_requests_mutex);
-
-      /* Now it's time to restore the cancellation state.  */
-      pthread_setcancelstate (oldstate, NULL);
-
-      /* Release the conditional variable.  */
-      if (pthread_cond_destroy (&cond) != 0)
-	/* This must never happen.  */
-	abort ();
-#endif
-
-      /* If any of the I/O requests failed, return -1 and set errno.  */
-      if (result != 0)
-	{
-	  __set_errno (result == EINTR ? EINTR : EIO);
-	  result = -1;
-	}
-    }
-  else
-    {
-      struct async_waitlist *waitlist;
-
-      waitlist = (struct async_waitlist *)
-	malloc (sizeof (struct async_waitlist)
-		+ (nent * sizeof (struct waitlist)));
-
-      if (waitlist == NULL)
-	{
-	  __set_errno (EAGAIN);
-	  result = -1;
-	}
-      else
-	{
-	  total = 0;
-
-	  for (cnt = 0; cnt < nent; ++cnt)
-	    {
-	      assert (requests[cnt] == NULL || list[cnt] != NULL);
-
-	      if (requests[cnt] != NULL
-		  && list[cnt]->aio_lio_opcode != LIO_NOP)
-		{
-#ifndef DONT_NEED_AIO_MISC_COND
-		  waitlist->list[cnt].cond = NULL;
-#endif
-		  waitlist->list[cnt].result = NULL;
-		  waitlist->list[cnt].next = requests[cnt]->waiting;
-		  waitlist->list[cnt].counterp = &waitlist->counter;
-		  waitlist->list[cnt].sigevp = &waitlist->sigev;
-		  requests[cnt]->waiting = &waitlist->list[cnt];
-		  ++total;
-		}
-	    }
-
-	  waitlist->counter = total;
-	  waitlist->sigev = *sig;
-	}
-    }
-
-  /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
-
-  return result;
-}
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
-int
-attribute_compat_text_section
-__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
-		 struct sigevent *sig)
-{
-  /* Check arguments.  */
-  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
-}
-compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
-#endif
-
-
-int
-__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
-			  struct sigevent *sig)
-{
-    /* Check arguments.  */
-  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
 
-  return lio_listio_internal (mode, list, nent, sig);
-}
-versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
+#include "lio_listio-common.c"
diff --git a/rt/lio_listio64.c b/rt/lio_listio64.c
index 111c883a2f..597bf733a2 100644
--- a/rt/lio_listio64.c
+++ b/rt/lio_listio64.c
@@ -1,7 +1,6 @@
-/* Enqueue and list of read or write requests, 64bit offset version.
-   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+/* Enqueue and list of read or write requests.
+   Copyright (C) 2021 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -17,17 +16,13 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <aio.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include <bits/wordsize.h>
+#if __WORDSIZE != 64
+# define AIOCB aiocb64
+# define LIO_LISTIO lio_listio64
+# define LIO_LISTIO_OLD __lio_listio64_21
+# define LIO_LISTIO_NEW __lio_listio64_24
+# define LIO_OPCODE_BASE 128
 
-#include <aio_misc.h>
-
-#define lio_listio lio_listio64
-#define __lio_listio_21 __lio_listio64_21
-#define __lio_listio_item_notify __lio_listio64_item_notify
-#define aiocb aiocb64
-#define LIO_OPCODE_BASE 128
-#include <lio_listio.c>
+# include "lio_listio-common.c"
+#endif
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
deleted file mode 100644
index be9fe7a9c7..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#define lio_listio64 __renamed_lio_listio64
-
-#include <rt/lio_listio.c>
-
-#undef lio_listio64
-
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
-strong_alias (__lio_listio_21, __lio_listio64_21)
-compat_symbol (librt, __lio_listio64_21, lio_listio64, GLIBC_2_1);
-#endif
-
-strong_alias (__lio_listio_item_notify, __lio_listio64_item_notify)
-versioned_symbol (librt, __lio_listio64_item_notify, lio_listio64, GLIBC_2_4);
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
deleted file mode 100644
index 1dabae3692..0000000000
--- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in lio_listio.c.  */
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (17 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 18/34] rt: Rework lio_listio implementation Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-23 20:12   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 20/34] Linux: Move mq_close " Florian Weimer
                   ` (15 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
Placeholder symbols are needed on some architectures, to keep the
GLIBC_2.1 and GLIBC_2.4 symbol versions around.
---
 rt/Makefile                                   |  4 +--
 rt/Versions                                   | 20 +++++++++++--
 rt/librt-compat.c                             | 12 ++++++++
 rt/lio_listio-common.c                        | 29 ++++++++++++++-----
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 +++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  6 ++--
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 +++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  6 ++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  6 ++--
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  6 ++++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  6 ++--
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  6 ++++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  6 ++--
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 +++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  6 ++++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  6 ++--
 .../sysv/linux/microblaze/be/libc.abilist     |  4 +++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 --
 .../sysv/linux/microblaze/le/libc.abilist     |  4 +++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  6 ++++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  5 +---
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  6 ++++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  6 ++++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  5 +---
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  6 ++++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  5 +---
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  6 ++++
 .../linux/powerpc/powerpc32/librt.abilist     |  6 ++--
 .../powerpc/powerpc32/nofpu/libc.abilist      |  6 ++++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  6 ++++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  5 +---
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 +++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 +++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 +++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  6 ++++
 .../sysv/linux/s390/s390-32/librt.abilist     |  6 ++--
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  6 ++++
 .../sysv/linux/s390/s390-64/librt.abilist     |  5 +---
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  6 ++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  6 ++--
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  6 ++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  6 ++--
 .../sysv/linux/sparc/sparc32/libc.abilist     |  6 ++++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  6 ++--
 .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  6 ++--
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  6 ++++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  5 +---
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 +++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
 66 files changed, 248 insertions(+), 105 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 55ebfde457..edeb37fef3 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,8 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  lio_listio \
-  lio_listio64 \
   mq_close \
   mq_getattr \
   mq_notify \
@@ -63,6 +61,8 @@ $(librt-routines-var) += \
   aio_suspend \
   aio_write \
   aio_write64 \
+  lio_listio \
+  lio_listio64 \
 
 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 f2b4ced257..0565707456 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -16,12 +16,20 @@ libc {
     aio_suspend64;
     aio_write;
     aio_write64;
+    lio_listio;
+    lio_listio64;
 %endif
   }
   GLIBC_2.2 {
     shm_open;
     shm_unlink;
   }
+  GLIBC_2.4 {
+%if PTHREAD_IN_LIBC
+    lio_listio;
+    lio_listio64;
+%endif
+  }
   GLIBC_2.34 {
 %if PTHREAD_IN_LIBC
     aio_cancel;
@@ -39,6 +47,8 @@ libc {
     aio_suspend64;
     aio_write;
     aio_write64;
+    lio_listio;
+    lio_listio64;
 %endif
     shm_open;
     shm_unlink;
@@ -59,7 +69,9 @@ libc {
 }
 librt {
   GLIBC_2.1 {
-%if !PTHREAD_IN_LIBC
+%if PTHREAD_IN_LIBC
+    __librt_version_placeholder;
+%else
     aio_cancel;
     aio_cancel64;
     aio_error;
@@ -75,9 +87,9 @@ librt {
     aio_suspend64;
     aio_write;
     aio_write64;
-%endif
     lio_listio;
     lio_listio64;
+%endif
   }
   GLIBC_2.2 {
     timer_create;
@@ -99,8 +111,12 @@ librt {
     mq_unlink;
   }
   GLIBC_2.4 {
+%if PTHREAD_IN_LIBC
+    __librt_version_placeholder;
+%else
     lio_listio;
     lio_listio64;
+%endif
   }
   GLIBC_2.7 {
    __mq_open_2;
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
index 7e5f1db940..23c87b0f3e 100644
--- a/rt/librt-compat.c
+++ b/rt/librt-compat.c
@@ -26,4 +26,16 @@ __attribute_used__
 __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_4 != ABI_librt_GLIBC_2_1
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_4);
+# endif
+
 #endif
diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
index a85753823f..b149a64972 100644
--- a/rt/lio_listio-common.c
+++ b/rt/lio_listio-common.c
@@ -47,6 +47,7 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <pthreadP.h>
 
 #include <aio_misc.h>
 
@@ -92,7 +93,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
     }
 
   /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   /* Now we can enqueue all requests.  Since we already acquired the
      mutex the enqueue function need not do this.  */
@@ -125,7 +126,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
       /* Release the mutex.  We do this before raising a signal since the
 	 signal handler might do a `siglongjmp' and then the mutex is
 	 locked forever.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
+      __pthread_mutex_unlock (&__aio_requests_mutex);
 
       if (LIO_MODE (mode) == LIO_NOWAIT)
 	__aio_notify_only (sig);
@@ -228,13 +229,13 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
     }
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 
   return result;
 }
 
 
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
 int
 attribute_compat_text_section
 LIO_LISTIO_OLD (int mode, struct AIOCB *const list[], int nent,
@@ -253,7 +254,7 @@ compat_symbol (librt, LIO_LISTIO_OLD, LIO_LISTIO, GLIBC_2_1);
 # if __WORDSIZE == 64
 compat_symbol (librt, LIO_LISTIO_OLD, lio_listio64, GLIBC_2_1);
 # endif
-#endif /* SHLIB_COMPAT */
+#endif /* OTHER_SHLIB_COMPAT */
 
 
 int
@@ -269,7 +270,21 @@ LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int nent,
 
   return lio_listio_internal (mode, list, nent, sig);
 }
+
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_34);
+# if __WORDSIZE == 64
+versioned_symbol (libc, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_34);
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
+compat_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
+#  if __WORDSIZE == 64
+compat_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
+#  endif
+# endif /* OTHER_SHLIB_COMPAT */
+#else /* !PTHREAD_IN_LIBC */
 versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
-#if __WORDSIZE == 64
+# if __WORDSIZE == 64
 versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
-#endif
+# endif
+#endif /* !PTHREAD_IN_LIBC */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 880dc08ffa..18bbe0c86b 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1268,6 +1268,8 @@ GLIBC_2.17 lfind F
 GLIBC_2.17 lgetxattr F
 GLIBC_2.17 link F
 GLIBC_2.17 linkat F
+GLIBC_2.17 lio_listio F
+GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 listen F
 GLIBC_2.17 listxattr F
 GLIBC_2.17 llabs F
@@ -2395,6 +2397,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 66c645887e..21ca06cf25 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 lio_listio F
-GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 45ba500389..a7cea3adda 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1617,6 +1617,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2490,6 +2492,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2775,6 +2779,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 89a7344c1c..2ae4408148 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -21,6 +20,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index fdfe20796b..a296bd429d 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1203,6 +1203,8 @@ GLIBC_2.32 lfind F
 GLIBC_2.32 lgetxattr F
 GLIBC_2.32 link F
 GLIBC_2.32 linkat F
+GLIBC_2.32 lio_listio F
+GLIBC_2.32 lio_listio64 F
 GLIBC_2.32 listen F
 GLIBC_2.32 listxattr F
 GLIBC_2.32 llabs F
@@ -2154,6 +2156,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 780fb36a31..86b7d92191 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 lio_listio F
-GLIBC_2.32 lio_listio64 F
 GLIBC_2.32 mq_close F
 GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8e6cb9ad9d..5a11201a2c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -311,6 +311,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1643,6 +1645,8 @@ GLIBC_2.4 lfind F
 GLIBC_2.4 lgetxattr F
 GLIBC_2.4 link F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 listen F
 GLIBC_2.4 listxattr F
 GLIBC_2.4 llabs F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 5c655ba14e..17eaad197b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 58190af9e0..ef6c2f934d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -308,6 +308,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1640,6 +1642,8 @@ GLIBC_2.4 lfind F
 GLIBC_2.4 lgetxattr F
 GLIBC_2.4 link F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 listen F
 GLIBC_2.4 listxattr F
 GLIBC_2.4 llabs F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 5c655ba14e..17eaad197b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 4ebfe66490..ce475d4237 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1258,6 +1258,8 @@ GLIBC_2.29 lfind F
 GLIBC_2.29 lgetxattr F
 GLIBC_2.29 link F
 GLIBC_2.29 linkat F
+GLIBC_2.29 lio_listio F
+GLIBC_2.29 lio_listio64 F
 GLIBC_2.29 listen F
 GLIBC_2.29 listxattr F
 GLIBC_2.29 llabs F
@@ -2415,6 +2417,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index e8bf05dae6..b6dcc61492 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 lio_listio F
-GLIBC_2.29 lio_listio64 F
 GLIBC_2.29 mq_close F
 GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 685eab4532..734c0b8832 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -20,6 +20,8 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2369,6 +2371,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2545,6 +2549,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 19b2f11845..796a5678a1 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1584,6 +1584,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2553,6 +2555,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2729,6 +2733,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 8d9f6ff3b6..36769154e3 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -20,6 +20,8 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2328,6 +2330,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2504,6 +2508,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 1eef73b204..41bcd0064a 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -20,6 +19,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 2ab4862211..ace87cf64d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -312,6 +312,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1627,6 +1629,8 @@ GLIBC_2.4 lfind F
 GLIBC_2.4 lgetxattr F
 GLIBC_2.4 link F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 listen F
 GLIBC_2.4 listxattr F
 GLIBC_2.4 llabs F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 5c655ba14e..17eaad197b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index f4ee74ce72..ac56d8aaec 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1581,6 +1581,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2496,6 +2498,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2672,6 +2676,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index d0dcf88270..8383308b5d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1270,6 +1270,8 @@ GLIBC_2.18 lfind F
 GLIBC_2.18 lgetxattr F
 GLIBC_2.18 link F
 GLIBC_2.18 linkat F
+GLIBC_2.18 lio_listio F
+GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 listen F
 GLIBC_2.18 listxattr F
 GLIBC_2.18 llabs F
@@ -2466,6 +2468,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 5a24a449c8..46388b39c0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 lio_listio F
-GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index a5a1b7ddc4..0b3fedbfbb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1270,6 +1270,8 @@ GLIBC_2.18 lfind F
 GLIBC_2.18 lgetxattr F
 GLIBC_2.18 link F
 GLIBC_2.18 linkat F
+GLIBC_2.18 lio_listio F
+GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 listen F
 GLIBC_2.18 listxattr F
 GLIBC_2.18 llabs F
@@ -2463,6 +2465,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 5a24a449c8..46388b39c0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 lio_listio F
-GLIBC_2.18 lio_listio64 F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a6d55c9639..abcecd4913 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1819,6 +1819,8 @@ GLIBC_2.2 key_get_conv F
 GLIBC_2.2 key_secretkey_is_set F
 GLIBC_2.2 key_setnet F
 GLIBC_2.2 key_setsecret F
+GLIBC_2.2 lio_listio F
+GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 localeconv F
 GLIBC_2.2 lockf64 F
 GLIBC_2.2 lseek64 F
@@ -2461,6 +2463,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2635,6 +2639,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1d8e4643b5..d6bf4d5458 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 lio_listio F
-GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +17,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 4f72d3c617..5f5b458364 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1817,6 +1817,8 @@ GLIBC_2.2 key_get_conv F
 GLIBC_2.2 key_secretkey_is_set F
 GLIBC_2.2 key_setnet F
 GLIBC_2.2 key_setsecret F
+GLIBC_2.2 lio_listio F
+GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 localeconv F
 GLIBC_2.2 lockf64 F
 GLIBC_2.2 lseek64 F
@@ -2459,6 +2461,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2633,6 +2637,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 216e8fbe03..8d0bafe8c2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1818,6 +1818,8 @@ GLIBC_2.2 key_get_conv F
 GLIBC_2.2 key_secretkey_is_set F
 GLIBC_2.2 key_setnet F
 GLIBC_2.2 key_setsecret F
+GLIBC_2.2 lio_listio F
+GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 localeconv F
 GLIBC_2.2 lockf64 F
 GLIBC_2.2 lseek64 F
@@ -2467,6 +2469,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2641,6 +2645,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1d8e4643b5..d6bf4d5458 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 lio_listio F
-GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +17,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9671631450..f18bbf6955 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1814,6 +1814,8 @@ GLIBC_2.2 key_get_conv F
 GLIBC_2.2 key_secretkey_is_set F
 GLIBC_2.2 key_setnet F
 GLIBC_2.2 key_setsecret F
+GLIBC_2.2 lio_listio F
+GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 localeconv F
 GLIBC_2.2 lockf64 F
 GLIBC_2.2 lseek64 F
@@ -2384,6 +2386,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2558,6 +2562,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index f2cda0ef51..cb685723d6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 lio_listio F
-GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -15,6 +13,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 6d105407dd..676719705b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1313,6 +1313,8 @@ GLIBC_2.21 lfind F
 GLIBC_2.21 lgetxattr F
 GLIBC_2.21 link F
 GLIBC_2.21 linkat F
+GLIBC_2.21 lio_listio F
+GLIBC_2.21 lio_listio64 F
 GLIBC_2.21 listen F
 GLIBC_2.21 listxattr F
 GLIBC_2.21 llabs F
@@ -2505,6 +2507,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index dc18b0dc39..54780bf8a8 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 lio_listio F
-GLIBC_2.21 lio_listio64 F
 GLIBC_2.21 mq_close F
 GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 783ce5aa8e..030d6bd5b5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1589,6 +1589,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2523,6 +2525,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2808,6 +2812,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index badcc67295..08f19201da 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1589,6 +1589,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2556,6 +2558,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2853,6 +2857,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 838b3323f1..6bd167883f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1246,6 +1246,8 @@ GLIBC_2.3 ldiv F
 GLIBC_2.3 lfind F
 GLIBC_2.3 lgetxattr F
 GLIBC_2.3 link F
+GLIBC_2.3 lio_listio F
+GLIBC_2.3 lio_listio64 F
 GLIBC_2.3 listen F
 GLIBC_2.3 listxattr F
 GLIBC_2.3 llabs F
@@ -2292,6 +2294,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2577,6 +2581,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index dcbadb2a1b..9553ec7c29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.3 lio_listio F
-GLIBC_2.3 lio_listio64 F
 GLIBC_2.3 timer_create F
 GLIBC_2.3 timer_delete F
 GLIBC_2.3 timer_getoverrun F
@@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index b51ebf0861..62e5ddbca6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1356,6 +1356,8 @@ GLIBC_2.17 lfind F
 GLIBC_2.17 lgetxattr F
 GLIBC_2.17 link F
 GLIBC_2.17 linkat F
+GLIBC_2.17 lio_listio F
+GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 listen F
 GLIBC_2.17 listxattr F
 GLIBC_2.17 llabs F
@@ -2591,6 +2593,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 66c645887e..21ca06cf25 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 lio_listio F
-GLIBC_2.17 lio_listio64 F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index caed7efe2b..a05dbdce4e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1200,6 +1200,8 @@ GLIBC_2.33 lfind F
 GLIBC_2.33 lgetxattr F
 GLIBC_2.33 link F
 GLIBC_2.33 linkat F
+GLIBC_2.33 lio_listio F
+GLIBC_2.33 lio_listio64 F
 GLIBC_2.33 listen F
 GLIBC_2.33 listxattr F
 GLIBC_2.33 llabs F
@@ -2156,6 +2158,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 82f04551d5..46954a5f42 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 lio_listio F
-GLIBC_2.33 lio_listio64 F
 GLIBC_2.33 mq_close F
 GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index e9574cf0e4..db7cd82676 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1254,6 +1254,8 @@ GLIBC_2.27 lfind F
 GLIBC_2.27 lgetxattr F
 GLIBC_2.27 link F
 GLIBC_2.27 linkat F
+GLIBC_2.27 lio_listio F
+GLIBC_2.27 lio_listio64 F
 GLIBC_2.27 listen F
 GLIBC_2.27 listxattr F
 GLIBC_2.27 llabs F
@@ -2356,6 +2358,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 044eace5c3..bf73abd7b8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 lio_listio F
-GLIBC_2.27 lio_listio64 F
 GLIBC_2.27 mq_close F
 GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 28f002dcd8..a88aa419eb 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1581,6 +1581,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2521,6 +2523,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2806,6 +2810,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 2d6d3fd601..70bc3a8be7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1145,6 +1145,8 @@ GLIBC_2.2 ldexpl F
 GLIBC_2.2 ldiv F
 GLIBC_2.2 lfind F
 GLIBC_2.2 link F
+GLIBC_2.2 lio_listio F
+GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 listen F
 GLIBC_2.2 llabs F
 GLIBC_2.2 lldiv F
@@ -2329,6 +2331,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2614,6 +2618,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 03aed4d0f7..0ed75b255b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2 lio_listio F
-GLIBC_2.2 lio_listio64 F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 327cc0812d..851b8660b4 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2376,6 +2378,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2552,6 +2556,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 4993b24e22..d8a75db6ed 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2373,6 +2375,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2549,6 +2553,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index eb80c67c84..4273983ece 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e48e78079f..853ebccd44 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1582,6 +1582,8 @@ GLIBC_2.1 key_get_conv F
 GLIBC_2.1 key_secretkey_is_set F
 GLIBC_2.1 key_setnet F
 GLIBC_2.1 key_setsecret F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.1 lockf64 F
 GLIBC_2.1 lseek64 F
 GLIBC_2.1 makecontext F
@@ -2516,6 +2518,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2827,6 +2831,8 @@ GLIBC_2.4 isinfl F
 GLIBC_2.4 isnanl F
 GLIBC_2.4 ldexpl F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 modfl F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 3c39a8ba0a..39ae533414 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -20,6 +19,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 85a4dfa37c..52fbd42f3e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
 GLIBC_2.1 aio_write64 F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
+GLIBC_2.1 lio_listio F
+GLIBC_2.1 lio_listio64 F
 GLIBC_2.10 __cxa_at_quick_exit F
 GLIBC_2.10 __posix_getopt F
 GLIBC_2.10 accept4 F
@@ -2351,6 +2353,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2527,6 +2531,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 89a7344c1c..2ae4408148 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,5 +1,4 @@
-GLIBC_2.1 lio_listio F
-GLIBC_2.1 lio_listio64 F
+GLIBC_2.1 __librt_version_placeholder F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
 GLIBC_2.2 timer_getoverrun F
@@ -21,6 +20,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index c95b54fad3..4afbd80fe4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1138,6 +1138,8 @@ GLIBC_2.2.5 ldexpl F
 GLIBC_2.2.5 ldiv F
 GLIBC_2.2.5 lfind F
 GLIBC_2.2.5 link F
+GLIBC_2.2.5 lio_listio F
+GLIBC_2.2.5 lio_listio64 F
 GLIBC_2.2.5 listen F
 GLIBC_2.2.5 llabs F
 GLIBC_2.2.5 lldiv F
@@ -2307,6 +2309,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -2483,6 +2487,8 @@ GLIBC_2.4 inotify_add_watch F
 GLIBC_2.4 inotify_init F
 GLIBC_2.4 inotify_rm_watch F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 974a0bf943..c7f2721961 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.2.5 lio_listio F
-GLIBC_2.2.5 lio_listio64 F
 GLIBC_2.2.5 timer_create F
 GLIBC_2.2.5 timer_delete F
 GLIBC_2.2.5 timer_getoverrun F
@@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
+GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index c543baf92b..b48d936890 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1274,6 +1274,8 @@ GLIBC_2.16 lfind F
 GLIBC_2.16 lgetxattr F
 GLIBC_2.16 link F
 GLIBC_2.16 linkat F
+GLIBC_2.16 lio_listio F
+GLIBC_2.16 lio_listio64 F
 GLIBC_2.16 listen F
 GLIBC_2.16 listxattr F
 GLIBC_2.16 llabs F
@@ -2410,6 +2412,8 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 lio_listio F
+GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 42f733844b..f75c21efc1 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 lio_listio F
-GLIBC_2.16 lio_listio64 F
 GLIBC_2.16 mq_close F
 GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 20/34] Linux: Move mq_close from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (18 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-24 14:00   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 21/34] Linux: Move mq_setattr " Florian Weimer
                   ` (14 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                               | 2 +-
 rt/Versions                                               | 8 ++++++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 1 -
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 1 -
 sysdeps/unix/sysv/linux/mq_close.c                        | 7 ++++++-
 sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
 .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 1 -
 .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 1 -
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
 65 files changed, 79 insertions(+), 32 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index edeb37fef3..4ac93b2365 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_close \
   mq_getattr \
   mq_notify \
   mq_open \
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   aio_write64 \
   lio_listio \
   lio_listio64 \
+  mq_close \
 
 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 0565707456..d38b95b090 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -24,6 +24,11 @@ libc {
     shm_open;
     shm_unlink;
   }
+  GLIBC_2.3.4 {
+%if PTHREAD_IN_LIBC
+    mq_close;
+%endif
+  }
   GLIBC_2.4 {
 %if PTHREAD_IN_LIBC
     lio_listio;
@@ -49,6 +54,7 @@ libc {
     aio_write64;
     lio_listio;
     lio_listio64;
+    mq_close;
 %endif
     shm_open;
     shm_unlink;
@@ -99,7 +105,9 @@ librt {
     timer_settime;
   }
   GLIBC_2.3.4 {
+%if !PTHREAD_IN_LIBC
     mq_close;
+%endif
     mq_getattr;
     mq_notify;
     mq_open;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 18bbe0c86b..80390d58c5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1357,6 +1357,7 @@ GLIBC_2.17 monstartup F
 GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
+GLIBC_2.17 mq_close F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2399,6 +2400,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 21ca06cf25..0f95d65af6 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index a7cea3adda..02ab437a03 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2392,6 +2392,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2494,6 +2495,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 2ae4408148..960db11285 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index a296bd429d..cc26e87959 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1288,6 +1288,7 @@ GLIBC_2.32 monstartup F
 GLIBC_2.32 mount F
 GLIBC_2.32 mprobe F
 GLIBC_2.32 mprotect F
+GLIBC_2.32 mq_close F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
 GLIBC_2.32 mremap F
@@ -2158,6 +2159,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 86b7d92191..8d99f1fd34 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 mq_close F
 GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 5a11201a2c..bf0e6dd046 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -313,6 +313,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1726,6 +1727,7 @@ GLIBC_2.4 monstartup F
 GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
+GLIBC_2.4 mq_close F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 17eaad197b..a7a3efd732 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index ef6c2f934d..69149e1e31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -310,6 +310,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1723,6 +1724,7 @@ GLIBC_2.4 monstartup F
 GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
+GLIBC_2.4 mq_close F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 17eaad197b..a7a3efd732 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index ce475d4237..24a8e779ef 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1343,6 +1343,7 @@ GLIBC_2.29 monstartup F
 GLIBC_2.29 mount F
 GLIBC_2.29 mprobe F
 GLIBC_2.29 mprotect F
+GLIBC_2.29 mq_close F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
 GLIBC_2.29 mremap F
@@ -2419,6 +2420,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index b6dcc61492..f8439e803c 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 mq_close F
 GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 734c0b8832..108624e7d0 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2206,6 +2206,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2373,6 +2374,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 796a5678a1..b261de5045 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2387,6 +2387,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2557,6 +2558,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 36769154e3..ae3d1362b4 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2241,6 +2241,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2332,6 +2333,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 41bcd0064a..71fa79869e 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,7 +9,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index ace87cf64d..719ad8c4cd 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -314,6 +314,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1710,6 +1711,7 @@ GLIBC_2.4 monstartup F
 GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
+GLIBC_2.4 mq_close F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 17eaad197b..a7a3efd732 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index ac56d8aaec..d9ebe5ff51 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2330,6 +2330,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2500,6 +2501,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 8383308b5d..7baacb6ac0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1359,6 +1359,7 @@ GLIBC_2.18 monstartup F
 GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
+GLIBC_2.18 mq_close F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2470,6 +2471,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 46388b39c0..826842df14 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 0b3fedbfbb..b7cf9054f5 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1359,6 +1359,7 @@ GLIBC_2.18 monstartup F
 GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
+GLIBC_2.18 mq_close F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2467,6 +2468,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 46388b39c0..826842df14 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index abcecd4913..0055c850c1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2298,6 +2298,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2465,6 +2466,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index d6bf4d5458..b9908f3752 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 5f5b458364..d1c756a5b6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2296,6 +2296,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2463,6 +2464,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 8d0bafe8c2..6a3275d75f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2304,6 +2304,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2471,6 +2472,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index d6bf4d5458..b9908f3752 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index f18bbf6955..026d6f0c34 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2298,6 +2298,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2388,6 +2389,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index cb685723d6..df7de1fd21 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/mq_close.c b/sysdeps/unix/sysv/linux/mq_close.c
index 83a28fd8fe..b07db33fbb 100644
--- a/sysdeps/unix/sysv/linux/mq_close.c
+++ b/sysdeps/unix/sysv/linux/mq_close.c
@@ -18,11 +18,16 @@
 #include <errno.h>
 #include <mqueue.h>
 #include <sysdep.h>
+#include <shlib-compat.h>
 
 /* Removes the association between message queue descriptor MQDES and its
    message queue.  */
 int
-mq_close (mqd_t mqdes)
+__mq_close (mqd_t mqdes)
 {
   return INLINE_SYSCALL (close, 1, mqdes);
 }
+versioned_symbol (libc, __mq_close, mq_close, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (libc, __mq_close, mq_close, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 676719705b..de7e07f62f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1402,6 +1402,7 @@ GLIBC_2.21 monstartup F
 GLIBC_2.21 mount F
 GLIBC_2.21 mprobe F
 GLIBC_2.21 mprotect F
+GLIBC_2.21 mq_close F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
 GLIBC_2.21 mremap F
@@ -2509,6 +2510,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 54780bf8a8..8d7a95d6ac 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 mq_close F
 GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 030d6bd5b5..11bca22288 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2344,6 +2344,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2527,6 +2528,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 08f19201da..23823f46cf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2377,6 +2377,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2560,6 +2561,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 6bd167883f..d4c732e826 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2190,6 +2190,7 @@ GLIBC_2.3.4 getcontext F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2296,6 +2297,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 9553ec7c29..e20095d937 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 62e5ddbca6..cf2f48704b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1445,6 +1445,7 @@ GLIBC_2.17 monstartup F
 GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
+GLIBC_2.17 mq_close F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2595,6 +2596,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 21ca06cf25..0f95d65af6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index a05dbdce4e..f731932abf 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1290,6 +1290,7 @@ GLIBC_2.33 monstartup F
 GLIBC_2.33 mount F
 GLIBC_2.33 mprobe F
 GLIBC_2.33 mprotect F
+GLIBC_2.33 mq_close F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
 GLIBC_2.33 mremap F
@@ -2160,6 +2161,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 46954a5f42..1b681c4f40 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 mq_close F
 GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index db7cd82676..5dbfcd8d85 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1340,6 +1340,7 @@ GLIBC_2.27 monstartup F
 GLIBC_2.27 mount F
 GLIBC_2.27 mprobe F
 GLIBC_2.27 mprotect F
+GLIBC_2.27 mq_close F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
 GLIBC_2.27 mremap F
@@ -2360,6 +2361,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index bf73abd7b8..05a7e7ab00 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 mq_close F
 GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a88aa419eb..b84e794be5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2343,6 +2343,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2525,6 +2526,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 70bc3a8be7..5e500fc41b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2231,6 +2231,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2333,6 +2334,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 0ed75b255b..eaf9985930 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 851b8660b4..5eacb42a61 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2210,6 +2210,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2380,6 +2381,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index d8a75db6ed..1e6e234774 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2210,6 +2210,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2377,6 +2378,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 4273983ece..2830671cbd 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 853ebccd44..c641491014 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2341,6 +2341,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2520,6 +2521,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 39ae533414..d7bd3edad5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 52fbd42f3e..834aaa1cb6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2265,6 +2265,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2355,6 +2356,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 2ae4408148..960db11285 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 4afbd80fe4..3f17a41c66 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2219,6 +2219,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2311,6 +2312,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index c7f2721961..6b8d77f1a7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index b48d936890..5ea3b75384 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1364,6 +1364,7 @@ GLIBC_2.16 monstartup F
 GLIBC_2.16 mount F
 GLIBC_2.16 mprobe F
 GLIBC_2.16 mprotect F
+GLIBC_2.16 mq_close F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
 GLIBC_2.16 mremap F
@@ -2414,6 +2415,7 @@ GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
+GLIBC_2.34 mq_close F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index f75c21efc1..660f1de033 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 mq_close F
 GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 21/34] Linux: Move mq_setattr from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (19 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 20/34] Linux: Move mq_close " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-24 14:02   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 22/34] Linux: Move mq_getattr " Florian Weimer
                   ` (13 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.

To introduce the proper symbol versioning, the implementation of
the system call wrapper us moved to a C file.
---
 include/mqueue.h                              |  7 ++++
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  4 ++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
 .../sysv/linux/microblaze/be/libc.abilist     |  2 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/mq_setattr.c          | 33 +++++++++++++++++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 ++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  1 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/syscalls.list         |  2 --
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
 67 files changed, 108 insertions(+), 34 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/mq_setattr.c

diff --git a/include/mqueue.h b/include/mqueue.h
index 98e4596c22..008589f0fa 100644
--- a/include/mqueue.h
+++ b/include/mqueue.h
@@ -8,8 +8,15 @@ hidden_proto (__mq_timedsend)
 hidden_proto (mq_timedreceive)
 extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
 hidden_proto (__mq_timedreceive)
+#  if !PTHREAD_IN_LIBC
 hidden_proto (mq_setattr)
+#  endif
+# endif /* IS_IN (librt) */
+
+# if PTHREAD_IN_LIBC
+libc_hidden_proto (mq_setattr)
 # endif
+
 #include <struct___timespec64.h>
 #if __TIMESIZE == 64
 # define __mq_timedsend_time64 __mq_timedsend
diff --git a/rt/Makefile b/rt/Makefile
index 4ac93b2365..67c4e74a56 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -35,7 +35,6 @@ librt-routines = \
   mq_open \
   mq_receive \
   mq_send \
-  mq_setattr \
   mq_timedreceive \
   mq_timedsend \
   mq_unlink \
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   lio_listio \
   lio_listio64 \
   mq_close \
+  mq_setattr \
 
 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 d38b95b090..01ac8cd0be 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -27,6 +27,7 @@ libc {
   GLIBC_2.3.4 {
 %if PTHREAD_IN_LIBC
     mq_close;
+    mq_setattr;
 %endif
   }
   GLIBC_2.4 {
@@ -55,6 +56,7 @@ libc {
     lio_listio;
     lio_listio64;
     mq_close;
+    mq_setattr;
 %endif
     shm_open;
     shm_unlink;
@@ -107,13 +109,13 @@ librt {
   GLIBC_2.3.4 {
 %if !PTHREAD_IN_LIBC
     mq_close;
+    mq_setattr;
 %endif
     mq_getattr;
     mq_notify;
     mq_open;
     mq_receive;
     mq_send;
-    mq_setattr;
     mq_timedreceive;
     mq_timedsend;
     mq_unlink;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 80390d58c5..4bc3bd5ffb 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1358,6 +1358,7 @@ GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
+GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2401,6 +2402,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 0f95d65af6..5577602ea8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 02ab437a03..f991411721 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2393,6 +2393,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2496,6 +2497,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 960db11285..59e770d345 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index cc26e87959..d71034a0a4 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1289,6 +1289,7 @@ GLIBC_2.32 mount F
 GLIBC_2.32 mprobe F
 GLIBC_2.32 mprotect F
 GLIBC_2.32 mq_close F
+GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
 GLIBC_2.32 mremap F
@@ -2160,6 +2161,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 8d99f1fd34..6d4a02edac 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_receive F
 GLIBC_2.32 mq_send F
-GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index bf0e6dd046..753d824fb6 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -314,6 +314,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1728,6 +1729,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index a7a3efd732..1e9b5a4dfb 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 69149e1e31..a71fc473c5 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -311,6 +311,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1725,6 +1726,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index a7a3efd732..1e9b5a4dfb 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 24a8e779ef..924377d21d 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1344,6 +1344,7 @@ GLIBC_2.29 mount F
 GLIBC_2.29 mprobe F
 GLIBC_2.29 mprotect F
 GLIBC_2.29 mq_close F
+GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
 GLIBC_2.29 mremap F
@@ -2421,6 +2422,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index f8439e803c..5ded0dc421 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_receive F
 GLIBC_2.29 mq_send F
-GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 108624e7d0..df153c161d 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2207,6 +2207,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2375,6 +2376,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index b261de5045..0dc4c677be 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2388,6 +2388,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2559,6 +2560,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ae3d1362b4..ddc9db0d2c 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2242,6 +2242,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2334,6 +2335,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 71fa79869e..2e8a0d4c82 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -14,7 +14,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 719ad8c4cd..2f078539d4 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -315,6 +315,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1712,6 +1713,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index a7a3efd732..1e9b5a4dfb 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index d9ebe5ff51..457001393e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2331,6 +2331,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2502,6 +2503,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 7baacb6ac0..e0cff30061 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
+GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2472,6 +2473,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 826842df14..c42d6f70be 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index b7cf9054f5..697298a2bb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
+GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2469,6 +2470,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 826842df14..c42d6f70be 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 0055c850c1..529d002804 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2467,6 +2468,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index b9908f3752..66ace7f63f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index d1c756a5b6..14343fdd69 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2297,6 +2297,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2465,6 +2466,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 6a3275d75f..af1379fcd5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2305,6 +2305,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2473,6 +2474,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index b9908f3752..66ace7f63f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 026d6f0c34..ed0e42ddf4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2390,6 +2391,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index df7de1fd21..6957efa4dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/mq_setattr.c b/sysdeps/unix/sysv/linux/mq_setattr.c
new file mode 100644
index 0000000000..9631aa5da6
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mq_setattr.c
@@ -0,0 +1,33 @@
+/* mq_setattr system call wrapper.
+   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 <mqueue.h>
+#include <shlib-compat.h>
+#include <sysdep.h>
+
+int
+__mq_setattr (mqd_t mqdes, const struct mq_attr *__restrict mqstat,
+              struct mq_attr *__restrict omqstat)
+{
+  return INLINE_SYSCALL_CALL (mq_getsetattr, mqdes, mqstat, omqstat);
+}
+versioned_symbol (libc, __mq_setattr, mq_setattr, GLIBC_2_34);
+libc_hidden_ver (__mq_setattr, mq_setattr)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, __mq_setattr, mq_setattr, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index de7e07f62f..53f30a93fa 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1403,6 +1403,7 @@ GLIBC_2.21 mount F
 GLIBC_2.21 mprobe F
 GLIBC_2.21 mprotect F
 GLIBC_2.21 mq_close F
+GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
 GLIBC_2.21 mremap F
@@ -2511,6 +2512,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 8d7a95d6ac..c6d440aea4 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_receive F
 GLIBC_2.21 mq_send F
-GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 11bca22288..eeb6d57f25 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2529,6 +2530,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 23823f46cf..afa5274916 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2378,6 +2378,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2562,6 +2563,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index d4c732e826..a01854490b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2191,6 +2191,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2298,6 +2299,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index e20095d937..0534a11718 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index cf2f48704b..476ebab28f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1446,6 +1446,7 @@ GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
+GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2597,6 +2598,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 0f95d65af6..5577602ea8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index f731932abf..48882415a6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1291,6 +1291,7 @@ GLIBC_2.33 mount F
 GLIBC_2.33 mprobe F
 GLIBC_2.33 mprotect F
 GLIBC_2.33 mq_close F
+GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
 GLIBC_2.33 mremap F
@@ -2162,6 +2163,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 1b681c4f40..fc8a2d3353 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_receive F
 GLIBC_2.33 mq_send F
-GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 5dbfcd8d85..006d0c911d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1341,6 +1341,7 @@ GLIBC_2.27 mount F
 GLIBC_2.27 mprobe F
 GLIBC_2.27 mprotect F
 GLIBC_2.27 mq_close F
+GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
 GLIBC_2.27 mremap F
@@ -2362,6 +2363,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 05a7e7ab00..85c6dfae23 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_receive F
 GLIBC_2.27 mq_send F
-GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index b84e794be5..0f5a0ebb1c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2344,6 +2344,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2527,6 +2528,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 5e500fc41b..4aa1a9fa74 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2232,6 +2232,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2335,6 +2336,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index eaf9985930..7bc6c2d4e6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 5eacb42a61..db1f29d905 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2382,6 +2383,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 1e6e234774..961d2b66e0 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2379,6 +2380,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 2830671cbd..73eb37021f 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c641491014..d70c6499a8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2342,6 +2342,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2522,6 +2523,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index d7bd3edad5..36b9ea794f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -10,7 +10,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 834aaa1cb6..9f18195c9d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2266,6 +2266,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2357,6 +2358,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 960db11285..59e770d345 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -15,7 +15,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 01ec2bfa95..62329abb49 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -86,8 +86,6 @@ removexattr	-	removexattr	i:ss	removexattr
 lremovexattr	-	lremovexattr	i:ss	lremovexattr
 fremovexattr	-	fremovexattr	i:is	fremovexattr
 
-mq_setattr	-	mq_getsetattr	i:ipp	mq_setattr
-
 timerfd_create	EXTRA	timerfd_create	i:ii	timerfd_create
 
 fanotify_init	EXTRA	fanotify_init	i:ii	fanotify_init
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 3f17a41c66..05c1f47233 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2220,6 +2220,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2313,6 +2314,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 6b8d77f1a7..d7e5e48295 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 5ea3b75384..b839033cde 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1365,6 +1365,7 @@ GLIBC_2.16 mount F
 GLIBC_2.16 mprobe F
 GLIBC_2.16 mprotect F
 GLIBC_2.16 mq_close F
+GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
 GLIBC_2.16 mremap F
@@ -2416,6 +2417,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 660f1de033..24c03ebc8b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -4,7 +4,6 @@ GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_receive F
 GLIBC_2.16 mq_send F
-GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mq_unlink F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 22/34] Linux: Move mq_getattr from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (20 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 21/34] Linux: Move mq_setattr " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-24 14:02   ` Adhemerval Zanella
  2021-06-17 18:58 ` [PATCH 23/34] Linux: Move mq_notify " Florian Weimer
                   ` (12 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
---
 rt/Makefile                                               | 2 +-
 rt/Versions                                               | 4 +++-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 1 -
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 1 -
 sysdeps/unix/sysv/linux/mq_getattr.c                      | 8 +++++++-
 sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
 .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 1 -
 .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 1 -
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 1 -
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 1 -
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
 65 files changed, 75 insertions(+), 33 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 67c4e74a56..e9b68f0274 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_getattr \
   mq_notify \
   mq_open \
   mq_receive \
@@ -62,6 +61,7 @@ $(librt-routines-var) += \
   lio_listio \
   lio_listio64 \
   mq_close \
+  mq_getattr \
   mq_setattr \
 
 tests := tst-shm tst-timer tst-timer2 \
diff --git a/rt/Versions b/rt/Versions
index 01ac8cd0be..38f23c16ef 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -27,6 +27,7 @@ libc {
   GLIBC_2.3.4 {
 %if PTHREAD_IN_LIBC
     mq_close;
+    mq_getattr;
     mq_setattr;
 %endif
   }
@@ -56,6 +57,7 @@ libc {
     lio_listio;
     lio_listio64;
     mq_close;
+    mq_getattr;
     mq_setattr;
 %endif
     shm_open;
@@ -109,9 +111,9 @@ librt {
   GLIBC_2.3.4 {
 %if !PTHREAD_IN_LIBC
     mq_close;
+    mq_getattr;
     mq_setattr;
 %endif
-    mq_getattr;
     mq_notify;
     mq_open;
     mq_receive;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 4bc3bd5ffb..c6b225527c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1358,6 +1358,7 @@ GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
+GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2402,6 +2403,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 5577602ea8..33b825d874 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index f991411721..4930bfef60 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2393,6 +2393,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2497,6 +2498,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 59e770d345..29f9030371 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index d71034a0a4..78a01ca136 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1289,6 +1289,7 @@ GLIBC_2.32 mount F
 GLIBC_2.32 mprobe F
 GLIBC_2.32 mprotect F
 GLIBC_2.32 mq_close F
+GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
@@ -2161,6 +2162,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 6d4a02edac..4143924c8b 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 753d824fb6..4ad531fb76 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -314,6 +314,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1729,6 +1730,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 1e9b5a4dfb..ba9f5f6422 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index a71fc473c5..aae2e215f3 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -311,6 +311,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1726,6 +1727,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 1e9b5a4dfb..ba9f5f6422 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 924377d21d..0bbe74a51a 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1344,6 +1344,7 @@ GLIBC_2.29 mount F
 GLIBC_2.29 mprobe F
 GLIBC_2.29 mprotect F
 GLIBC_2.29 mq_close F
+GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
@@ -2422,6 +2423,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 5ded0dc421..1ffc068f62 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index df153c161d..f96ed60028 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2207,6 +2207,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2376,6 +2377,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 0dc4c677be..a724074718 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2388,6 +2388,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2560,6 +2561,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ddc9db0d2c..3b5c72f307 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2242,6 +2242,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2335,6 +2336,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 2e8a0d4c82..38edc31e90 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,7 +9,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 2f078539d4..85de809b2d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -315,6 +315,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1713,6 +1714,7 @@ GLIBC_2.4 mount F
 GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
+GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 1e9b5a4dfb..ba9f5f6422 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 457001393e..a9abdfa950 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2331,6 +2331,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2503,6 +2504,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e0cff30061..6bf22e63e3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
+GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2473,6 +2474,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index c42d6f70be..a8bbeb6a20 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 697298a2bb..4e211638c9 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
 GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
+GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2470,6 +2471,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index c42d6f70be..a8bbeb6a20 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 529d002804..96d2e57a71 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2468,6 +2469,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 66ace7f63f..7704fd1722 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 14343fdd69..3f8736354d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2297,6 +2297,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2466,6 +2467,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index af1379fcd5..ab6ca602b9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2305,6 +2305,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2474,6 +2475,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 66ace7f63f..7704fd1722 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index ed0e42ddf4..328abb0e02 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2391,6 +2392,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 6957efa4dd..a249a4623f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/mq_getattr.c b/sysdeps/unix/sysv/linux/mq_getattr.c
index 629e661300..52e7ef30f9 100644
--- a/sysdeps/unix/sysv/linux/mq_getattr.c
+++ b/sysdeps/unix/sysv/linux/mq_getattr.c
@@ -19,10 +19,16 @@
 #include <mqueue.h>
 #include <stddef.h>
 #include <sysdep.h>
+#include <shlib-compat.h>
 
 /* Query status and attributes of message queue MQDES.  */
 int
-mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
+__mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
 {
   return mq_setattr (mqdes, NULL, mqstat);
 }
+versioned_symbol (libc, __mq_getattr, mq_getattr, GLIBC_2_34);
+libc_hidden_ver (__mq_getattr, mq_getattr)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, __mq_getattr, mq_getattr, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 53f30a93fa..b8dd80465f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1403,6 +1403,7 @@ GLIBC_2.21 mount F
 GLIBC_2.21 mprobe F
 GLIBC_2.21 mprotect F
 GLIBC_2.21 mq_close F
+GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
@@ -2512,6 +2513,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index c6d440aea4..64a169169f 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index eeb6d57f25..04a263f810 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2530,6 +2531,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index afa5274916..9e8043323c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2378,6 +2378,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2563,6 +2564,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index a01854490b..21e7cb9a28 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2191,6 +2191,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2299,6 +2300,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 0534a11718..073df9d157 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 476ebab28f..5487741113 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1446,6 +1446,7 @@ GLIBC_2.17 mount F
 GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
+GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2598,6 +2599,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 5577602ea8..33b825d874 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 48882415a6..ac6d6b1200 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1291,6 +1291,7 @@ GLIBC_2.33 mount F
 GLIBC_2.33 mprobe F
 GLIBC_2.33 mprotect F
 GLIBC_2.33 mq_close F
+GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
@@ -2163,6 +2164,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index fc8a2d3353..86456a362e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 006d0c911d..10607eff2d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1341,6 +1341,7 @@ GLIBC_2.27 mount F
 GLIBC_2.27 mprobe F
 GLIBC_2.27 mprotect F
 GLIBC_2.27 mq_close F
+GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
@@ -2363,6 +2364,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 85c6dfae23..e9a7d2fe8a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 0f5a0ebb1c..6fc716311f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2344,6 +2344,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2528,6 +2529,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 4aa1a9fa74..d8d502deb6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2232,6 +2232,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2336,6 +2337,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 7bc6c2d4e6..6df861ffb6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index db1f29d905..bbeb8d248b 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2383,6 +2384,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 961d2b66e0..1cbeb0474a 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2380,6 +2381,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 73eb37021f..d208e7b7a8 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index d70c6499a8..8d7b102a04 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2342,6 +2342,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2523,6 +2524,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 36b9ea794f..2da8518d03 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 9f18195c9d..66a6a37699 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2266,6 +2266,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2358,6 +2359,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 59e770d345..29f9030371 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 05c1f47233..44c6b63d14 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2220,6 +2220,7 @@ GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2314,6 +2315,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index d7e5e48295..0efa2e11fa 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index b839033cde..3dba64549e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1365,6 +1365,7 @@ GLIBC_2.16 mount F
 GLIBC_2.16 mprobe F
 GLIBC_2.16 mprotect F
 GLIBC_2.16 mq_close F
+GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
@@ -2417,6 +2418,7 @@ GLIBC_2.34 execveat F
 GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
+GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 24c03ebc8b..dc15c9057f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_receive F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 23/34] Linux: Move mq_notify from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (21 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 22/34] Linux: Move mq_getattr " Florian Weimer
@ 2021-06-17 18:58 ` Florian Weimer
  2021-06-24 14:05   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 24/34] Linux: Move mq_open, __mq_open_2 " Florian Weimer
                   ` (11 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:58 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.

An explicit call from fork into the mq_notify implementation replaces
the previous use of pthread_atfork.
---
 include/mqueue.h                              |  4 ++
 include/pthread.h                             |  3 +
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  4 +-
 sysdeps/nptl/fork.c                           |  3 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../sysv/linux/microblaze/be/librt.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../sysv/linux/microblaze/le/librt.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/mq_notify.c           | 55 ++++++++-----------
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/librt.abilist     |  1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/be/librt.abilist  |  1 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
 .../sysv/linux/s390/s390-64/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc64/librt.abilist    |  1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
 68 files changed, 100 insertions(+), 65 deletions(-)

diff --git a/include/mqueue.h b/include/mqueue.h
index 008589f0fa..2c40c1e3fc 100644
--- a/include/mqueue.h
+++ b/include/mqueue.h
@@ -15,6 +15,10 @@ hidden_proto (mq_setattr)
 
 # if PTHREAD_IN_LIBC
 libc_hidden_proto (mq_setattr)
+
+/* Called from fork so that the new subprocess re-creates the
+   notification thread if necessary.  */
+void __mq_notify_fork_subprocess (void) attribute_hidden;
 # endif
 
 #include <struct___timespec64.h>
diff --git a/include/pthread.h b/include/pthread.h
index 1158919247..819bf3f235 100644
--- a/include/pthread.h
+++ b/include/pthread.h
@@ -13,6 +13,9 @@ libc_hidden_proto (__pthread_barrier_init)
 #endif
 extern int __pthread_barrier_wait (pthread_barrier_t *__barrier)
      __THROWNL __nonnull ((1));
+#if PTHREAD_IN_LIBC
+libc_hidden_proto (__pthread_barrier_wait)
+#endif
 
 /* This function is called to initialize the pthread library.  */
 extern void __pthread_initialize (void) __attribute__ ((weak));
diff --git a/rt/Makefile b/rt/Makefile
index e9b68f0274..838e67b229 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_notify \
   mq_open \
   mq_receive \
   mq_send \
@@ -62,6 +61,7 @@ $(librt-routines-var) += \
   lio_listio64 \
   mq_close \
   mq_getattr \
+  mq_notify \
   mq_setattr \
 
 tests := tst-shm tst-timer tst-timer2 \
diff --git a/rt/Versions b/rt/Versions
index 38f23c16ef..b3c9bba9ff 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -28,6 +28,7 @@ libc {
 %if PTHREAD_IN_LIBC
     mq_close;
     mq_getattr;
+    mq_notify;
     mq_setattr;
 %endif
   }
@@ -58,6 +59,7 @@ libc {
     lio_listio64;
     mq_close;
     mq_getattr;
+    mq_notify;
     mq_setattr;
 %endif
     shm_open;
@@ -112,9 +114,9 @@ librt {
 %if !PTHREAD_IN_LIBC
     mq_close;
     mq_getattr;
+    mq_notify;
     mq_setattr;
 %endif
-    mq_notify;
     mq_open;
     mq_receive;
     mq_send;
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 39ab797612..d6a0996b79 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -36,6 +36,7 @@
 #include <unwind-link.h>
 #include <sys/single_threaded.h>
 #include <list.h>
+#include <mqueue.h>
 
 static void
 fresetlockfiles (void)
@@ -229,6 +230,8 @@ __libc_fork (void)
 	  /* Reset locks in the I/O code.  */
 	  _IO_list_resetlock ();
 
+	  call_function_static_weak (__mq_notify_fork_subprocess);
+
 	  call_function_static_weak (__nss_database_fork_subprocess,
 				     &nss_database_data);
 	}
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index c6b225527c..98dd344aaf 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1359,6 +1359,7 @@ GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
+GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2404,6 +2405,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 33b825d874..6cab033b12 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 4930bfef60..5026e54d51 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2394,6 +2394,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2499,6 +2500,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 29f9030371..d85884d888 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 78a01ca136..f677395bd2 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1290,6 +1290,7 @@ GLIBC_2.32 mprobe F
 GLIBC_2.32 mprotect F
 GLIBC_2.32 mq_close F
 GLIBC_2.32 mq_getattr F
+GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
@@ -2163,6 +2164,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 4143924c8b..16864093a0 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_receive F
 GLIBC_2.32 mq_send F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 4ad531fb76..38e6fc61d4 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -315,6 +315,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1731,6 +1732,7 @@ GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
+GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index ba9f5f6422..6d3cb7c1fa 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index aae2e215f3..c31f58229a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -312,6 +312,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1728,6 +1729,7 @@ GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
+GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index ba9f5f6422..6d3cb7c1fa 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 0bbe74a51a..bd0cec183d 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1345,6 +1345,7 @@ GLIBC_2.29 mprobe F
 GLIBC_2.29 mprotect F
 GLIBC_2.29 mq_close F
 GLIBC_2.29 mq_getattr F
+GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
@@ -2424,6 +2425,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 1ffc068f62..7c20548140 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_receive F
 GLIBC_2.29 mq_send F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index f96ed60028..e089d91a80 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2208,6 +2208,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2378,6 +2379,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a724074718..d04f1e1a95 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2389,6 +2389,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2562,6 +2563,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 3b5c72f307..c7569a5138 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2243,6 +2243,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2337,6 +2338,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 38edc31e90..1ec96c2786 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,7 +9,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 85de809b2d..57139d935a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -316,6 +316,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1715,6 +1716,7 @@ GLIBC_2.4 mprobe F
 GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
+GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index ba9f5f6422..6d3cb7c1fa 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a9abdfa950..5fd9bf57ec 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2332,6 +2332,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2505,6 +2506,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6bf22e63e3..434b3f6844 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
+GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2475,6 +2476,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index a8bbeb6a20..f82d9ba705 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 4e211638c9..1d97080a9c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F
 GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
+GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2472,6 +2473,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index a8bbeb6a20..f82d9ba705 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 96d2e57a71..d43b66902d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2470,6 +2471,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 7704fd1722..12c3cbae0d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 3f8736354d..86dfc85225 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2298,6 +2298,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2468,6 +2469,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index ab6ca602b9..3314c50b3c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2306,6 +2306,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2476,6 +2477,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 7704fd1722..12c3cbae0d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 328abb0e02..a23ebf24a8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2393,6 +2394,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index a249a4623f..7afe4e83cf 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
index e22850a910..9a68d9534d 100644
--- a/sysdeps/unix/sysv/linux/mq_notify.c
+++ b/sysdeps/unix/sysv/linux/mq_notify.c
@@ -29,7 +29,7 @@
 #include <sys/socket.h>
 #include <not-cancel.h>
 #include <pthreadP.h>
-
+#include <shlib-compat.h>
 
 /* Defined in the kernel headers: */
 #define NOTIFY_COOKIE_LEN	32	/* Length of the cookie used.  */
@@ -75,7 +75,7 @@ change_sigmask (int how, sigset_t *oss)
 {
   sigset_t ss;
   sigfillset (&ss);
-  return pthread_sigmask (how, &ss, oss);
+  return __pthread_sigmask (how, &ss, oss);
 }
 
 
@@ -93,7 +93,7 @@ notification_function (void *arg)
   (void) __pthread_barrier_wait (&notify_barrier);
 
   /* Make the thread detached.  */
-  (void) pthread_detach (pthread_self ());
+  (void) __pthread_detach (__pthread_self ());
 
   /* The parent thread has all signals blocked.  This is probably a
      bit surprising for this thread.  So we unblock all of them.  */
@@ -125,8 +125,8 @@ helper_thread (void *arg)
 	  /* Just create the thread as instructed.  There is no way to
 	     report a problem with creating a thread.  */
 	  pthread_t th;
-	  if (__builtin_expect (pthread_create (&th, data.attr,
-						notification_function, &data)
+	  if (__builtin_expect (__pthread_create (&th, data.attr,
+						  notification_function, &data)
 				== 0, 0))
 	    /* Since we passed a pointer to DATA to the new thread we have
 	       to wait until it is done with it.  */
@@ -135,7 +135,7 @@ helper_thread (void *arg)
       else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
 	{
 	  /* The only state we keep is the copy of the thread attributes.  */
-	  pthread_attr_destroy (data.attr);
+	  __pthread_attr_destroy (data.attr);
 	  free (data.attr);
 	}
     }
@@ -143,8 +143,8 @@ helper_thread (void *arg)
 }
 
 
-static void
-reset_once (void)
+void
+__mq_notify_fork_subprocess (void)
 {
   once = PTHREAD_ONCE_INIT;
 }
@@ -172,10 +172,10 @@ init_mq_netlink (void)
     {
       /* Create the helper thread.  */
       pthread_attr_t attr;
-      (void) pthread_attr_init (&attr);
-      (void) pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+      (void) __pthread_attr_init (&attr);
+      (void) __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
       /* We do not need much stack space, the bare minimum will be enough.  */
-      (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
+      (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
 
       /* Temporarily block all signals so that the newly created
 	 thread inherits the mask.  */
@@ -183,29 +183,13 @@ init_mq_netlink (void)
       int have_no_oss = change_sigmask (SIG_BLOCK, &oss);
 
       pthread_t th;
-      err = pthread_create (&th, &attr, helper_thread, NULL);
+      err = __pthread_create (&th, &attr, helper_thread, NULL);
 
       /* Reset the signal mask.  */
       if (!have_no_oss)
-	pthread_sigmask (SIG_SETMASK, &oss, NULL);
-
-      (void) pthread_attr_destroy (&attr);
+	__pthread_sigmask (SIG_SETMASK, &oss, NULL);
 
-      if (err == 0)
-	{
-	  static int added_atfork;
-
-	  if (added_atfork == 0
-	      && pthread_atfork (NULL, NULL, reset_once) != 0)
-	    {
-	      /* The child thread will call recv() which is a
-		 cancellation point.  */
-	      (void) pthread_cancel (th);
-	      err = 1;
-	    }
-	  else
-	    added_atfork = 1;
-	}
+      (void) __pthread_attr_destroy (&attr);
     }
 
   if (err != 0)
@@ -219,7 +203,7 @@ init_mq_netlink (void)
 /* Register notification upon message arrival to an empty message queue
    MQDES.  */
 int
-mq_notify (mqd_t mqdes, const struct sigevent *notification)
+__mq_notify (mqd_t mqdes, const struct sigevent *notification)
 {
   /* Make sure the type is correctly defined.  */
   assert (sizeof (union notify_data) == NOTIFY_COOKIE_LEN);
@@ -235,7 +219,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
      response.  */
 
   /* Initialize only once.  */
-  pthread_once (&once, init_mq_netlink);
+  __pthread_once (&once, init_mq_netlink);
 
   /* If we cannot create the netlink socket we cannot provide
      SIGEV_THREAD support.  */
@@ -280,9 +264,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
   /* If it failed, free the allocated memory.  */
   if (retval != 0 && data.attr != NULL)
     {
-      pthread_attr_destroy (data.attr);
+      __pthread_attr_destroy (data.attr);
       free (data.attr);
     }
 
   return retval;
 }
+versioned_symbol (libc, __mq_notify, mq_notify, GLIBC_2_34);
+libc_hidden_ver (__mq_notify, mq_notify)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, __mq_notify, mq_notify, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index b8dd80465f..50b5f57efc 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1404,6 +1404,7 @@ GLIBC_2.21 mprobe F
 GLIBC_2.21 mprotect F
 GLIBC_2.21 mq_close F
 GLIBC_2.21 mq_getattr F
+GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
@@ -2514,6 +2515,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 64a169169f..0ad1b47423 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_receive F
 GLIBC_2.21 mq_send F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 04a263f810..c8b663ff2f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2346,6 +2346,7 @@ GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2532,6 +2533,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 9e8043323c..551af732bb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2379,6 +2379,7 @@ GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2565,6 +2566,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 21e7cb9a28..a79b8863e1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2192,6 +2192,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2301,6 +2302,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 073df9d157..a7117238c4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 5487741113..89293145e4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1447,6 +1447,7 @@ GLIBC_2.17 mprobe F
 GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
+GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2600,6 +2601,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 33b825d874..6cab033b12 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index ac6d6b1200..da03d7e3b4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1292,6 +1292,7 @@ GLIBC_2.33 mprobe F
 GLIBC_2.33 mprotect F
 GLIBC_2.33 mq_close F
 GLIBC_2.33 mq_getattr F
+GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
@@ -2165,6 +2166,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 86456a362e..2877905086 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_receive F
 GLIBC_2.33 mq_send F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 10607eff2d..e1ff263953 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1342,6 +1342,7 @@ GLIBC_2.27 mprobe F
 GLIBC_2.27 mprotect F
 GLIBC_2.27 mq_close F
 GLIBC_2.27 mq_getattr F
+GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
@@ -2365,6 +2366,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index e9a7d2fe8a..79c4c5870f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_receive F
 GLIBC_2.27 mq_send F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 6fc716311f..b1af366553 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2530,6 +2531,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index d8d502deb6..70322f5969 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2233,6 +2233,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2338,6 +2339,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 6df861ffb6..7e2f744325 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index bbeb8d248b..57dc4db1e7 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2385,6 +2386,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 1cbeb0474a..d00a7d6034 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2382,6 +2383,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index d208e7b7a8..c4164f4149 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 8d7b102a04..e25501e4c4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2343,6 +2343,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2525,6 +2526,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 2da8518d03..19e98aae24 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 66a6a37699..cdec31d161 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2267,6 +2267,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2360,6 +2361,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 29f9030371..d85884d888 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,7 +10,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 44c6b63d14..1f16f15c1b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2221,6 +2221,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2316,6 +2317,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 0efa2e11fa..139cf285ec 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,7 +8,6 @@ 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 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 3dba64549e..ac010952fe 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1366,6 +1366,7 @@ GLIBC_2.16 mprobe F
 GLIBC_2.16 mprotect F
 GLIBC_2.16 mq_close F
 GLIBC_2.16 mq_getattr F
+GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
@@ -2419,6 +2420,7 @@ GLIBC_2.34 lio_listio F
 GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
+GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index dc15c9057f..db976a6c97 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_receive F
 GLIBC_2.16 mq_send F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 24/34] Linux: Move mq_open, __mq_open_2 from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (22 preceding siblings ...)
  2021-06-17 18:58 ` [PATCH 23/34] Linux: Move mq_notify " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 14:07   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 " Florian Weimer
                   ` (10 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
A placeholder symbol is required to keep the GLIBC_2.7 version.
---
 rt/Makefile                                        |  2 +-
 rt/Versions                                        | 14 +++++++++++++-
 rt/librt-compat.c                                  |  6 ++++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist       |  4 ++++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist      |  2 --
 sysdeps/unix/sysv/linux/alpha/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/alpha/librt.abilist        |  3 +--
 sysdeps/unix/sysv/linux/arc/libc.abilist           |  4 ++++
 sysdeps/unix/sysv/linux/arc/librt.abilist          |  2 --
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |  3 +--
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  4 ++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |  3 +--
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |  2 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |  3 +--
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |  3 +--
 sysdeps/unix/sysv/linux/ia64/libc.abilist          |  4 ++++
 sysdeps/unix/sysv/linux/ia64/librt.abilist         |  3 +--
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |  3 +--
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |  3 +--
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |  2 --
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |  2 --
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |  3 +--
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |  3 +--
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/librt.abilist  |  3 +--
 sysdeps/unix/sysv/linux/mq_open.c                  | 12 ++++++++++--
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |  2 --
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |  3 +--
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
 .../sysv/linux/powerpc/powerpc64/be/librt.abilist  |  3 +--
 .../sysv/linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
 .../sysv/linux/powerpc/powerpc64/le/librt.abilist  |  2 --
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist   |  2 --
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |  3 +--
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
 sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist |  3 +--
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |  3 +--
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  4 ++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |  3 +--
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |  3 +--
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
 .../unix/sysv/linux/sparc/sparc64/librt.abilist    |  3 +--
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |  4 ++++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist    |  3 +--
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist   |  2 --
 66 files changed, 178 insertions(+), 64 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 838e67b229..f0b13b27ba 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_open \
   mq_receive \
   mq_send \
   mq_timedreceive \
@@ -62,6 +61,7 @@ $(librt-routines-var) += \
   mq_close \
   mq_getattr \
   mq_notify \
+  mq_open \
   mq_setattr \
 
 tests := tst-shm tst-timer tst-timer2 \
diff --git a/rt/Versions b/rt/Versions
index b3c9bba9ff..d28a7f6979 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -29,6 +29,7 @@ libc {
     mq_close;
     mq_getattr;
     mq_notify;
+    mq_open;
     mq_setattr;
 %endif
   }
@@ -36,10 +37,16 @@ libc {
 %if PTHREAD_IN_LIBC
     lio_listio;
     lio_listio64;
+%endif
+  }
+  GLIBC_2.7 {
+%if PTHREAD_IN_LIBC
+   __mq_open_2;
 %endif
   }
   GLIBC_2.34 {
 %if PTHREAD_IN_LIBC
+    __mq_open_2;
     aio_cancel;
     aio_cancel64;
     aio_init;
@@ -60,6 +67,7 @@ libc {
     mq_close;
     mq_getattr;
     mq_notify;
+    mq_open;
     mq_setattr;
 %endif
     shm_open;
@@ -115,9 +123,9 @@ librt {
     mq_close;
     mq_getattr;
     mq_notify;
+    mq_open;
     mq_setattr;
 %endif
-    mq_open;
     mq_receive;
     mq_send;
     mq_timedreceive;
@@ -133,6 +141,10 @@ librt {
 %endif
   }
   GLIBC_2.7 {
+%if PTHREAD_IN_LIBC
+    __librt_version_placeholder;
+%else
    __mq_open_2;
+%endif
   }
 }
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
index 23c87b0f3e..ef353acdd1 100644
--- a/rt/librt-compat.c
+++ b/rt/librt-compat.c
@@ -38,4 +38,10 @@ 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
+compat_symbol (librt, __librt_version_placeholder_1,
+               __librt_version_placeholder, GLIBC_2_7);
+# endif
+
 #endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 98dd344aaf..07f77027fc 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -306,6 +306,7 @@ GLIBC_2.17 __mempcpy_small F
 GLIBC_2.17 __memset_chk F
 GLIBC_2.17 __monstartup F
 GLIBC_2.17 __morecore D 0x8
+GLIBC_2.17 __mq_open_2 F
 GLIBC_2.17 __nanosleep F
 GLIBC_2.17 __newlocale F
 GLIBC_2.17 __nl_langinfo_l F
@@ -1360,6 +1361,7 @@ GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
+GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2358,6 +2360,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2406,6 +2409,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 6cab033b12..32327b9d62 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 5026e54d51..683b320ddc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2395,6 +2395,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2453,6 +2454,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2501,6 +2503,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2891,6 +2894,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index d85884d888..bd9a4111f3 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,11 +10,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index f677395bd2..0d73e4cf7a 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -300,6 +300,7 @@ GLIBC_2.32 __mempcpy_chk F
 GLIBC_2.32 __memset_chk F
 GLIBC_2.32 __monstartup F
 GLIBC_2.32 __morecore D 0x4
+GLIBC_2.32 __mq_open_2 F
 GLIBC_2.32 __nanosleep F
 GLIBC_2.32 __newlocale F
 GLIBC_2.32 __nl_langinfo_l F
@@ -1291,6 +1292,7 @@ GLIBC_2.32 mprotect F
 GLIBC_2.32 mq_close F
 GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
+GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
@@ -2117,6 +2119,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2165,6 +2168,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 16864093a0..1ed03be8c1 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.32 __mq_open_2 F
-GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_receive F
 GLIBC_2.32 mq_send F
 GLIBC_2.32 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 38e6fc61d4..351bba9289 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -226,6 +226,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -316,6 +317,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1733,6 +1735,7 @@ GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
+GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
@@ -2604,6 +2607,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 6d3cb7c1fa..ecdfd60cdd 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 c31f58229a..803e1a8bf9 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -223,6 +223,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -313,6 +314,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1730,6 +1732,7 @@ GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
+GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
@@ -2601,6 +2604,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 6d3cb7c1fa..ecdfd60cdd 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 bd0cec183d..5a257c5f7f 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -302,6 +302,7 @@ GLIBC_2.29 __mempcpy_chk F
 GLIBC_2.29 __memset_chk F
 GLIBC_2.29 __monstartup F
 GLIBC_2.29 __morecore D 0x4
+GLIBC_2.29 __mq_open_2 F
 GLIBC_2.29 __nanosleep F
 GLIBC_2.29 __newlocale F
 GLIBC_2.29 __nl_langinfo_l F
@@ -1346,6 +1347,7 @@ GLIBC_2.29 mprotect F
 GLIBC_2.29 mq_close F
 GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
+GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
@@ -2336,6 +2338,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2426,6 +2429,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 7c20548140..8e8822b999 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.29 __mq_open_2 F
-GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_receive F
 GLIBC_2.29 mq_send F
 GLIBC_2.29 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index e089d91a80..1d859308d7 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2209,6 +2209,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2290,6 +2291,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2380,6 +2382,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2619,6 +2622,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 d04f1e1a95..9b4f57689b 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2390,6 +2390,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2474,6 +2475,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2564,6 +2566,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2803,6 +2806,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index c7569a5138..9575d82f33 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2244,6 +2244,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2291,6 +2292,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2339,6 +2341,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2578,6 +2581,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 1ec96c2786..8ecf898b30 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,11 +9,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 57139d935a..94903e9ff0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -227,6 +227,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -317,6 +318,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -1717,6 +1719,7 @@ GLIBC_2.4 mprotect F
 GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
+GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
@@ -2584,6 +2587,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 6d3cb7c1fa..ecdfd60cdd 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 5fd9bf57ec..f2dddac46b 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2333,6 +2333,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2417,6 +2418,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2507,6 +2509,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2746,6 +2749,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 434b3f6844..3c8638ef87 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -307,6 +307,7 @@ GLIBC_2.18 __mempcpy_small F
 GLIBC_2.18 __memset_chk F
 GLIBC_2.18 __monstartup F
 GLIBC_2.18 __morecore D 0x4
+GLIBC_2.18 __mq_open_2 F
 GLIBC_2.18 __nanosleep F
 GLIBC_2.18 __newlocale F
 GLIBC_2.18 __nl_langinfo_l F
@@ -1362,6 +1363,7 @@ GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
+GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2387,6 +2389,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2477,6 +2480,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index f82d9ba705..ce332a362d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 1d97080a9c..8eb98598cc 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -307,6 +307,7 @@ GLIBC_2.18 __mempcpy_small F
 GLIBC_2.18 __memset_chk F
 GLIBC_2.18 __monstartup F
 GLIBC_2.18 __morecore D 0x4
+GLIBC_2.18 __mq_open_2 F
 GLIBC_2.18 __nanosleep F
 GLIBC_2.18 __newlocale F
 GLIBC_2.18 __nl_langinfo_l F
@@ -1362,6 +1363,7 @@ GLIBC_2.18 mprotect F
 GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
+GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
@@ -2384,6 +2386,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2474,6 +2477,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index f82d9ba705..ce332a362d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.18 __mq_open_2 F
-GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index d43b66902d..fd796ad952 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2301,6 +2301,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2382,6 +2383,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2472,6 +2474,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2707,6 +2710,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 12c3cbae0d..84b5002e71 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -14,4 +13,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 86dfc85225..6b9092d313 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2299,6 +2299,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2380,6 +2381,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2470,6 +2472,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2705,6 +2708,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 3314c50b3c..2be1e7d2dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2307,6 +2307,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2388,6 +2389,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2478,6 +2480,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2713,6 +2716,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 12c3cbae0d..84b5002e71 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,7 +3,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -14,4 +13,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 a23ebf24a8..9569c4d8e7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2301,6 +2301,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2347,6 +2348,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2395,6 +2397,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2630,6 +2633,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 7afe4e83cf..8862820283 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,11 +3,10 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mq_open.c b/sysdeps/unix/sysv/linux/mq_open.c
index 667c5677e5..5464285ceb 100644
--- a/sysdeps/unix/sysv/linux/mq_open.c
+++ b/sysdeps/unix/sysv/linux/mq_open.c
@@ -21,6 +21,7 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <sysdep.h>
+#include <shlib-compat.h>
 
 /* Establish connection between a process and a message queue NAME and
    return message queue descriptor or (mqd_t) -1 on error.  OFLAG determines
@@ -49,13 +50,20 @@ __mq_open (const char *name, int oflag, ...)
 
   return INLINE_SYSCALL (mq_open, 4, name + 1, oflag, mode, attr);
 }
-strong_alias (__mq_open, mq_open);
+versioned_symbol (libc, __mq_open, mq_open, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (libc, __mq_open, mq_open, GLIBC_2_3_4);
+#endif
 
 mqd_t
-__mq_open_2 (const char *name, int oflag)
+___mq_open_2 (const char *name, int oflag)
 {
   if (oflag & O_CREAT)
     __fortify_fail ("invalid mq_open call: O_CREAT without mode and attr");
 
   return __mq_open (name, oflag);
 }
+versioned_symbol (libc, ___mq_open_2, __mq_open_2, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34)
+compat_symbol (libc, ___mq_open_2, __mq_open_2, GLIBC_2_7);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 50b5f57efc..e9ed0ba4f7 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -338,6 +338,7 @@ GLIBC_2.21 __mempcpy_small F
 GLIBC_2.21 __memset_chk F
 GLIBC_2.21 __monstartup F
 GLIBC_2.21 __morecore D 0x4
+GLIBC_2.21 __mq_open_2 F
 GLIBC_2.21 __muldf3 F
 GLIBC_2.21 __mulsf3 F
 GLIBC_2.21 __nanosleep F
@@ -1405,6 +1406,7 @@ GLIBC_2.21 mprotect F
 GLIBC_2.21 mq_close F
 GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
+GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
@@ -2426,6 +2428,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2516,6 +2519,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 0ad1b47423..8139d54618 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.21 __mq_open_2 F
-GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_receive F
 GLIBC_2.21 mq_send F
 GLIBC_2.21 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index c8b663ff2f..4ca163edbf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2347,6 +2347,7 @@ GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2444,6 +2445,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2534,6 +2536,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2926,6 +2929,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 551af732bb..ad4c8c6eb2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2380,6 +2380,7 @@ GLIBC_2.3.4 makecontext F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2477,6 +2478,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2567,6 +2569,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2971,6 +2974,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index a79b8863e1..dd3459a50a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2193,6 +2193,7 @@ GLIBC_2.3.4 longjmp F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2255,6 +2256,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2303,6 +2305,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2695,6 +2698,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index a7117238c4..11d78aed63 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,11 +8,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 89293145e4..10293edbdc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -305,6 +305,7 @@ GLIBC_2.17 __mempcpy_small F
 GLIBC_2.17 __memset_chk F
 GLIBC_2.17 __monstartup F
 GLIBC_2.17 __morecore D 0x8
+GLIBC_2.17 __mq_open_2 F
 GLIBC_2.17 __nanosleep F
 GLIBC_2.17 __newlocale F
 GLIBC_2.17 __nl_langinfo_l F
@@ -1448,6 +1449,7 @@ GLIBC_2.17 mprotect F
 GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
+GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
@@ -2554,6 +2556,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2602,6 +2605,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 6cab033b12..32327b9d62 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.17 __mq_open_2 F
-GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index da03d7e3b4..eca2d49a2a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -297,6 +297,7 @@ GLIBC_2.33 __mempcpy_chk F
 GLIBC_2.33 __memset_chk F
 GLIBC_2.33 __monstartup F
 GLIBC_2.33 __morecore D 0x4
+GLIBC_2.33 __mq_open_2 F
 GLIBC_2.33 __nanosleep F
 GLIBC_2.33 __newlocale F
 GLIBC_2.33 __nl_langinfo_l F
@@ -1293,6 +1294,7 @@ GLIBC_2.33 mprotect F
 GLIBC_2.33 mq_close F
 GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
+GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
@@ -2119,6 +2121,7 @@ GLIBC_2.33 write F
 GLIBC_2.33 writev F
 GLIBC_2.33 wscanf F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2167,6 +2170,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 2877905086..8d0013bd08 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.33 __mq_open_2 F
-GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_receive F
 GLIBC_2.33 mq_send F
 GLIBC_2.33 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index e1ff263953..46300e450e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -306,6 +306,7 @@ GLIBC_2.27 __mempcpy_chk F
 GLIBC_2.27 __memset_chk F
 GLIBC_2.27 __monstartup F
 GLIBC_2.27 __morecore D 0x8
+GLIBC_2.27 __mq_open_2 F
 GLIBC_2.27 __nanosleep F
 GLIBC_2.27 __newlocale F
 GLIBC_2.27 __nl_langinfo_l F
@@ -1343,6 +1344,7 @@ GLIBC_2.27 mprotect F
 GLIBC_2.27 mq_close F
 GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
+GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
@@ -2319,6 +2321,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2367,6 +2370,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 79c4c5870f..19f0d73de7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.27 __mq_open_2 F
-GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_receive F
 GLIBC_2.27 mq_send F
 GLIBC_2.27 mq_timedreceive F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index b1af366553..b80a760c40 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2346,6 +2346,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2442,6 +2443,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2532,6 +2534,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2922,6 +2925,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 70322f5969..093f116bc6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2234,6 +2234,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2292,6 +2293,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2340,6 +2342,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2730,6 +2733,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 7e2f744325..c6cf36504c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,11 +8,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 57dc4db1e7..63ac43ca18 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2213,6 +2213,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2297,6 +2298,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2387,6 +2389,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2626,6 +2629,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 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 d00a7d6034..483e612001 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2213,6 +2213,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2294,6 +2295,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2384,6 +2386,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2623,6 +2626,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index c4164f4149..bb9c1f9659 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,6 @@ 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.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e25501e4c4..9679915508 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2344,6 +2344,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2437,6 +2438,7 @@ GLIBC_2.34 __localtime64_r F
 GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2527,6 +2529,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2943,6 +2946,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __nldbl___isoc99_fscanf F
 GLIBC_2.7 __nldbl___isoc99_fwscanf F
 GLIBC_2.7 __nldbl___isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 19e98aae24..3d08073063 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
@@ -16,4 +15,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index cdec31d161..59d1d2beef 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2268,6 +2268,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2314,6 +2315,7 @@ GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2362,6 +2364,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2601,6 +2604,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index d85884d888..bd9a4111f3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,11 +10,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 1f16f15c1b..699ddbb78d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2222,6 +2222,7 @@ GLIBC_2.3.4 getsourcefilter F
 GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -2270,6 +2271,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2318,6 +2320,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
@@ -2557,6 +2560,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 139cf285ec..161a731b3e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,11 +8,10 @@ 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 mq_open F
 GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index ac010952fe..6e069e92a6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -307,6 +307,7 @@ GLIBC_2.16 __mempcpy_small F
 GLIBC_2.16 __memset_chk F
 GLIBC_2.16 __monstartup F
 GLIBC_2.16 __morecore D 0x4
+GLIBC_2.16 __mq_open_2 F
 GLIBC_2.16 __nanosleep F
 GLIBC_2.16 __newlocale F
 GLIBC_2.16 __nl_langinfo_l F
@@ -1367,6 +1368,7 @@ GLIBC_2.16 mprotect F
 GLIBC_2.16 mq_close F
 GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
+GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
@@ -2373,6 +2375,7 @@ GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_mutex_lock F
@@ -2421,6 +2424,7 @@ GLIBC_2.34 lio_listio64 F
 GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
+GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index db976a6c97..643cd58e36 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.16 __mq_open_2 F
-GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_receive F
 GLIBC_2.16 mq_send F
 GLIBC_2.16 mq_timedreceive F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (23 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 24/34] Linux: Move mq_open, __mq_open_2 " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 14:14   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 " Florian Weimer
                   ` (9 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 include/mqueue.h                              | 12 ++++--
 rt/Makefile                                   |  4 +-
 rt/Versions                                   |  8 +++-
 sysdeps/unix/sysv/linux/Versions              |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  5 +++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 +++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
 .../sysv/linux/microblaze/be/libc.abilist     |  5 +++
 .../sysv/linux/microblaze/be/librt.abilist    |  3 --
 .../sysv/linux/microblaze/le/libc.abilist     |  5 +++
 .../sysv/linux/microblaze/le/librt.abilist    |  3 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 +++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 +++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 +++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/mq_receive.c          |  9 ++++-
 sysdeps/unix/sysv/linux/mq_timedreceive.c     | 38 ++++++++++++++-----
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 +++
 .../linux/powerpc/powerpc32/librt.abilist     |  3 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  5 +++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 +++
 .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
 .../sysv/linux/sparc/sparc32/libc.abilist     |  5 +++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 68 files changed, 200 insertions(+), 97 deletions(-)

diff --git a/include/mqueue.h b/include/mqueue.h
index 2c40c1e3fc..8243a637d2 100644
--- a/include/mqueue.h
+++ b/include/mqueue.h
@@ -1,20 +1,22 @@
 #include <rt/mqueue.h>
 
 #ifndef _ISOMAC
+extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
+
 # if IS_IN (librt)
 hidden_proto (mq_timedsend)
 extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
 hidden_proto (__mq_timedsend)
-hidden_proto (mq_timedreceive)
-extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
-hidden_proto (__mq_timedreceive)
 #  if !PTHREAD_IN_LIBC
 hidden_proto (mq_setattr)
+hidden_proto (mq_timedreceive)
+hidden_proto (__mq_timedreceive)
 #  endif
 # endif /* IS_IN (librt) */
 
 # if PTHREAD_IN_LIBC
 libc_hidden_proto (mq_setattr)
+libc_hidden_proto (__mq_timedreceive)
 
 /* Called from fork so that the new subprocess re-creates the
    notification thread if necessary.  */
@@ -36,6 +38,10 @@ extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
                                          unsigned int *__restrict msg_prio,
                                          const struct __timespec64 *__restrict
                                          abs_timeout);
+#  if PTHREAD_IN_LIBC
+libc_hidden_proto (__mq_timedreceive_time64)
+#  else
 librt_hidden_proto (__mq_timedreceive_time64)
+#  endif
 #endif
 #endif
diff --git a/rt/Makefile b/rt/Makefile
index f0b13b27ba..a3182ac459 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,9 +30,7 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_receive \
   mq_send \
-  mq_timedreceive \
   mq_timedsend \
   mq_unlink \
   timer_create \
@@ -62,7 +60,9 @@ $(librt-routines-var) += \
   mq_getattr \
   mq_notify \
   mq_open \
+  mq_receive \
   mq_setattr \
+  mq_timedreceive \
 
 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 d28a7f6979..541106632e 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -30,7 +30,9 @@ libc {
     mq_getattr;
     mq_notify;
     mq_open;
+    mq_receive;
     mq_setattr;
+    mq_timedreceive;
 %endif
   }
   GLIBC_2.4 {
@@ -68,7 +70,9 @@ libc {
     mq_getattr;
     mq_notify;
     mq_open;
+    mq_receive;
     mq_setattr;
+    mq_timedreceive;
 %endif
     shm_open;
     shm_unlink;
@@ -124,11 +128,11 @@ librt {
     mq_getattr;
     mq_notify;
     mq_open;
+    mq_receive;
     mq_setattr;
+    mq_timedreceive;
 %endif
-    mq_receive;
     mq_send;
-    mq_timedreceive;
     mq_timedsend;
     mq_unlink;
   }
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index f246a389e1..cce7c56652 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -226,6 +226,7 @@ libc {
     __lstat64_time64;
     __lutimes64;
     __mktime64;
+    __mq_timedreceive_time64;
     __msgctl64;
     __mtx_timedlock64;
     __nanosleep64;
@@ -296,7 +297,6 @@ librt {
 %ifdef TIME64_NON_DEFAULT
     # 64-bit time_t support
     __mq_timedsend_time64;
-    __mq_timedreceive_time64;
     __timer_gettime64;
     __timer_settime64;
 %endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 07f77027fc..cd9d4d91c5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1362,7 +1362,9 @@ GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
+GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_setattr F
+GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2410,7 +2412,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 32327b9d62..1c3c05932e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 683b320ddc..7a894d983e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2396,7 +2396,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2504,7 +2506,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index bd9a4111f3..6eae7e9482 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,9 +10,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 0d73e4cf7a..e3769a67f5 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1293,7 +1293,9 @@ GLIBC_2.32 mq_close F
 GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
+GLIBC_2.32 mq_receive F
 GLIBC_2.32 mq_setattr F
+GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
 GLIBC_2.32 mremap F
@@ -2169,7 +2171,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 1ed03be8c1..7a861b1e76 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.32 mq_receive F
 GLIBC_2.32 mq_send F
-GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mq_unlink F
 GLIBC_2.32 timer_create F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 351bba9289..74ff1bc808 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -227,6 +227,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -318,7 +319,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1736,7 +1739,9 @@ GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
+GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_setattr F
+GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index ecdfd60cdd..ea840d42d1 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 803e1a8bf9..04692b0d98 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -224,6 +224,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -315,7 +316,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1733,7 +1736,9 @@ GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
+GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_setattr F
+GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index ecdfd60cdd..ea840d42d1 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 5a257c5f7f..e25f2637b6 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1348,7 +1348,9 @@ GLIBC_2.29 mq_close F
 GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
+GLIBC_2.29 mq_receive F
 GLIBC_2.29 mq_setattr F
+GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
 GLIBC_2.29 mremap F
@@ -2339,6 +2341,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2430,7 +2433,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 8e8822b999..dadd5b921b 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.29 mq_receive F
 GLIBC_2.29 mq_send F
-GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mq_unlink F
 GLIBC_2.29 timer_create F
@@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 1d859308d7..7ef275ce02 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2210,7 +2210,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2292,6 +2294,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2383,7 +2386,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 9b4f57689b..a584865427 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2391,7 +2391,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2476,6 +2478,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2567,7 +2570,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 9575d82f33..6e22d91a7f 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2245,7 +2245,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2342,7 +2344,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 8ecf898b30..eb4a5080e2 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,9 +9,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 94903e9ff0..c6e168754f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -228,6 +228,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -319,7 +320,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1720,7 +1723,9 @@ GLIBC_2.4 mq_close F
 GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
+GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_setattr F
+GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index ecdfd60cdd..ea840d42d1 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,10 +1,7 @@
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index f2dddac46b..ba3a4ace7b 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2334,7 +2334,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2419,6 +2421,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2510,7 +2513,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 3c8638ef87..1350543bce 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1364,7 +1364,9 @@ GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
+GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_setattr F
+GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2390,6 +2392,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2481,7 +2484,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index ce332a362d..8ddbc3a272 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
 GLIBC_2.18 timer_create F
@@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 8eb98598cc..10151508d3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1364,7 +1364,9 @@ GLIBC_2.18 mq_close F
 GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
+GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_setattr F
+GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2387,6 +2389,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2478,7 +2481,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index ce332a362d..8ddbc3a272 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.18 mq_receive F
 GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
 GLIBC_2.18 timer_create F
@@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index fd796ad952..e3ebc66ae0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2302,7 +2302,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2384,6 +2386,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2475,7 +2478,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 84b5002e71..2cd12115d9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,12 +3,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 6b9092d313..e8d041106d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2300,7 +2300,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2382,6 +2384,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2473,7 +2476,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 2be1e7d2dd..b596c529c4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2308,7 +2308,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2390,6 +2392,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2481,7 +2484,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 84b5002e71..2cd12115d9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,12 +3,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9569c4d8e7..af99fdad9c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2302,7 +2302,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2398,7 +2400,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 8862820283..b5796aadb3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,9 +3,7 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mq_receive.c b/sysdeps/unix/sysv/linux/mq_receive.c
index dd43d3a8e7..e9375a4cbc 100644
--- a/sysdeps/unix/sysv/linux/mq_receive.c
+++ b/sysdeps/unix/sysv/linux/mq_receive.c
@@ -17,14 +17,19 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
 #include <stddef.h>
 #include <sysdep.h>
 
 /* Receive the oldest from highest priority messages in message queue
    MQDES.  */
 ssize_t
-mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
-	    unsigned int *msg_prio)
+__mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
+	      unsigned int *msg_prio)
 {
   return __mq_timedreceive (mqdes, msg_ptr, msg_len, msg_prio, NULL);
 }
+versioned_symbol (libc, __mq_receive, mq_receive, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, __mq_receive, mq_receive, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/mq_timedreceive.c b/sysdeps/unix/sysv/linux/mq_timedreceive.c
index eb948ccc18..14dcdde3e4 100644
--- a/sysdeps/unix/sysv/linux/mq_timedreceive.c
+++ b/sysdeps/unix/sysv/linux/mq_timedreceive.c
@@ -18,11 +18,12 @@
 
 #include <mqueue.h>
 #include <sysdep-cancel.h>
+#include <shlib-compat.h>
 
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 ssize_t
-__mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
+___mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
                           unsigned int *__restrict msg_prio,
                           const struct __timespec64 *__restrict abs_timeout)
 {
@@ -55,13 +56,25 @@ __mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
   return ret;
 }
 
-#if __TIMESIZE != 64
-librt_hidden_def (__mq_timedreceive_time64)
+#if __TIMESIZE == 64
+versioned_symbol (libc, ___mq_timedreceive_time64, mq_timedreceive, GLIBC_2_34);
+libc_hidden_ver (___mq_timedreceive_time64, __mq_timedreceive)
+# ifndef SHARED
+strong_alias (___mq_timedreceive_time64, __mq_timedreceive)
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, ___mq_timedreceive_time64, mq_timedreceive, GLIBC_2_3_4);
+# endif
+
+#else /* __TIMESIZE != 64 */
+libc_hidden_ver (___mq_timedreceive_time64, __mq_timedreceive_time64)
+versioned_symbol (libc, ___mq_timedreceive_time64, __mq_timedreceive_time64,
+		  GLIBC_2_34);
 
 ssize_t
-__mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
-                   unsigned int *__restrict msg_prio,
-                   const struct timespec *__restrict abs_timeout)
+___mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
+		    unsigned int *__restrict msg_prio,
+		    const struct timespec *__restrict abs_timeout)
 {
   struct __timespec64 ts64;
   if (abs_timeout != NULL)
@@ -70,8 +83,13 @@ __mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
   return __mq_timedreceive_time64 (mqdes, msg_ptr, msg_len, msg_prio,
                                    abs_timeout != NULL ? &ts64 : NULL);
 }
-#endif
+versioned_symbol (libc, ___mq_timedreceive, mq_timedreceive, GLIBC_2_34);
+libc_hidden_ver (___mq_timedreceive, __mq_timedreceive)
+# ifndef SHARED
+strong_alias (___mq_timedreceive, __mq_timedreceive)
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, ___mq_timedreceive, mq_timedreceive, GLIBC_2_3_4);
+# endif
 
-hidden_def (__mq_timedreceive)
-weak_alias (__mq_timedreceive, mq_timedreceive)
-hidden_weak (mq_timedreceive)
+#endif /* __TIMESIZE != 64 */
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index e9ed0ba4f7..0c07cf2e80 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1407,7 +1407,9 @@ GLIBC_2.21 mq_close F
 GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
+GLIBC_2.21 mq_receive F
 GLIBC_2.21 mq_setattr F
+GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
 GLIBC_2.21 mremap F
@@ -2429,6 +2431,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2520,7 +2523,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 8139d54618..7ea7b0a8f3 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.21 mq_receive F
 GLIBC_2.21 mq_send F
-GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mq_unlink F
 GLIBC_2.21 timer_create F
@@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4ca163edbf..4b3b448927 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2348,7 +2348,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2446,6 +2448,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2537,7 +2540,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ad4c8c6eb2..b3b90b8136 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2381,7 +2381,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2479,6 +2481,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2570,7 +2573,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index dd3459a50a..1720d4da88 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2194,7 +2194,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2306,7 +2308,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 11d78aed63..3968e8e7cb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,9 +8,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __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 10293edbdc..9a7d510295 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1450,7 +1450,9 @@ GLIBC_2.17 mq_close F
 GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
+GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_setattr F
+GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2606,7 +2608,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 32327b9d62..1c3c05932e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.17 mq_receive F
 GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index eca2d49a2a..80fea20f51 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1295,7 +1295,9 @@ GLIBC_2.33 mq_close F
 GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
+GLIBC_2.33 mq_receive F
 GLIBC_2.33 mq_setattr F
+GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
 GLIBC_2.33 mremap F
@@ -2171,7 +2173,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 8d0013bd08..02e6e0d513 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.33 mq_receive F
 GLIBC_2.33 mq_send F
-GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mq_unlink F
 GLIBC_2.33 timer_create F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 46300e450e..b3ed38d911 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1345,7 +1345,9 @@ GLIBC_2.27 mq_close F
 GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
+GLIBC_2.27 mq_receive F
 GLIBC_2.27 mq_setattr F
+GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
 GLIBC_2.27 mremap F
@@ -2371,7 +2373,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 19f0d73de7..7cd66b1ff6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.27 mq_receive F
 GLIBC_2.27 mq_send F
-GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mq_unlink F
 GLIBC_2.27 timer_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index b80a760c40..d9e415fa6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2347,7 +2347,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2444,6 +2446,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2535,7 +2538,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 093f116bc6..dec539716c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2235,7 +2235,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2343,7 +2345,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index c6cf36504c..acaafa5f29 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,9 +8,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 63ac43ca18..ddc4e08f79 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2214,7 +2214,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2299,6 +2301,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2390,7 +2393,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 483e612001..553574f741 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2214,7 +2214,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2296,6 +2298,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2387,7 +2390,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb9c1f9659..9d26b1298c 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,12 +4,9 @@ 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.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 9679915508..3e68e78ca2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2345,7 +2345,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2439,6 +2441,7 @@ GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
+GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2530,7 +2533,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 3d08073063..ca31f9805a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,12 +5,9 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedreceive_time64 F
 GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 59d1d2beef..5d21d25fb9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2269,7 +2269,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2365,7 +2367,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index bd9a4111f3..6eae7e9482 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,9 +10,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 699ddbb78d..08422b301d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2223,7 +2223,9 @@ GLIBC_2.3.4 mq_close F
 GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
 GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2321,7 +2323,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index 161a731b3e..f61e3e7428 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,9 +8,7 @@ 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 mq_receive F
 GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 6e069e92a6..38f4c2105d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1369,7 +1369,9 @@ GLIBC_2.16 mq_close F
 GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
+GLIBC_2.16 mq_receive F
 GLIBC_2.16 mq_setattr F
+GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
 GLIBC_2.16 mremap F
@@ -2425,7 +2427,9 @@ GLIBC_2.34 mq_close F
 GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
+GLIBC_2.34 mq_receive F
 GLIBC_2.34 mq_setattr F
+GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 643cd58e36..7e39929d27 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.16 mq_receive F
 GLIBC_2.16 mq_send F
-GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mq_unlink F
 GLIBC_2.16 timer_create F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (24 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 14:22   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 27/34] Linux: Move mq_unlink from librt " Florian Weimer
                   ` (8 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 include/mqueue.h                              | 12 +++---
 rt/Makefile                                   |  4 +-
 rt/Versions                                   |  8 +++-
 sysdeps/unix/sysv/linux/Versions              |  2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  5 +++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 +++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
 .../sysv/linux/microblaze/be/libc.abilist     |  5 +++
 .../sysv/linux/microblaze/be/librt.abilist    |  3 --
 .../sysv/linux/microblaze/le/libc.abilist     |  5 +++
 .../sysv/linux/microblaze/le/librt.abilist    |  3 --
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 +++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 +++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 +++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/mq_send.c             |  7 +++-
 sysdeps/unix/sysv/linux/mq_timedsend.c        | 38 ++++++++++++++-----
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 +++
 .../linux/powerpc/powerpc32/librt.abilist     |  3 --
 .../powerpc/powerpc32/nofpu/libc.abilist      |  5 +++
 .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 +++
 .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
 .../sysv/linux/sparc/sparc32/libc.abilist     |  5 +++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
 .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 68 files changed, 196 insertions(+), 99 deletions(-)

diff --git a/include/mqueue.h b/include/mqueue.h
index 8243a637d2..7a2459e603 100644
--- a/include/mqueue.h
+++ b/include/mqueue.h
@@ -2,21 +2,20 @@
 
 #ifndef _ISOMAC
 extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
+extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
 
-# if IS_IN (librt)
+# if IS_IN (librt) && !PTHREAD_IN_LIBC
 hidden_proto (mq_timedsend)
-extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
 hidden_proto (__mq_timedsend)
-#  if !PTHREAD_IN_LIBC
 hidden_proto (mq_setattr)
 hidden_proto (mq_timedreceive)
 hidden_proto (__mq_timedreceive)
-#  endif
-# endif /* IS_IN (librt) */
+# endif
 
 # if PTHREAD_IN_LIBC
 libc_hidden_proto (mq_setattr)
 libc_hidden_proto (__mq_timedreceive)
+libc_hidden_proto (__mq_timedsend)
 
 /* Called from fork so that the new subprocess re-creates the
    notification thread if necessary.  */
@@ -31,7 +30,6 @@ void __mq_notify_fork_subprocess (void) attribute_hidden;
 extern int __mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr,
                                   size_t msg_len, unsigned int msg_prio,
                                   const struct __timespec64 *abs_timeout);
-librt_hidden_proto (__mq_timedsend_time64)
 extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
                                          char *__restrict msg_ptr,
                                          size_t msg_len,
@@ -40,8 +38,10 @@ extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
                                          abs_timeout);
 #  if PTHREAD_IN_LIBC
 libc_hidden_proto (__mq_timedreceive_time64)
+libc_hidden_proto (__mq_timedsend_time64)
 #  else
 librt_hidden_proto (__mq_timedreceive_time64)
+librt_hidden_proto (__mq_timedsend_time64)
 #  endif
 #endif
 #endif
diff --git a/rt/Makefile b/rt/Makefile
index a3182ac459..cea1189f4d 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,8 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_send \
-  mq_timedsend \
   mq_unlink \
   timer_create \
   timer_delete \
@@ -61,8 +59,10 @@ $(librt-routines-var) += \
   mq_notify \
   mq_open \
   mq_receive \
+  mq_send \
   mq_setattr \
   mq_timedreceive \
+  mq_timedsend \
 
 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 541106632e..3363ccb526 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -31,8 +31,10 @@ libc {
     mq_notify;
     mq_open;
     mq_receive;
+    mq_send;
     mq_setattr;
     mq_timedreceive;
+    mq_timedsend;
 %endif
   }
   GLIBC_2.4 {
@@ -71,8 +73,10 @@ libc {
     mq_notify;
     mq_open;
     mq_receive;
+    mq_send;
     mq_setattr;
     mq_timedreceive;
+    mq_timedsend;
 %endif
     shm_open;
     shm_unlink;
@@ -129,11 +133,11 @@ librt {
     mq_notify;
     mq_open;
     mq_receive;
+    mq_send;
     mq_setattr;
     mq_timedreceive;
-%endif
-    mq_send;
     mq_timedsend;
+%endif
     mq_unlink;
   }
   GLIBC_2.4 {
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index cce7c56652..051ecf9390 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -227,6 +227,7 @@ libc {
     __lutimes64;
     __mktime64;
     __mq_timedreceive_time64;
+    __mq_timedsend_time64;
     __msgctl64;
     __mtx_timedlock64;
     __nanosleep64;
@@ -296,7 +297,6 @@ librt {
   GLIBC_2.34 {
 %ifdef TIME64_NON_DEFAULT
     # 64-bit time_t support
-    __mq_timedsend_time64;
     __timer_gettime64;
     __timer_settime64;
 %endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index cd9d4d91c5..b4edd23bc8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1363,8 +1363,10 @@ GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
+GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
+GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2413,8 +2415,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 1c3c05932e..4f4c72f3cc 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 7a894d983e..c2fd6ec79e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2397,8 +2397,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2507,8 +2509,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 6eae7e9482..3156616c8b 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,8 +10,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index e3769a67f5..c36d673f3e 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1294,8 +1294,10 @@ GLIBC_2.32 mq_getattr F
 GLIBC_2.32 mq_notify F
 GLIBC_2.32 mq_open F
 GLIBC_2.32 mq_receive F
+GLIBC_2.32 mq_send F
 GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mq_timedreceive F
+GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
 GLIBC_2.32 mremap F
@@ -2172,8 +2174,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index 7a861b1e76..c69ae6e40b 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.32 mq_send F
-GLIBC_2.32 mq_timedsend F
 GLIBC_2.32 mq_unlink F
 GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 74ff1bc808..b44d7f5d23 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -228,6 +228,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -320,8 +321,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1740,8 +1743,10 @@ GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
+GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
+GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index ea840d42d1..00fffc9bf4 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,8 +1,5 @@
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 04692b0d98..4335ee8c5b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -225,6 +225,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -317,8 +318,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1737,8 +1740,10 @@ GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
+GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
+GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index ea840d42d1..00fffc9bf4 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,8 +1,5 @@
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index e25f2637b6..11f34272fa 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1349,8 +1349,10 @@ GLIBC_2.29 mq_getattr F
 GLIBC_2.29 mq_notify F
 GLIBC_2.29 mq_open F
 GLIBC_2.29 mq_receive F
+GLIBC_2.29 mq_send F
 GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mq_timedreceive F
+GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
 GLIBC_2.29 mremap F
@@ -2342,6 +2344,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2434,8 +2437,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index dadd5b921b..81964809e8 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,11 +1,8 @@
-GLIBC_2.29 mq_send F
-GLIBC_2.29 mq_timedsend F
 GLIBC_2.29 mq_unlink F
 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.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 7ef275ce02..d2337afa48 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2211,8 +2211,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2295,6 +2297,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2387,8 +2390,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a584865427..ae326a36f4 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2392,8 +2392,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2479,6 +2481,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2571,8 +2574,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 6e22d91a7f..ad7b86ca8e 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2246,8 +2246,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2345,8 +2347,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index eb4a5080e2..6c8eb08863 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,8 +9,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index c6e168754f..e0106e57e3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -229,6 +229,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -321,8 +322,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1724,8 +1727,10 @@ GLIBC_2.4 mq_getattr F
 GLIBC_2.4 mq_notify F
 GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
+GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
+GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index ea840d42d1..00fffc9bf4 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,8 +1,5 @@
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_send F
-GLIBC_2.4 mq_timedsend F
 GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index ba3a4ace7b..833105c87e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2335,8 +2335,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2422,6 +2424,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2514,8 +2517,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 1350543bce..168143b004 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1365,8 +1365,10 @@ GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
+GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
+GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2393,6 +2395,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2485,8 +2488,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 8ddbc3a272..d0b5c08211 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,11 +1,8 @@
-GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
 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.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 10151508d3..478c35898d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1365,8 +1365,10 @@ GLIBC_2.18 mq_getattr F
 GLIBC_2.18 mq_notify F
 GLIBC_2.18 mq_open F
 GLIBC_2.18 mq_receive F
+GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
+GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2390,6 +2392,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2482,8 +2485,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 8ddbc3a272..d0b5c08211 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,11 +1,8 @@
-GLIBC_2.18 mq_send F
-GLIBC_2.18 mq_timedsend F
 GLIBC_2.18 mq_unlink F
 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.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index e3ebc66ae0..4d2c5e7fff 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2303,8 +2303,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2387,6 +2389,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2479,8 +2482,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 2cd12115d9..c2dcd8a037 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,10 +3,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 e8d041106d..729413e091 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2301,8 +2301,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2385,6 +2387,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2477,8 +2480,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index b596c529c4..cc82aa817c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2309,8 +2309,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2393,6 +2395,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2485,8 +2488,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 2cd12115d9..c2dcd8a037 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,10 +3,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 af99fdad9c..746072a535 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2303,8 +2303,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2401,8 +2403,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index b5796aadb3..1daa0ecaef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,8 +3,6 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mq_send.c b/sysdeps/unix/sysv/linux/mq_send.c
index 7744a83fab..45944548b0 100644
--- a/sysdeps/unix/sysv/linux/mq_send.c
+++ b/sysdeps/unix/sysv/linux/mq_send.c
@@ -17,13 +17,18 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
 #include <stddef.h>
 #include <sysdep.h>
 
 /* Add message pointed by MSG_PTR to message queue MQDES.  */
 int
-mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
+__mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
 	 unsigned int msg_prio)
 {
   return __mq_timedsend (mqdes, msg_ptr, msg_len, msg_prio, NULL);
 }
+versioned_symbol (libc, __mq_send, mq_send, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, __mq_send, mq_send, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/mq_timedsend.c b/sysdeps/unix/sysv/linux/mq_timedsend.c
index 5f14ecb0bf..97b2d123a8 100644
--- a/sysdeps/unix/sysv/linux/mq_timedsend.c
+++ b/sysdeps/unix/sysv/linux/mq_timedsend.c
@@ -18,13 +18,14 @@
 
 #include <mqueue.h>
 #include <sysdep-cancel.h>
+#include <shlib-compat.h>
 
 /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
    on full message queue if ABS_TIMEOUT expires.  */
 int
-__mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
-                       unsigned int msg_prio,
-                       const struct __timespec64 *abs_timeout)
+___mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
+			unsigned int msg_prio,
+			const struct __timespec64 *abs_timeout)
 {
 # ifndef __NR_mq_timedsend_time64
 #  define __NR_mq_timedsend_time64 __NR_mq_timedsend
@@ -55,11 +56,23 @@ __mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
   return ret;
 }
 
-#if __TIMESIZE != 64
-librt_hidden_def (__mq_timedsend_time64)
+#if __TIMESIZE == 64
+versioned_symbol (libc, ___mq_timedsend_time64, mq_timedsend, GLIBC_2_34);
+libc_hidden_ver (___mq_timedsend_time64, __mq_timedsend)
+# ifndef SHARED
+strong_alias (___mq_timedsend_time64, __mq_timedsend)
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, ___mq_timedsend_time64, mq_timedsend, GLIBC_2_3_4);
+# endif
+
+#else /* __TIMESIZE != 64 */
+libc_hidden_ver (___mq_timedsend_time64, __mq_timedsend_time64)
+versioned_symbol (libc, ___mq_timedsend_time64, __mq_timedsend_time64,
+		  GLIBC_2_34);
 
 int
-__mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
+___mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
                 unsigned int msg_prio, const struct timespec *abs_timeout)
 {
   struct __timespec64 ts64;
@@ -69,8 +82,13 @@ __mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
   return __mq_timedsend_time64 (mqdes, msg_ptr, msg_len, msg_prio,
                                 abs_timeout != NULL ? &ts64 : NULL);
 }
-#endif
+versioned_symbol (libc, ___mq_timedsend, mq_timedsend, GLIBC_2_34);
+libc_hidden_ver (___mq_timedsend, __mq_timedsend)
+# ifndef SHARED
+strong_alias (___mq_timedsend, __mq_timedsend)
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (librt, ___mq_timedsend, mq_timedsend, GLIBC_2_3_4);
+# endif
 
-hidden_def (__mq_timedsend)
-weak_alias (__mq_timedsend, mq_timedsend)
-hidden_weak (mq_timedsend)
+#endif /* __TIMESIZE != 64 */
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 0c07cf2e80..cd69447f25 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1408,8 +1408,10 @@ GLIBC_2.21 mq_getattr F
 GLIBC_2.21 mq_notify F
 GLIBC_2.21 mq_open F
 GLIBC_2.21 mq_receive F
+GLIBC_2.21 mq_send F
 GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mq_timedreceive F
+GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
 GLIBC_2.21 mremap F
@@ -2432,6 +2434,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2524,8 +2527,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 7ea7b0a8f3..1ebc8dc94b 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,11 +1,8 @@
-GLIBC_2.21 mq_send F
-GLIBC_2.21 mq_timedsend F
 GLIBC_2.21 mq_unlink F
 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.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 4b3b448927..23ac9ab4ea 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2349,8 +2349,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2449,6 +2451,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2541,8 +2544,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 b3b90b8136..6f082b2d25 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2382,8 +2382,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2482,6 +2484,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2574,8 +2577,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 1720d4da88..52cdbc92d4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2195,8 +2195,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2309,8 +2311,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 3968e8e7cb..41ac10c6e9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,8 +8,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink 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 9a7d510295..a6f254b4da 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1451,8 +1451,10 @@ GLIBC_2.17 mq_getattr F
 GLIBC_2.17 mq_notify F
 GLIBC_2.17 mq_open F
 GLIBC_2.17 mq_receive F
+GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
+GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2609,8 +2611,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 1c3c05932e..4f4c72f3cc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.17 mq_send F
-GLIBC_2.17 mq_timedsend F
 GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 80fea20f51..a2749838fd 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1296,8 +1296,10 @@ GLIBC_2.33 mq_getattr F
 GLIBC_2.33 mq_notify F
 GLIBC_2.33 mq_open F
 GLIBC_2.33 mq_receive F
+GLIBC_2.33 mq_send F
 GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mq_timedreceive F
+GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
 GLIBC_2.33 mremap F
@@ -2174,8 +2176,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index 02e6e0d513..bcede2f3c4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.33 mq_send F
-GLIBC_2.33 mq_timedsend F
 GLIBC_2.33 mq_unlink F
 GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index b3ed38d911..7c4d8cc40c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1346,8 +1346,10 @@ GLIBC_2.27 mq_getattr F
 GLIBC_2.27 mq_notify F
 GLIBC_2.27 mq_open F
 GLIBC_2.27 mq_receive F
+GLIBC_2.27 mq_send F
 GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mq_timedreceive F
+GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
 GLIBC_2.27 mremap F
@@ -2374,8 +2376,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 7cd66b1ff6..15bac0b449 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.27 mq_send F
-GLIBC_2.27 mq_timedsend F
 GLIBC_2.27 mq_unlink F
 GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index d9e415fa6d..99c003615f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2348,8 +2348,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2447,6 +2449,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2539,8 +2542,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index dec539716c..3441d1fcd7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2236,8 +2236,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2346,8 +2348,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index acaafa5f29..0d4d401608 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,8 +8,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index ddc4e08f79..420f80d921 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2215,8 +2215,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2302,6 +2304,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2394,8 +2397,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 553574f741..d4cf18a52d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2215,8 +2215,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2299,6 +2301,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2391,8 +2394,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index 9d26b1298c..d697cfa27d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,10 +4,7 @@ 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.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 3e68e78ca2..0e4ca149d8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2346,8 +2346,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2442,6 +2444,7 @@ GLIBC_2.34 __lutimes64 F
 GLIBC_2.34 __mktime64 F
 GLIBC_2.34 __mq_open_2 F
 GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __msgctl64 F
 GLIBC_2.34 __mtx_timedlock64 F
 GLIBC_2.34 __nanosleep64 F
@@ -2534,8 +2537,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index ca31f9805a..d246e770d0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,10 +5,7 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
-GLIBC_2.34 __mq_timedsend_time64 F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 5d21d25fb9..b9e9d89789 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2270,8 +2270,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2368,8 +2370,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 6eae7e9482..3156616c8b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,8 +10,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 08422b301d..8029500dd3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2224,8 +2224,10 @@ GLIBC_2.3.4 mq_getattr F
 GLIBC_2.3.4 mq_notify F
 GLIBC_2.3.4 mq_open F
 GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2324,8 +2326,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index f61e3e7428..d20321ccad 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,8 +8,6 @@ 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 mq_send F
-GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
 GLIBC_2.4 __librt_version_placeholder F
 GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 38f4c2105d..d572f528bc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1370,8 +1370,10 @@ GLIBC_2.16 mq_getattr F
 GLIBC_2.16 mq_notify F
 GLIBC_2.16 mq_open F
 GLIBC_2.16 mq_receive F
+GLIBC_2.16 mq_send F
 GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mq_timedreceive F
+GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
 GLIBC_2.16 mremap F
@@ -2428,8 +2430,10 @@ GLIBC_2.34 mq_getattr F
 GLIBC_2.34 mq_notify F
 GLIBC_2.34 mq_open F
 GLIBC_2.34 mq_receive F
+GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
+GLIBC_2.34 mq_timedsend F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 7e39929d27..7ae8f7dc74 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.16 mq_send F
-GLIBC_2.16 mq_timedsend F
 GLIBC_2.16 mq_unlink F
 GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 27/34] Linux: Move mq_unlink from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (25 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 14:31   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 28/34] Linux: Move timer helper routines " Florian Weimer
                   ` (7 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbol was moved using scripts/move-symbol-to-libc.py.
A placeholder symbol is needed on some architectures for the
GLIBC_2.3.4 version.
---
 rt/Makefile                                               | 2 +-
 rt/Versions                                               | 8 ++++++--
 rt/librt-compat.c                                         | 6 ++++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist               | 2 +-
 sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist                | 2 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist                | 2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist                | 2 +-
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 2 +-
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 2 +-
 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 2 +-
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 2 +-
 sysdeps/unix/sysv/linux/mq_unlink.c                       | 7 ++++++-
 sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
 .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 2 +-
 .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 2 +-
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
 .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 2 +-
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
 sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 2 +-
 sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 2 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 2 +-
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 2 +-
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
 sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 2 +-
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
 sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 2 +-
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
 66 files changed, 100 insertions(+), 34 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index cea1189f4d..bd9d31b985 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  mq_unlink \
   timer_create \
   timer_delete \
   timer_getoverr \
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   mq_setattr \
   mq_timedreceive \
   mq_timedsend \
+  mq_unlink \
 
 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 3363ccb526..9a09062a2a 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -35,6 +35,7 @@ libc {
     mq_setattr;
     mq_timedreceive;
     mq_timedsend;
+    mq_unlink;
 %endif
   }
   GLIBC_2.4 {
@@ -77,6 +78,7 @@ libc {
     mq_setattr;
     mq_timedreceive;
     mq_timedsend;
+    mq_unlink;
 %endif
     shm_open;
     shm_unlink;
@@ -127,7 +129,9 @@ librt {
     timer_settime;
   }
   GLIBC_2.3.4 {
-%if !PTHREAD_IN_LIBC
+%if PTHREAD_IN_LIBC
+    __librt_version_placeholder;
+%else
     mq_close;
     mq_getattr;
     mq_notify;
@@ -137,8 +141,8 @@ librt {
     mq_setattr;
     mq_timedreceive;
     mq_timedsend;
-%endif
     mq_unlink;
+%endif
   }
   GLIBC_2.4 {
 %if PTHREAD_IN_LIBC
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
index ef353acdd1..24c2ed9db4 100644
--- a/rt/librt-compat.c
+++ b/rt/librt-compat.c
@@ -33,6 +33,12 @@ compat_symbol (librt, __librt_version_placeholder_1,
 # endif
 
 # if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34) \
+  && ABI_librt_GLIBC_2_3_4 != ABI_librt_GLIBC_2_1
+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
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_4);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index b4edd23bc8..141d5cb843 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -1367,6 +1367,7 @@ GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
+GLIBC_2.17 mq_unlink F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2419,6 +2420,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
index 4f4c72f3cc..54bb3e5c7c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c2fd6ec79e..5441b6a3f3 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2401,6 +2401,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2513,6 +2514,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 3156616c8b..8592c90bdf 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -10,6 +10,6 @@ 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 mq_unlink 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/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index c36d673f3e..37fd195f70 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1298,6 +1298,7 @@ GLIBC_2.32 mq_send F
 GLIBC_2.32 mq_setattr F
 GLIBC_2.32 mq_timedreceive F
 GLIBC_2.32 mq_timedsend F
+GLIBC_2.32 mq_unlink F
 GLIBC_2.32 mrand48 F
 GLIBC_2.32 mrand48_r F
 GLIBC_2.32 mremap F
@@ -2178,6 +2179,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
index c69ae6e40b..0454fb41fd 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.32 mq_unlink F
 GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
 GLIBC_2.32 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index b44d7f5d23..42ba748c07 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -325,6 +325,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1747,6 +1748,7 @@ GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
+GLIBC_2.4 mq_unlink F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 00fffc9bf4..8682174e36 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4335ee8c5b..92f06718bd 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -322,6 +322,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1744,6 +1745,7 @@ GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
+GLIBC_2.4 mq_unlink F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 00fffc9bf4..8682174e36 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 11f34272fa..7ee4e79de2 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -1353,6 +1353,7 @@ GLIBC_2.29 mq_send F
 GLIBC_2.29 mq_setattr F
 GLIBC_2.29 mq_timedreceive F
 GLIBC_2.29 mq_timedsend F
+GLIBC_2.29 mq_unlink F
 GLIBC_2.29 mrand48 F
 GLIBC_2.29 mrand48_r F
 GLIBC_2.29 mremap F
@@ -2441,6 +2442,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index 81964809e8..c92668b743 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.29 mq_unlink F
 GLIBC_2.29 timer_create F
 GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index d2337afa48..7610cc4343 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2215,6 +2215,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2394,6 +2395,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index ae326a36f4..54a6d61b0b 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2396,6 +2396,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2578,6 +2579,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ad7b86ca8e..cad4a129d1 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2250,6 +2250,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2351,6 +2352,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
index 6c8eb08863..842df91625 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -9,6 +9,6 @@ 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 mq_unlink 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/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e0106e57e3..ff831374fa 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -326,6 +326,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
@@ -1731,6 +1732,7 @@ GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_setattr F
 GLIBC_2.4 mq_timedreceive F
 GLIBC_2.4 mq_timedsend F
+GLIBC_2.4 mq_unlink F
 GLIBC_2.4 mrand48 F
 GLIBC_2.4 mrand48_r F
 GLIBC_2.4 mremap F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 00fffc9bf4..8682174e36 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 mq_unlink F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
 GLIBC_2.4 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 833105c87e..b2c98b40e9 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2339,6 +2339,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2521,6 +2522,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 168143b004..fa945ee6fc 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -1369,6 +1369,7 @@ GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
+GLIBC_2.18 mq_unlink F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2492,6 +2493,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index d0b5c08211..fcfed800bf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 mq_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 478c35898d..c65815be74 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -1369,6 +1369,7 @@ GLIBC_2.18 mq_send F
 GLIBC_2.18 mq_setattr F
 GLIBC_2.18 mq_timedreceive F
 GLIBC_2.18 mq_timedsend F
+GLIBC_2.18 mq_unlink F
 GLIBC_2.18 mrand48 F
 GLIBC_2.18 mrand48_r F
 GLIBC_2.18 mremap F
@@ -2489,6 +2490,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index d0b5c08211..fcfed800bf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 mq_unlink F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 4d2c5e7fff..9c0174bf65 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2307,6 +2307,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2486,6 +2487,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index c2dcd8a037..da85415743 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -3,7 +3,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 729413e091..ac245f4413 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2305,6 +2305,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2484,6 +2485,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index cc82aa817c..f17c4b3412 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2313,6 +2313,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2492,6 +2493,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index c2dcd8a037..da85415743 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -3,7 +3,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 746072a535..4d9dea349d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2307,6 +2307,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2407,6 +2408,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
index 1daa0ecaef..51354b072d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -3,6 +3,6 @@ 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.3.4 mq_unlink 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/mq_unlink.c b/sysdeps/unix/sysv/linux/mq_unlink.c
index dcdc6519c4..4afe95af44 100644
--- a/sysdeps/unix/sysv/linux/mq_unlink.c
+++ b/sysdeps/unix/sysv/linux/mq_unlink.c
@@ -18,10 +18,11 @@
 #include <errno.h>
 #include <mqueue.h>
 #include <sysdep.h>
+#include <shlib-compat.h>
 
 /* Remove message queue named NAME.  */
 int
-mq_unlink (const char *name)
+__mq_unlink (const char *name)
 {
   if (name[0] != '/')
     return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
@@ -40,3 +41,7 @@ mq_unlink (const char *name)
 
   return ret;
 }
+versioned_symbol (libc, __mq_unlink, mq_unlink, GLIBC_2_34);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+compat_symbol (libc, __mq_unlink, mq_unlink, GLIBC_2_3_4);
+#endif
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index cd69447f25..a1f3808f18 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -1412,6 +1412,7 @@ GLIBC_2.21 mq_send F
 GLIBC_2.21 mq_setattr F
 GLIBC_2.21 mq_timedreceive F
 GLIBC_2.21 mq_timedsend F
+GLIBC_2.21 mq_unlink F
 GLIBC_2.21 mrand48 F
 GLIBC_2.21 mrand48_r F
 GLIBC_2.21 mremap F
@@ -2531,6 +2532,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index 1ebc8dc94b..29111b77bd 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.21 mq_unlink F
 GLIBC_2.21 timer_create F
 GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 23ac9ab4ea..c80718d0b1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2353,6 +2353,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2548,6 +2549,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 6f082b2d25..8156d06db5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2386,6 +2386,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2581,6 +2582,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 52cdbc92d4..a99bd9409b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2199,6 +2199,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2315,6 +2316,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
index 41ac10c6e9..9df959a434 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -8,6 +8,6 @@ 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 mq_unlink 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 a6f254b4da..ae562f2864 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -1455,6 +1455,7 @@ GLIBC_2.17 mq_send F
 GLIBC_2.17 mq_setattr F
 GLIBC_2.17 mq_timedreceive F
 GLIBC_2.17 mq_timedsend F
+GLIBC_2.17 mq_unlink F
 GLIBC_2.17 mrand48 F
 GLIBC_2.17 mrand48_r F
 GLIBC_2.17 mremap F
@@ -2615,6 +2616,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
index 4f4c72f3cc..54bb3e5c7c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 mq_unlink F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
 GLIBC_2.17 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index a2749838fd..7422465183 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1300,6 +1300,7 @@ GLIBC_2.33 mq_send F
 GLIBC_2.33 mq_setattr F
 GLIBC_2.33 mq_timedreceive F
 GLIBC_2.33 mq_timedsend F
+GLIBC_2.33 mq_unlink F
 GLIBC_2.33 mrand48 F
 GLIBC_2.33 mrand48_r F
 GLIBC_2.33 mremap F
@@ -2180,6 +2181,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
index bcede2f3c4..540cdef209 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.33 mq_unlink F
 GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
 GLIBC_2.33 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 7c4d8cc40c..0bb8343ac4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -1350,6 +1350,7 @@ GLIBC_2.27 mq_send F
 GLIBC_2.27 mq_setattr F
 GLIBC_2.27 mq_timedreceive F
 GLIBC_2.27 mq_timedsend F
+GLIBC_2.27 mq_unlink F
 GLIBC_2.27 mrand48 F
 GLIBC_2.27 mrand48_r F
 GLIBC_2.27 mremap F
@@ -2380,6 +2381,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
index 15bac0b449..e436beaf7e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.27 mq_unlink F
 GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
 GLIBC_2.27 timer_getoverrun F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 99c003615f..f9db909d63 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2352,6 +2352,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2546,6 +2547,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 3441d1fcd7..593e5f9ae7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2240,6 +2240,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2352,6 +2353,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
index 0d4d401608..9e185ecaef 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -8,6 +8,6 @@ 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 mq_unlink 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/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 420f80d921..8da4e375d9 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2219,6 +2219,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2401,6 +2402,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __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 d4cf18a52d..6f13625e6f 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2219,6 +2219,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2398,6 +2399,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index d697cfa27d..cfe4455a75 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 0e4ca149d8..984222296d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2350,6 +2350,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2541,6 +2542,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index d246e770d0..fb3a2042e0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,7 +5,7 @@ GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.4 mq_unlink F
+GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index b9e9d89789..a6dc7f2e40 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2274,6 +2274,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2374,6 +2375,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
index 3156616c8b..8592c90bdf 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -10,6 +10,6 @@ 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 mq_unlink 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/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 8029500dd3..5d0a9c4012 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2228,6 +2228,7 @@ GLIBC_2.3.4 mq_send F
 GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 pthread_attr_getaffinity_np F
 GLIBC_2.3.4 pthread_attr_setaffinity_np F
 GLIBC_2.3.4 pthread_getaffinity_np F
@@ -2330,6 +2331,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
index d20321ccad..ce501e124d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -8,6 +8,6 @@ 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 mq_unlink 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/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index d572f528bc..d67ef0b6d5 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -1374,6 +1374,7 @@ GLIBC_2.16 mq_send F
 GLIBC_2.16 mq_setattr F
 GLIBC_2.16 mq_timedreceive F
 GLIBC_2.16 mq_timedsend F
+GLIBC_2.16 mq_unlink F
 GLIBC_2.16 mrand48 F
 GLIBC_2.16 mrand48_r F
 GLIBC_2.16 mremap F
@@ -2434,6 +2435,7 @@ GLIBC_2.34 mq_send F
 GLIBC_2.34 mq_setattr F
 GLIBC_2.34 mq_timedreceive F
 GLIBC_2.34 mq_timedsend F
+GLIBC_2.34 mq_unlink F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
index 7ae8f7dc74..3144e2e290 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.16 mq_unlink F
 GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
 GLIBC_2.16 timer_getoverrun F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 28/34] Linux: Move timer helper routines from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (26 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 27/34] Linux: Move mq_unlink from librt " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 14:41   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
                   ` (6 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

This adds several temporary GLIBC_PRIVATE exports.  The symbol names
are changed so that they all start with __timer_.

It is now possible to invoke the fork handler directly, so
pthread_atfork is no longer necessary.  The associated error cannot
happen anymore, and cancellation handling can be removed from
the helper thread routine.
---
 sysdeps/nptl/Makefile                         |  2 +-
 sysdeps/nptl/fork.c                           |  2 +
 sysdeps/unix/sysv/linux/Versions              |  5 ++
 sysdeps/unix/sysv/linux/kernel-posix-timers.h | 22 ++++---
 sysdeps/unix/sysv/linux/timer_create.c        | 14 ++---
 sysdeps/unix/sysv/linux/timer_delete.c        | 10 ++--
 sysdeps/unix/sysv/linux/timer_routines.c      | 59 +++++++++----------
 7 files changed, 64 insertions(+), 50 deletions(-)

diff --git a/sysdeps/nptl/Makefile b/sysdeps/nptl/Makefile
index 0707f130eb..27aa41af3c 100644
--- a/sysdeps/nptl/Makefile
+++ b/sysdeps/nptl/Makefile
@@ -17,7 +17,7 @@
 # <https://www.gnu.org/licenses/>.
 
 ifeq ($(subdir),rt)
-librt-sysdep_routines += timer_routines
+sysdep_routines += timer_routines
 
 tests += tst-mqueue8x
 CFLAGS-tst-mqueue8x.c += -fexceptions
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index d6a0996b79..930716c403 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -37,6 +37,7 @@
 #include <sys/single_threaded.h>
 #include <list.h>
 #include <mqueue.h>
+#include <kernel-posix-timers.h>
 
 static void
 fresetlockfiles (void)
@@ -231,6 +232,7 @@ __libc_fork (void)
 	  _IO_list_resetlock ();
 
 	  call_function_static_weak (__mq_notify_fork_subprocess);
+	  call_function_static_weak (__timer_fork_subprocess);
 
 	  call_function_static_weak (__nss_database_fork_subprocess,
 				     &nss_database_data);
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 051ecf9390..47d4357b9f 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -282,6 +282,11 @@ libc {
     __pread64_nocancel;
     __close_nocancel;
     __sigtimedwait;
+    __timer_active_sigev_thread;
+    __timer_active_sigev_thread_lock;
+    __timer_helper_once;
+    __timer_helper_tid;
+    __timer_start_helper_thread;
     # functions used by nscd
     __netlink_assert_response;
   }
diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
index 959a81a4d2..17fc32d48f 100644
--- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
+++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
@@ -26,19 +26,27 @@
 extern int __no_posix_timers attribute_hidden;
 
 /* Callback to start helper thread.  */
-extern void __start_helper_thread (void) attribute_hidden;
+extern void __timer_start_helper_thread (void);
+libc_hidden_proto (__timer_start_helper_thread)
 
 /* Control variable for helper thread creation.  */
-extern pthread_once_t __helper_once attribute_hidden;
+extern pthread_once_t __timer_helper_once;
+libc_hidden_proto (__timer_helper_once)
+
+/* Called from fork so that the new subprocess re-creates the
+   notification thread if necessary.  */
+void __timer_fork_subprocess (void) attribute_hidden;
 
 /* TID of the helper thread.  */
-extern pid_t __helper_tid attribute_hidden;
+extern pid_t __timer_helper_tid;
+libc_hidden_proto (__timer_helper_tid)
 
 /* List of active SIGEV_THREAD timers.  */
-extern struct timer *__active_timer_sigev_thread attribute_hidden;
-/* Lock for the __active_timer_sigev_thread.  */
-extern pthread_mutex_t __active_timer_sigev_thread_lock attribute_hidden;
-
+extern struct timer *__timer_active_sigev_thread;
+libc_hidden_proto (__timer_active_sigev_thread)
+/* Lock for __timer_active_sigev_thread.  */
+extern pthread_mutex_t __timer_active_sigev_thread_lock;
+libc_hidden_proto (__timer_active_sigev_thread_lock)
 
 /* Type of timers in the kernel.  */
 typedef int kernel_timer_t;
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index 1ea0086487..b21b0ca949 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -74,8 +74,8 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
     else
       {
 	/* Create the helper thread.  */
-	pthread_once (&__helper_once, __start_helper_thread);
-	if (__helper_tid == 0)
+	pthread_once (&__timer_helper_once, __timer_start_helper_thread);
+	if (__timer_helper_tid == 0)
 	  {
 	    /* No resources to start the helper thread.  */
 	    __set_errno (EAGAIN);
@@ -118,7 +118,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 	  { .sigev_value.sival_ptr = newp,
 	    .sigev_signo = SIGTIMER,
 	    .sigev_notify = SIGEV_SIGNAL | SIGEV_THREAD_ID,
-	    ._sigev_un = { ._pad = { [0] = __helper_tid } } };
+	    ._sigev_un = { ._pad = { [0] = __timer_helper_tid } } };
 
 	/* Create the timer.  */
 	int res;
@@ -132,10 +132,10 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 	  }
 
 	/* Add to the queue of active timers with thread delivery.  */
-	pthread_mutex_lock (&__active_timer_sigev_thread_lock);
-	newp->next = __active_timer_sigev_thread;
-	__active_timer_sigev_thread = newp;
-	pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
+	pthread_mutex_lock (&__timer_active_sigev_thread_lock);
+	newp->next = __timer_active_sigev_thread;
+	__timer_active_sigev_thread = newp;
+	pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
 
 	*timerid = timer_to_timerid (newp);
       }
diff --git a/sysdeps/unix/sysv/linux/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c
index 50aac8fc27..a7a183591e 100644
--- a/sysdeps/unix/sysv/linux/timer_delete.c
+++ b/sysdeps/unix/sysv/linux/timer_delete.c
@@ -42,12 +42,12 @@ timer_delete (timer_t timerid)
 	  struct timer *kt = timerid_to_timer (timerid);
 
 	  /* Remove the timer from the list.  */
-	  pthread_mutex_lock (&__active_timer_sigev_thread_lock);
-	  if (__active_timer_sigev_thread == kt)
-	    __active_timer_sigev_thread = kt->next;
+	  pthread_mutex_lock (&__timer_active_sigev_thread_lock);
+	  if (__timer_active_sigev_thread == kt)
+	    __timer_active_sigev_thread = kt->next;
 	  else
 	    {
-	      struct timer *prevp = __active_timer_sigev_thread;
+	      struct timer *prevp = __timer_active_sigev_thread;
 	      while (prevp->next != NULL)
 		if (prevp->next == kt)
 		  {
@@ -57,7 +57,7 @@ timer_delete (timer_t timerid)
 		else
 		  prevp = prevp->next;
 	    }
-	  pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
+	  pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
 
 	  free (kt);
 	}
diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
index 4098da8a5f..8d8c1a1e76 100644
--- a/sysdeps/unix/sysv/linux/timer_routines.c
+++ b/sysdeps/unix/sysv/linux/timer_routines.c
@@ -26,10 +26,13 @@
 
 
 /* List of active SIGEV_THREAD timers.  */
-struct timer *__active_timer_sigev_thread;
-/* Lock for the __active_timer_sigev_thread.  */
-pthread_mutex_t __active_timer_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
+struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
+libc_hidden_data_def (__timer_active_sigev_thread)
 
+/* Lock for _timer_active_sigev_thread.  */
+pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
+  = PTHREAD_MUTEX_INITIALIZER;
+libc_hidden_data_def (__timer_active_sigev_thread_lock)
 
 struct thread_start_data
 {
@@ -59,7 +62,7 @@ timer_sigev_thread (void *arg)
 
 
 /* Helper function to support starting threads for SIGEV_THREAD.  */
-static void *
+static _Noreturn void *
 timer_helper_thread (void *arg)
 {
   /* Endless loop of waiting for signals.  The loop is only ended when
@@ -68,16 +71,16 @@ timer_helper_thread (void *arg)
     {
       siginfo_t si;
 
-      while (sigwaitinfo (&sigtimer_set, &si) < 0);
+      while (__sigwaitinfo (&sigtimer_set, &si) < 0);
       if (si.si_code == SI_TIMER)
 	{
 	  struct timer *tk = (struct timer *) si.si_ptr;
 
 	  /* Check the timer is still used and will not go away
 	     while we are reading the values here.  */
-	  pthread_mutex_lock (&__active_timer_sigev_thread_lock);
+	  __pthread_mutex_lock (&__timer_active_sigev_thread_lock);
 
-	  struct timer *runp = __active_timer_sigev_thread;
+	  struct timer *runp = __timer_active_sigev_thread;
 	  while (runp != NULL)
 	    if (runp == tk)
 	      break;
@@ -96,45 +99,44 @@ timer_helper_thread (void *arg)
 		  td->sival = tk->sival;
 
 		  pthread_t th;
-		  pthread_create (&th, &tk->attr, timer_sigev_thread, td);
+		  __pthread_create (&th, &tk->attr, timer_sigev_thread, td);
 		}
 	    }
 
-	  pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
+	  __pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
 	}
-      else if (si.si_code == SI_TKILL)
-	/* The thread is canceled.  */
-	pthread_exit (NULL);
     }
 }
 
 
 /* Control variable for helper thread creation.  */
-pthread_once_t __helper_once attribute_hidden;
+pthread_once_t __timer_helper_once __attribute__ ((nocommon))
+  = PTHREAD_ONCE_INIT;
+libc_hidden_data_def (__timer_helper_once)
 
 
 /* TID of the helper thread.  */
-pid_t __helper_tid attribute_hidden;
+pid_t __timer_helper_tid __attribute__ ((nocommon));
+libc_hidden_data_def (__timer_helper_tid)
 
 
 /* Reset variables so that after a fork a new helper thread gets started.  */
-static void
-reset_helper_control (void)
+void
+__timer_fork_subprocess (void)
 {
-  __helper_once = PTHREAD_ONCE_INIT;
-  __helper_tid = 0;
+  __timer_helper_once = PTHREAD_ONCE_INIT;
+  __timer_helper_tid = 0;
 }
 
 
 void
-attribute_hidden
-__start_helper_thread (void)
+__timer_start_helper_thread (void)
 {
   /* The helper thread needs only very little resources
      and should go away automatically when canceled.  */
   pthread_attr_t attr;
-  (void) pthread_attr_init (&attr);
-  (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
+  (void) __pthread_attr_init (&attr);
+  (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
 
   /* Block all signals in the helper thread but SIGSETXID.  */
   sigset_t ss;
@@ -143,21 +145,18 @@ __start_helper_thread (void)
   int res = __pthread_attr_setsigmask_internal (&attr, &ss);
   if (res != 0)
     {
-      pthread_attr_destroy (&attr);
+      __pthread_attr_destroy (&attr);
       return;
     }
 
   /* Create the helper thread for this timer.  */
   pthread_t th;
-  res = pthread_create (&th, &attr, timer_helper_thread, NULL);
+  res = __pthread_create (&th, &attr, timer_helper_thread, NULL);
   if (res == 0)
     /* We managed to start the helper thread.  */
-    __helper_tid = ((struct pthread *) th)->tid;
+    __timer_helper_tid = ((struct pthread *) th)->tid;
 
   /* No need for the attribute anymore.  */
-  (void) pthread_attr_destroy (&attr);
-
-  /* We have to make sure that after fork()ing a new helper thread can
-     be created.  */
-  pthread_atfork (NULL, NULL, reset_helper_control);
+  (void) __pthread_attr_destroy (&attr);
 }
+libc_hidden_def (__timer_start_helper_thread)
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (27 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 28/34] Linux: Move timer helper routines " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 16:21   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
                   ` (5 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

This is almost equivalent to __WORDSIZE == 64
&& OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3_3), except
that this expression is true for mips64/n64 targets as well,
even though those did not undergo the timer_t transition.

For the architecture-specific override to work, it is necessary
to switch from "..." includes to <...> includes.
---
 .../sysv/linux/alpha/kernel-posix-timers.h    | 22 +++++++++++++++++++
 .../sysv/linux/ia64/kernel-posix-timers.h     | 22 +++++++++++++++++++
 sysdeps/unix/sysv/linux/kernel-posix-timers.h |  4 ++++
 .../powerpc/powerpc64/kernel-posix-timers.h   | 22 +++++++++++++++++++
 .../linux/s390/s390-64/kernel-posix-timers.h  | 22 +++++++++++++++++++
 .../linux/sparc/sparc64/kernel-posix-timers.h | 22 +++++++++++++++++++
 sysdeps/unix/sysv/linux/timer_create.c        |  2 +-
 sysdeps/unix/sysv/linux/timer_delete.c        |  2 +-
 sysdeps/unix/sysv/linux/timer_getoverr.c      |  2 +-
 sysdeps/unix/sysv/linux/timer_gettime.c       |  2 +-
 sysdeps/unix/sysv/linux/timer_routines.c      |  2 +-
 sysdeps/unix/sysv/linux/timer_settime.c       |  2 +-
 .../linux/x86_64/64/kernel-posix-timers.h     | 22 +++++++++++++++++++
 .../unix/sysv/linux/x86_64/timer_gettime.c    |  2 +-
 .../unix/sysv/linux/x86_64/timer_settime.c    |  2 +-
 15 files changed, 144 insertions(+), 8 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/alpha/kernel-posix-timers.h
 create mode 100644 sysdeps/unix/sysv/linux/ia64/kernel-posix-timers.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel-posix-timers.h
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/kernel-posix-timers.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/kernel-posix-timers.h
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/kernel-posix-timers.h

diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/alpha/kernel-posix-timers.h
new file mode 100644
index 0000000000..e84dfb97e5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  alpha 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/ia64/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/ia64/kernel-posix-timers.h
new file mode 100644
index 0000000000..fb00698cf7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  ia64 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
index 17fc32d48f..874b809eba 100644
--- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
+++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
@@ -103,3 +103,7 @@ timerid_to_kernel_timer (timer_t timerid)
   else
     return (kernel_timer_t) ((uintptr_t) timerid);
 }
+
+/* New targets use int instead of timer_t.  The difference only
+   matters on 64-bit targets.  */
+#define TIMER_T_WAS_INT_COMPAT 0
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel-posix-timers.h
new file mode 100644
index 0000000000..718750db92
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  powerpc64 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/s390/s390-64/kernel-posix-timers.h
new file mode 100644
index 0000000000..c8870c2dc1
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  s390x 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel-posix-timers.h
new file mode 100644
index 0000000000..b8485379ca
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  sparc64 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index b21b0ca949..3dcd5455fc 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -25,7 +25,7 @@
 #include <sysdep.h>
 #include <internaltypes.h>
 #include <pthreadP.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 #include "kernel-posix-cpu-timers.h"
 
 
diff --git a/sysdeps/unix/sysv/linux/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c
index a7a183591e..ee8c364d95 100644
--- a/sysdeps/unix/sysv/linux/timer_delete.c
+++ b/sysdeps/unix/sysv/linux/timer_delete.c
@@ -20,7 +20,7 @@
 #include <stdlib.h>
 #include <time.h>
 #include <sysdep.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 
 
 #ifdef timer_delete_alias
diff --git a/sysdeps/unix/sysv/linux/timer_getoverr.c b/sysdeps/unix/sysv/linux/timer_getoverr.c
index 9c7ba3acad..b997290768 100644
--- a/sysdeps/unix/sysv/linux/timer_getoverr.c
+++ b/sysdeps/unix/sysv/linux/timer_getoverr.c
@@ -19,7 +19,7 @@
 #include <errno.h>
 #include <time.h>
 #include <sysdep.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 
 
 #ifdef timer_getoverrun_alias
diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c
index 193fe3b140..0b31324da7 100644
--- a/sysdeps/unix/sysv/linux/timer_gettime.c
+++ b/sysdeps/unix/sysv/linux/timer_gettime.c
@@ -21,7 +21,7 @@
 #include <time.h>
 #include <sysdep.h>
 #include <kernel-features.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 
 int
 __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
index 8d8c1a1e76..fc3aa894ab 100644
--- a/sysdeps/unix/sysv/linux/timer_routines.c
+++ b/sysdeps/unix/sysv/linux/timer_routines.c
@@ -22,7 +22,7 @@
 #include <stdbool.h>
 #include <sysdep-cancel.h>
 #include <pthreadP.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 
 
 /* List of active SIGEV_THREAD timers.  */
diff --git a/sysdeps/unix/sysv/linux/timer_settime.c b/sysdeps/unix/sysv/linux/timer_settime.c
index f8bb16a4c2..b8326e36a4 100644
--- a/sysdeps/unix/sysv/linux/timer_settime.c
+++ b/sysdeps/unix/sysv/linux/timer_settime.c
@@ -21,7 +21,7 @@
 #include <time.h>
 #include <sysdep.h>
 #include <kernel-features.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 
 int
 __timer_settime64 (timer_t timerid, int flags,
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/x86_64/64/kernel-posix-timers.h
new file mode 100644
index 0000000000..db0beb5920
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/64/kernel-posix-timers.h
@@ -0,0 +1,22 @@
+/* POSIX timers support functionality.  x86_64 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; see the file COPYING.LIB.  If
+   not, see <https://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/kernel-posix-timers.h>
+
+#undef TIMER_T_WAS_INT_COMPAT
+#define TIMER_T_WAS_INT_COMPAT 1
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
index 3f3ae12d6b..107b1f97c7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
+++ b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
@@ -18,7 +18,7 @@
 
 #include <shlib-compat.h>
 #include <sysdep.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 #include "compat-timer.h"
 
 int
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
index 14a05965a3..f987cd16d3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
+++ b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
@@ -18,7 +18,7 @@
 
 #include <shlib-compat.h>
 #include <sysdep.h>
-#include "kernel-posix-timers.h"
+#include <kernel-posix-timers.h>
 #include "compat-timer.h"
 
 int
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (28 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 17:18   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 31/34] Linux: Move timer_getoverrun " Florian Weimer
                   ` (4 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.

timer_create and timer_delete are tied together via the int/timer_t
compatibility code.  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.
---
 rt/Makefile                                   |  4 +-
 rt/Versions                                   | 26 ++++---
 sysdeps/unix/sysv/linux/Versions              |  5 ++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
 sysdeps/unix/sysv/linux/alpha/Versions        |  2 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  4 --
 sysdeps/unix/sysv/linux/alpha/timer_create.c  |  1 -
 sysdeps/unix/sysv/linux/alpha/timer_delete.c  |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/Versions         |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  6 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  4 --
 sysdeps/unix/sysv/linux/ia64/timer_create.c   |  1 -
 sysdeps/unix/sysv/linux/ia64/timer_delete.c   |  1 -
 sysdeps/unix/sysv/linux/kernel-posix-timers.h | 10 +++
 .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
 .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  2 -
 .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  2 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  2 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
 .../sysv/linux/powerpc/powerpc64/Versions     |  2 +-
 .../linux/powerpc/powerpc64/be/libc.abilist   |  6 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  4 --
 .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
 .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/timer_create.c    |  1 -
 .../linux/powerpc/powerpc64/timer_delete.c    |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/s390/s390-64/Versions |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  6 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  4 --
 .../sysv/linux/s390/s390-64/timer_create.c    |  1 -
 .../sysv/linux/s390/s390-64/timer_delete.c    |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
 .../unix/sysv/linux/sparc/sparc64/Versions    |  2 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  4 --
 .../sysv/linux/sparc/sparc64/timer_create.c   |  1 -
 .../sysv/linux/sparc/sparc64/timer_delete.c   |  1 -
 sysdeps/unix/sysv/linux/timer_create.c        | 69 +++++++++++++++----
 sysdeps/unix/sysv/linux/timer_delete.c        | 46 ++++++++++---
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  6 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  4 --
 sysdeps/unix/sysv/linux/x86_64/Versions       |  2 +-
 sysdeps/unix/sysv/linux/x86_64/compat-timer.h |  8 ---
 sysdeps/unix/sysv/linux/x86_64/timer_create.c | 65 -----------------
 sysdeps/unix/sysv/linux/x86_64/timer_delete.c | 44 ------------
 .../unix/sysv/linux/x86_64/timer_getoverr.c   |  2 +-
 .../unix/sysv/linux/x86_64/timer_gettime.c    |  2 +-
 .../unix/sysv/linux/x86_64/timer_settime.c    |  2 +-
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
 90 files changed, 275 insertions(+), 242 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_create.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_delete.c

diff --git a/rt/Makefile b/rt/Makefile
index bd9d31b985..d2ff0221c7 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,8 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  timer_create \
-  timer_delete \
   timer_getoverr \
   timer_gettime \
   timer_settime \
@@ -63,6 +61,8 @@ $(librt-routines-var) += \
   mq_timedreceive \
   mq_timedsend \
   mq_unlink \
+  timer_create \
+  timer_delete \
 
 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 9a09062a2a..fca804148c 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -21,6 +21,10 @@ libc {
 %endif
   }
   GLIBC_2.2 {
+%if PTHREAD_IN_LIBC
+    timer_create;
+    timer_delete;
+%endif
     shm_open;
     shm_unlink;
   }
@@ -52,23 +56,23 @@ libc {
   GLIBC_2.34 {
 %if PTHREAD_IN_LIBC
     __mq_open_2;
-    aio_cancel;
     aio_cancel64;
-    aio_init;
-    aio_error;
+    aio_cancel;
     aio_error64;
-    aio_fsync;
+    aio_error;
     aio_fsync64;
-    aio_read;
+    aio_fsync;
+    aio_init;
     aio_read64;
-    aio_return;
+    aio_read;
     aio_return64;
-    aio_suspend;
+    aio_return;
     aio_suspend64;
-    aio_write;
+    aio_suspend;
     aio_write64;
-    lio_listio;
+    aio_write;
     lio_listio64;
+    lio_listio;
     mq_close;
     mq_getattr;
     mq_notify;
@@ -79,6 +83,8 @@ libc {
     mq_timedreceive;
     mq_timedsend;
     mq_unlink;
+    timer_create;
+    timer_delete;
 %endif
     shm_open;
     shm_unlink;
@@ -122,8 +128,10 @@ librt {
 %endif
   }
   GLIBC_2.2 {
+%if !PTHREAD_IN_LIBC
     timer_create;
     timer_delete;
+%endif
     timer_getoverrun;
     timer_gettime;
     timer_settime;
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 47d4357b9f..0db1b9c31c 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -121,6 +121,10 @@ libc {
     posix_fallocate64;
     sys_sigabbrev;
     sys_siglist;
+
+    # Changed timer_t.  Only used by some 64-bit targets.
+    timer_create;
+    timer_delete;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
@@ -284,6 +288,7 @@ libc {
     __sigtimedwait;
     __timer_active_sigev_thread;
     __timer_active_sigev_thread_lock;
+    __timer_compat_list;
     __timer_helper_once;
     __timer_helper_tid;
     __timer_start_helper_thread;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 141d5cb843..17779baac1 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2006,6 +2006,8 @@ GLIBC_2.17 tfind F
 GLIBC_2.17 time F
 GLIBC_2.17 timegm F
 GLIBC_2.17 timelocal F
+GLIBC_2.17 timer_create F
+GLIBC_2.17 timer_delete F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2529,6 +2531,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 54bb3e5c7c..34768d1472 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index db6116a890..d4bd056f64 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -104,7 +104,7 @@ librt {
   }
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 5441b6a3f3..985a1deca9 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2093,6 +2093,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x8
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2353,6 +2355,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 _OtsAddX F
 GLIBC_2.3.4 _OtsConvertFloatTX F
 GLIBC_2.3.4 _OtsConvertFloatXT F
@@ -2623,6 +2627,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 8592c90bdf..3b744cf5a1 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,12 +1,8 @@
 GLIBC_2.1 __librt_version_placeholder F
-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.3 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/alpha/timer_create.c b/sysdeps/unix/sysv/linux/alpha/timer_create.c
deleted file mode 100644
index d307135003..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/timer_delete.c b/sysdeps/unix/sysv/linux/alpha/timer_delete.c
deleted file mode 100644
index 2dd94f5c7a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 37fd195f70..22fa42dfc3 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1940,6 +1940,8 @@ GLIBC_2.32 thrd_yield F
 GLIBC_2.32 time F
 GLIBC_2.32 timegm F
 GLIBC_2.32 timelocal F
+GLIBC_2.32 timer_create F
+GLIBC_2.32 timer_delete F
 GLIBC_2.32 timerfd_create F
 GLIBC_2.32 timerfd_gettime F
 GLIBC_2.32 timerfd_settime F
@@ -2288,6 +2290,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 0454fb41fd..7bc7c57bf0 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 42ba748c07..c8ff2a0b74 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -434,6 +434,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2350,6 +2352,8 @@ GLIBC_2.4 tfind F
 GLIBC_2.4 time F
 GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
+GLIBC_2.4 timer_create F
+GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,7 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-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
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 92f06718bd..b237b78f85 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -431,6 +431,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2347,6 +2349,8 @@ GLIBC_2.4 tfind F
 GLIBC_2.4 time F
 GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
+GLIBC_2.4 timer_create F
+GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,7 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-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
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 7ee4e79de2..c1b6927cea 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2030,6 +2030,8 @@ GLIBC_2.29 thrd_yield F
 GLIBC_2.29 time F
 GLIBC_2.29 timegm F
 GLIBC_2.29 timelocal F
+GLIBC_2.29 timer_create F
+GLIBC_2.29 timer_delete F
 GLIBC_2.29 timerfd_create F
 GLIBC_2.29 timerfd_gettime F
 GLIBC_2.29 timerfd_settime F
@@ -2551,6 +2553,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 c92668b743..3d7c839b9b 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 7610cc4343..c5021c8109 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1744,6 +1744,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2504,6 +2506,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 54a6d61b0b..8055ea6984 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2106,6 +2106,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2688,6 +2690,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
index f438b12587..29b0d98cc6 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -30,7 +30,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index cad4a129d1..4cf1da5b62 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1765,6 +1765,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2218,6 +2220,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2461,6 +2465,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 842df91625..74a4971070 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,11 +1,7 @@
 GLIBC_2.1 __librt_version_placeholder F
-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.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
diff --git a/sysdeps/unix/sysv/linux/ia64/timer_create.c b/sysdeps/unix/sysv/linux/ia64/timer_create.c
deleted file mode 100644
index d307135003..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
diff --git a/sysdeps/unix/sysv/linux/ia64/timer_delete.c b/sysdeps/unix/sysv/linux/ia64/timer_delete.c
deleted file mode 100644
index 2dd94f5c7a..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
index 874b809eba..99a2937458 100644
--- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
+++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
@@ -48,6 +48,11 @@ libc_hidden_proto (__timer_active_sigev_thread)
 extern pthread_mutex_t __timer_active_sigev_thread_lock;
 libc_hidden_proto (__timer_active_sigev_thread_lock)
 
+extern __typeof (timer_create) __timer_create;
+libc_hidden_proto (__timer_create)
+extern __typeof (timer_delete) __timer_delete;
+libc_hidden_proto (__timer_delete)
+
 /* Type of timers in the kernel.  */
 typedef int kernel_timer_t;
 
@@ -107,3 +112,8 @@ timerid_to_kernel_timer (timer_t timerid)
 /* New targets use int instead of timer_t.  The difference only
    matters on 64-bit targets.  */
 #define TIMER_T_WAS_INT_COMPAT 0
+
+/* Used if an override sets TIMER_T_WAS_INT_COMPAT to 1.  */
+#define OLD_TIMER_MAX 256
+extern timer_t __timer_compat_list[OLD_TIMER_MAX];
+libc_hidden_proto (__timer_compat_list)
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index ff831374fa..e7c0a81f37 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -435,6 +435,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2330,6 +2332,8 @@ GLIBC_2.4 tfind F
 GLIBC_2.4 time F
 GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
+GLIBC_2.4 timer_create F
+GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,7 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-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
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index b2c98b40e9..b82f6366ee 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2062,6 +2062,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2631,6 +2633,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index fa945ee6fc..3f9dfa7664 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2010,6 +2010,8 @@ GLIBC_2.18 tfind F
 GLIBC_2.18 time F
 GLIBC_2.18 timegm F
 GLIBC_2.18 timelocal F
+GLIBC_2.18 timer_create F
+GLIBC_2.18 timer_delete F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2602,6 +2604,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 fcfed800bf..2efee3a326 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index c65815be74..bb2fd6251f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2010,6 +2010,8 @@ GLIBC_2.18 tfind F
 GLIBC_2.18 time F
 GLIBC_2.18 timegm F
 GLIBC_2.18 timelocal F
+GLIBC_2.18 timer_create F
+GLIBC_2.18 timer_delete F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2599,6 +2601,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 fcfed800bf..2efee3a326 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 9c0174bf65..938142fb4a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1993,6 +1993,8 @@ GLIBC_2.2 sys_siglist D 0x100
 GLIBC_2.2 sysv_signal F
 GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2596,6 +2598,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 da85415743..dbc81ebe4b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index ac245f4413..d62382883b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1991,6 +1991,8 @@ GLIBC_2.2 sys_siglist D 0x100
 GLIBC_2.2 sysv_signal F
 GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2594,6 +2596,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 f17c4b3412..28a8a5d294 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1989,6 +1989,8 @@ GLIBC_2.2 sys_siglist D 0x100
 GLIBC_2.2 sysv_signal F
 GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2602,6 +2604,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 da85415743..dbc81ebe4b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4d9dea349d..6748f9beef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1985,6 +1985,8 @@ GLIBC_2.2 sys_siglist D 0x200
 GLIBC_2.2 sysv_signal F
 GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2517,6 +2519,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 51354b072d..00fd77bbab 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index a1f3808f18..03d13e5ee1 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2052,6 +2052,8 @@ GLIBC_2.21 tfind F
 GLIBC_2.21 time F
 GLIBC_2.21 timegm F
 GLIBC_2.21 timelocal F
+GLIBC_2.21 timer_create F
+GLIBC_2.21 timer_delete F
 GLIBC_2.21 timerfd_create F
 GLIBC_2.21 timerfd_gettime F
 GLIBC_2.21 timerfd_settime F
@@ -2641,6 +2643,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 29111b77bd..a83ae32d03 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index c80718d0b1..c9a45ecb17 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2067,6 +2067,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2658,6 +2660,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 8156d06db5..c7fbc347a1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2071,6 +2071,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2691,6 +2693,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 84c809507f..4eb22c11ac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -29,7 +29,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     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 a99bd9409b..fb5eb9c67e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1886,6 +1886,8 @@ GLIBC_2.3 tfind F
 GLIBC_2.3 time F
 GLIBC_2.3 timegm F
 GLIBC_2.3 timelocal F
+GLIBC_2.3 timer_create F
+GLIBC_2.3 timer_delete F
 GLIBC_2.3 times F
 GLIBC_2.3 timezone D 0x8
 GLIBC_2.3 tmpfile F
@@ -2162,6 +2164,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2425,6 +2429,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 9df959a434..914203b043 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,10 +1,6 @@
-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.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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index ae562f2864..b89256aba0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2094,6 +2094,8 @@ GLIBC_2.17 tfind F
 GLIBC_2.17 time F
 GLIBC_2.17 timegm F
 GLIBC_2.17 timelocal F
+GLIBC_2.17 timer_create F
+GLIBC_2.17 timer_delete F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2725,6 +2727,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 54bb3e5c7c..34768d1472 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
deleted file mode 100644
index d307135003..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
deleted file mode 100644
index 2dd94f5c7a..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 7422465183..c653f52373 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1950,6 +1950,8 @@ GLIBC_2.33 thrd_yield F
 GLIBC_2.33 time F
 GLIBC_2.33 timegm F
 GLIBC_2.33 timelocal F
+GLIBC_2.33 timer_create F
+GLIBC_2.33 timer_delete F
 GLIBC_2.33 timerfd_create F
 GLIBC_2.33 timerfd_gettime F
 GLIBC_2.33 timerfd_settime F
@@ -2290,6 +2292,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 540cdef209..09bbee0960 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 0bb8343ac4..711484eee5 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2016,6 +2016,8 @@ GLIBC_2.27 tfind F
 GLIBC_2.27 time F
 GLIBC_2.27 timegm F
 GLIBC_2.27 timelocal F
+GLIBC_2.27 timer_create F
+GLIBC_2.27 timer_delete F
 GLIBC_2.27 timerfd_create F
 GLIBC_2.27 timerfd_gettime F
 GLIBC_2.27 timerfd_settime F
@@ -2490,6 +2492,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 e436beaf7e..8e1d8b21fe 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,5 +1,3 @@
-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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index f9db909d63..4040312275 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2065,6 +2065,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2656,6 +2658,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
index 3f4d960421..5989ac75a9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
@@ -9,7 +9,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     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 593e5f9ae7..4cf6a5ea09 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1761,6 +1761,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2208,6 +2210,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2462,6 +2466,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 9e185ecaef..34e8d31133 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,10 +1,6 @@
-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.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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
deleted file mode 100644
index d307135003..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
deleted file mode 100644
index 2dd94f5c7a..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 8da4e375d9..6fd93a5445 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1748,6 +1748,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2511,6 +2513,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 6f13625e6f..c5c41bf0e6 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1748,6 +1748,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2508,6 +2510,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 984222296d..132470d40b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2060,6 +2060,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
 GLIBC_2.2 svc_pollfd D 0x4
 GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2651,6 +2653,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 fb3a2042e0..d8ff3b0988 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,6 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
index 33b6779ec5..358081399a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -14,7 +14,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index a6dc7f2e40..6ee552611b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1791,6 +1791,8 @@ GLIBC_2.2 tfind F
 GLIBC_2.2 time F
 GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
+GLIBC_2.2 timer_create F
+GLIBC_2.2 timer_delete F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2242,6 +2244,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2484,6 +2488,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 8592c90bdf..3b744cf5a1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,12 +1,8 @@
 GLIBC_2.1 __librt_version_placeholder F
-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.3 __librt_version_placeholder F
-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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
deleted file mode 100644
index d307135003..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
deleted file mode 100644
index 2dd94f5c7a..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index 3dcd5455fc..9861177cf2 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -27,17 +27,11 @@
 #include <pthreadP.h>
 #include <kernel-posix-timers.h>
 #include "kernel-posix-cpu-timers.h"
-
-
-#ifdef timer_create_alias
-# define timer_create timer_create_alias
-#endif
-
+#include <shlib-compat.h>
 
 int
-timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
+___timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 {
-#undef timer_create
   {
     clockid_t syscall_clockid = (clock_id == CLOCK_PROCESS_CPUTIME_ID
 				 ? MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
@@ -74,7 +68,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
     else
       {
 	/* Create the helper thread.  */
-	pthread_once (&__timer_helper_once, __timer_start_helper_thread);
+	__pthread_once (&__timer_helper_once, __timer_start_helper_thread);
 	if (__timer_helper_tid == 0)
 	  {
 	    /* No resources to start the helper thread.  */
@@ -93,7 +87,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 	/* We cannot simply copy the thread attributes since the
 	   implementation might keep internal information for
 	   each instance.  */
-	pthread_attr_init (&newp->attr);
+	__pthread_attr_init (&newp->attr);
 	if (evp->sigev_notify_attributes != NULL)
 	  {
 	    struct pthread_attr *nattr;
@@ -111,7 +105,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 	  }
 
 	/* In any case set the detach flag.  */
-	pthread_attr_setdetachstate (&newp->attr, PTHREAD_CREATE_DETACHED);
+	__pthread_attr_setdetachstate (&newp->attr, PTHREAD_CREATE_DETACHED);
 
 	/* Create the event structure for the kernel timer.  */
 	struct sigevent sev =
@@ -132,10 +126,10 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 	  }
 
 	/* Add to the queue of active timers with thread delivery.  */
-	pthread_mutex_lock (&__timer_active_sigev_thread_lock);
+	__pthread_mutex_lock (&__timer_active_sigev_thread_lock);
 	newp->next = __timer_active_sigev_thread;
 	__timer_active_sigev_thread = newp;
-	pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
+	__pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
 
 	*timerid = timer_to_timerid (newp);
       }
@@ -143,3 +137,52 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 
   return 0;
 }
+versioned_symbol (libc, ___timer_create, timer_create, GLIBC_2_34);
+libc_hidden_ver (___timer_create, __timer_create)
+
+#if TIMER_T_WAS_INT_COMPAT
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
+# endif
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
+timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
+libc_hidden_data_def (__timer_compat_list)
+
+int
+__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
+{
+  timer_t newp;
+
+  int res = __timer_create (clock_id, evp, &newp);
+  if (res == 0)
+    {
+      int i;
+      for (i = 0; i < OLD_TIMER_MAX; ++i)
+	if (__timer_compat_list[i] == NULL
+	    && ! atomic_compare_and_exchange_bool_acq (&__timer_compat_list[i],
+						       newp, NULL))
+	  {
+	    *timerid = i;
+	    break;
+	  }
+
+      if (__glibc_unlikely (i == OLD_TIMER_MAX))
+	{
+	  /* No free slot.  */
+	  (void) __timer_delete (newp);
+	  __set_errno (EINVAL);
+	  res = -1;
+	}
+    }
+
+  return res;
+}
+compat_symbol (librt, __timer_create_old, timer_create, GLIBC_2_2);
+# endif /* OTHER_SHLIB_COMPAT */
+
+#else /* !TIMER_T_WAS_INT_COMPAT */
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_2);
+# endif
+#endif /* !TIMER_T_WAS_INT_COMPAT */
diff --git a/sysdeps/unix/sysv/linux/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c
index ee8c364d95..074a489afd 100644
--- a/sysdeps/unix/sysv/linux/timer_delete.c
+++ b/sysdeps/unix/sysv/linux/timer_delete.c
@@ -21,17 +21,12 @@
 #include <time.h>
 #include <sysdep.h>
 #include <kernel-posix-timers.h>
-
-
-#ifdef timer_delete_alias
-# define timer_delete timer_delete_alias
-#endif
-
+#include <pthreadP.h>
+#include <shlib-compat.h>
 
 int
-timer_delete (timer_t timerid)
+___timer_delete (timer_t timerid)
 {
-#undef timer_delete
   kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
   int res = INLINE_SYSCALL_CALL (timer_delete, ktimerid);
 
@@ -42,7 +37,7 @@ timer_delete (timer_t timerid)
 	  struct timer *kt = timerid_to_timer (timerid);
 
 	  /* Remove the timer from the list.  */
-	  pthread_mutex_lock (&__timer_active_sigev_thread_lock);
+	  __pthread_mutex_lock (&__timer_active_sigev_thread_lock);
 	  if (__timer_active_sigev_thread == kt)
 	    __timer_active_sigev_thread = kt->next;
 	  else
@@ -57,7 +52,7 @@ timer_delete (timer_t timerid)
 		else
 		  prevp = prevp->next;
 	    }
-	  pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
+	  __pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
 
 	  free (kt);
 	}
@@ -69,3 +64,34 @@ timer_delete (timer_t timerid)
      Return the error.  */
   return -1;
 }
+versioned_symbol (libc, ___timer_delete, timer_delete, GLIBC_2_34);
+libc_hidden_ver (___timer_delete, __timer_delete)
+
+#if TIMER_T_WAS_INT_COMPAT
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (librt, ___timer_delete, timer_delete, GLIBC_2_3_3);
+#endif
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
+int
+__timer_delete_old (int timerid)
+{
+  int res = __timer_delete (__timer_compat_list[timerid]);
+
+  if (res == 0)
+    /* Successful timer deletion, now free the index.  We only need to
+       store a word and that better be atomic.  */
+    __timer_compat_list[timerid] = NULL;
+
+  return res;
+}
+compat_symbol (librt, __timer_delete_old, timer_delete, GLIBC_2_2);
+# endif /* OTHER_SHLIB_COMPAT */
+
+#else /* !TIMER_T_WAS_INT_COMPAT */
+/* The transition from int to timer_t did not change ABI because the
+   type sizes are the same.  */
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, ___timer_delete, timer_delete, 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 5d0a9c4012..377d35a04f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1760,6 +1760,8 @@ GLIBC_2.2.5 tfind F
 GLIBC_2.2.5 time F
 GLIBC_2.2.5 timegm F
 GLIBC_2.2.5 timelocal F
+GLIBC_2.2.5 timer_create F
+GLIBC_2.2.5 timer_delete F
 GLIBC_2.2.5 times F
 GLIBC_2.2.5 timezone D 0x8
 GLIBC_2.2.5 tmpfile F
@@ -2196,6 +2198,8 @@ GLIBC_2.3.3 strtoll_l F
 GLIBC_2.3.3 strtoull_l F
 GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
+GLIBC_2.3.3 timer_create F
+GLIBC_2.3.3 timer_delete F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2440,6 +2444,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 ce501e124d..13a2bf2022 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,10 +1,6 @@
-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.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
diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
index 2a7ed280fd..c4d1c5fb79 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Versions
+++ b/sysdeps/unix/sysv/linux/x86_64/Versions
@@ -11,7 +11,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_create; timer_delete; timer_getoverrun; timer_gettime;
+    timer_getoverrun; timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
index 334808b5ac..c61eb40070 100644
--- a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
+++ b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
@@ -20,14 +20,6 @@
 #include <time.h>
 #include <sys/types.h>
 
-#define OLD_TIMER_MAX	256
-
-extern timer_t __compat_timer_list[OLD_TIMER_MAX] attribute_hidden;
-
-
-extern int __timer_create_new (clockid_t clock_id, struct sigevent *evp,
-			       timer_t *timerid);
-extern int __timer_delete_new (timer_t timerid);
 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,
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_create.c b/sysdeps/unix/sysv/linux/x86_64/timer_create.c
deleted file mode 100644
index ec71ae488b..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/timer_create.c
+++ /dev/null
@@ -1,65 +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 "compat-timer.h"
-#include <atomic.h>
-
-
-#define timer_create_alias __timer_create_new
-#include <sysdeps/unix/sysv/linux/timer_create.c>
-
-#undef timer_create
-versioned_symbol (librt, __timer_create_new, timer_create, GLIBC_2_3_3);
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-timer_t __compat_timer_list[OLD_TIMER_MAX] attribute_hidden;
-
-
-int
-__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
-{
-  timer_t newp;
-
-  int res = __timer_create_new (clock_id, evp, &newp);
-  if (res == 0)
-    {
-      int i;
-      for (i = 0; i < OLD_TIMER_MAX; ++i)
-	if (__compat_timer_list[i] == NULL
-	    && ! atomic_compare_and_exchange_bool_acq (&__compat_timer_list[i],
-						       newp, NULL))
-	  {
-	    *timerid = i;
-	    break;
-	  }
-
-      if (__glibc_unlikely (i == OLD_TIMER_MAX))
-	{
-	  /* No free slot.  */
-	  (void) __timer_delete_new (newp);
-	  __set_errno (EINVAL);
-	  res = -1;
-	}
-    }
-
-  return res;
-}
-compat_symbol (librt, __timer_create_old, timer_create, GLIBC_2_2);
-#endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_delete.c b/sysdeps/unix/sysv/linux/x86_64/timer_delete.c
deleted file mode 100644
index 7fc37fc1a7..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/timer_delete.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 "compat-timer.h"
-
-
-#define timer_delete_alias __timer_delete_new
-#include <sysdeps/unix/sysv/linux/timer_delete.c>
-
-#undef timer_delete
-versioned_symbol (librt, __timer_delete_new, timer_delete, GLIBC_2_3_3);
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-int
-__timer_delete_old (int timerid)
-{
-  int res = __timer_delete_new (__compat_timer_list[timerid]);
-
-  if (res == 0)
-    /* Successful timer deletion, now free the index.  We only need to
-       store a word and that better be atomic.  */
-    __compat_timer_list[timerid] = NULL;
-
-  return res;
-}
-compat_symbol (librt, __timer_delete_old, timer_delete, GLIBC_2_2);
-#endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
index 9b4c1b2235..fb6e631a00 100644
--- a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
+++ b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
@@ -32,7 +32,7 @@ versioned_symbol (librt, __timer_getoverrun_new, timer_getoverrun,
 int
 __timer_getoverrun_old (int timerid)
 {
-  return __timer_getoverrun_new (__compat_timer_list[timerid]);
+  return __timer_getoverrun_new (__timer_compat_list[timerid]);
 }
 compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, GLIBC_2_2);
 #endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
index 107b1f97c7..06ccbc40bd 100644
--- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
+++ b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
@@ -35,7 +35,7 @@ versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3);
 int
 __timer_gettime_old (int timerid, struct itimerspec *value)
 {
-  return __timer_gettime_new (__compat_timer_list[timerid], value);
+  return __timer_gettime_new (__timer_compat_list[timerid], value);
 }
 compat_symbol (librt, __timer_gettime_old, timer_gettime, GLIBC_2_2);
 #endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
index f987cd16d3..dd7d01e849 100644
--- a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
+++ b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
@@ -37,7 +37,7 @@ int
 __timer_settime_old (int timerid, int flags, const struct itimerspec *value,
 		     struct itimerspec *ovalue)
 {
-  return __timer_settime_new (__compat_timer_list[timerid], flags,
+  return __timer_settime_new (__timer_compat_list[timerid], flags,
 			      value, ovalue);
 }
 compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index d67ef0b6d5..620f35836c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2011,6 +2011,8 @@ GLIBC_2.16 tfind F
 GLIBC_2.16 time F
 GLIBC_2.16 timegm F
 GLIBC_2.16 timelocal F
+GLIBC_2.16 timer_create F
+GLIBC_2.16 timer_delete F
 GLIBC_2.16 timerfd_create F
 GLIBC_2.16 timerfd_gettime F
 GLIBC_2.16 timerfd_settime F
@@ -2544,6 +2546,8 @@ GLIBC_2.34 thrd_create F
 GLIBC_2.34 thrd_detach F
 GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
+GLIBC_2.34 timer_create F
+GLIBC_2.34 timer_delete 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 3144e2e290..4b3e816fdd 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,5 +1,3 @@
-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
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 31/34] Linux: Move timer_getoverrun from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (29 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 17:26   ` Adhemerval Zanella
  2021-06-24 17:38   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 " Florian Weimer
                   ` (3 subsequent siblings)
  34 siblings, 2 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

The symbol was 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.
---
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  4 +-
 sysdeps/unix/sysv/linux/Versions              |  1 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/alpha/Versions        |  2 +-
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 ++
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 .../unix/sysv/linux/alpha/timer_getoverr.c    |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
 sysdeps/unix/sysv/linux/ia64/Versions         |  2 +-
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 ++
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c |  1 -
 sysdeps/unix/sysv/linux/kernel-posix-timers.h |  2 +
 .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../sysv/linux/microblaze/be/librt.abilist    |  1 -
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../sysv/linux/microblaze/le/librt.abilist    |  1 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/librt.abilist     |  1 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../sysv/linux/powerpc/powerpc64/Versions     |  2 +-
 .../linux/powerpc/powerpc64/be/libc.abilist   |  3 ++
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
 .../linux/powerpc/powerpc64/timer_getoverr.c  |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/s390/s390-64/Versions |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 ++
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 .../sysv/linux/s390/s390-64/timer_getoverr.c  |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
 .../unix/sysv/linux/sparc/sparc64/Versions    |  2 +-
 .../sysv/linux/sparc/sparc64/libc.abilist     |  3 ++
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../sysv/linux/sparc/sparc64/timer_getoverr.c |  1 -
 sysdeps/unix/sysv/linux/timer_getoverr.c      | 32 ++++++++++++----
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 ++
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/x86_64/Versions       |  2 +-
 .../unix/sysv/linux/x86_64/timer_getoverr.c   | 38 -------------------
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
 79 files changed, 107 insertions(+), 95 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c

diff --git a/rt/Makefile b/rt/Makefile
index d2ff0221c7..1eadb94ea8 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  timer_getoverr \
   timer_gettime \
   timer_settime \
 
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   mq_unlink \
   timer_create \
   timer_delete \
+  timer_getoverr \
 
 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 fca804148c..de78be15dc 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -24,6 +24,7 @@ libc {
 %if PTHREAD_IN_LIBC
     timer_create;
     timer_delete;
+    timer_getoverrun;
 %endif
     shm_open;
     shm_unlink;
@@ -85,6 +86,7 @@ libc {
     mq_unlink;
     timer_create;
     timer_delete;
+    timer_getoverrun;
 %endif
     shm_open;
     shm_unlink;
@@ -131,8 +133,8 @@ librt {
 %if !PTHREAD_IN_LIBC
     timer_create;
     timer_delete;
-%endif
     timer_getoverrun;
+%endif
     timer_gettime;
     timer_settime;
   }
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 0db1b9c31c..31fb4a437b 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -125,6 +125,7 @@ libc {
     # Changed timer_t.  Only used by some 64-bit targets.
     timer_create;
     timer_delete;
+    timer_getoverrun;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 17779baac1..9426bbe3f8 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2008,6 +2008,7 @@ GLIBC_2.17 timegm F
 GLIBC_2.17 timelocal F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
+GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2533,6 +2534,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 34768d1472..493768f440 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timer_gettime F
 GLIBC_2.17 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index d4bd056f64..dd5b365d77 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -104,7 +104,7 @@ librt {
   }
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 985a1deca9..50ab6f3fc1 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2095,6 +2095,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2357,6 +2358,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 _OtsAddX F
 GLIBC_2.3.4 _OtsConvertFloatTX F
 GLIBC_2.3.4 _OtsConvertFloatXT F
@@ -2629,6 +2631,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 3b744cf5a1..34d42d122b 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,9 +1,7 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c b/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
deleted file mode 100644
index 22eaff5cda..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 22fa42dfc3..aafc056267 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1942,6 +1942,7 @@ GLIBC_2.32 timegm F
 GLIBC_2.32 timelocal F
 GLIBC_2.32 timer_create F
 GLIBC_2.32 timer_delete F
+GLIBC_2.32 timer_getoverrun F
 GLIBC_2.32 timerfd_create F
 GLIBC_2.32 timerfd_gettime F
 GLIBC_2.32 timerfd_settime F
@@ -2292,6 +2293,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 7bc7c57bf0..14ae3d7c65 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.32 timer_getoverrun F
 GLIBC_2.32 timer_gettime F
 GLIBC_2.32 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index c8ff2a0b74..ac73d766ba 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -436,6 +436,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2354,6 +2355,7 @@ GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
+GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 b237b78f85..96ad967292 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -433,6 +433,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2351,6 +2352,7 @@ GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
+GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 c1b6927cea..980ac9c497 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2032,6 +2032,7 @@ GLIBC_2.29 timegm F
 GLIBC_2.29 timelocal F
 GLIBC_2.29 timer_create F
 GLIBC_2.29 timer_delete F
+GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timerfd_create F
 GLIBC_2.29 timerfd_gettime F
 GLIBC_2.29 timerfd_settime F
@@ -2555,6 +2556,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 3d7c839b9b..9f89eb4e8b 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index c5021c8109..0e6e1444d6 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1746,6 +1746,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2508,6 +2509,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 8055ea6984..d8693b0c7b 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2108,6 +2108,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2692,6 +2693,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
index 29b0d98cc6..1d09fca7e3 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -30,7 +30,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 4cf1da5b62..984b58be61 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1767,6 +1767,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2222,6 +2223,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2467,6 +2469,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 74a4971070..c56040a5f9 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime 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 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c b/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
deleted file mode 100644
index 22eaff5cda..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
index 99a2937458..a976b028e0 100644
--- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
+++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
@@ -52,6 +52,8 @@ extern __typeof (timer_create) __timer_create;
 libc_hidden_proto (__timer_create)
 extern __typeof (timer_delete) __timer_delete;
 libc_hidden_proto (__timer_delete)
+extern __typeof (timer_getoverrun) __timer_getoverrun;
+libc_hidden_proto (__timer_getoverrun)
 
 /* Type of timers in the kernel.  */
 typedef int kernel_timer_t;
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e7c0a81f37..a8d6ad9a4f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -437,6 +437,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun F
 GLIBC_2.34 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2334,6 +2335,7 @@ GLIBC_2.4 timegm F
 GLIBC_2.4 timelocal F
 GLIBC_2.4 timer_create F
 GLIBC_2.4 timer_delete F
+GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,6 +1,5 @@
 GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_getoverrun F
 GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 b82f6366ee..62590726a8 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2064,6 +2064,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2635,6 +2636,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 3f9dfa7664..3fd1621454 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
 GLIBC_2.18 timelocal F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
+GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index bb2fd6251f..2b839a784d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
 GLIBC_2.18 timelocal F
 GLIBC_2.18 timer_create F
 GLIBC_2.18 timer_delete F
+GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2603,6 +2604,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 938142fb4a..ac623acbd3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1995,6 +1995,7 @@ GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2600,6 +2601,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 d62382883b..776b30b48a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1993,6 +1993,7 @@ GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2598,6 +2599,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 28a8a5d294..1ffaa8e684 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1991,6 +1991,7 @@ GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 6748f9beef..b0c5d0a636 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1987,6 +1987,7 @@ GLIBC_2.2 tcgetsid F
 GLIBC_2.2 tdestroy F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2521,6 +2522,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 00fd77bbab..a92565949e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 03d13e5ee1..77778d11f3 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2054,6 +2054,7 @@ GLIBC_2.21 timegm F
 GLIBC_2.21 timelocal F
 GLIBC_2.21 timer_create F
 GLIBC_2.21 timer_delete F
+GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timerfd_create F
 GLIBC_2.21 timerfd_gettime F
 GLIBC_2.21 timerfd_settime F
@@ -2645,6 +2646,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 a83ae32d03..8ab5ece2b0 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
 GLIBC_2.34 __timer_gettime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index c9a45ecb17..5562012575 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2069,6 +2069,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2662,6 +2663,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 c7fbc347a1..f0adf7b58b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2073,6 +2073,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2695,6 +2696,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 4eb22c11ac..a69927d41d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -29,7 +29,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     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 fb5eb9c67e..e74ecec60f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1888,6 +1888,7 @@ GLIBC_2.3 timegm F
 GLIBC_2.3 timelocal F
 GLIBC_2.3 timer_create F
 GLIBC_2.3 timer_delete F
+GLIBC_2.3 timer_getoverrun F
 GLIBC_2.3 times F
 GLIBC_2.3 timezone D 0x8
 GLIBC_2.3 tmpfile F
@@ -2166,6 +2167,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2431,6 +2433,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 914203b043..dd8b2ad6ef 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.3 timer_getoverrun F
 GLIBC_2.3 timer_gettime F
 GLIBC_2.3 timer_settime 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 __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 b89256aba0..2a0c06b881 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2096,6 +2096,7 @@ GLIBC_2.17 timegm F
 GLIBC_2.17 timelocal F
 GLIBC_2.17 timer_create F
 GLIBC_2.17 timer_delete F
+GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2729,6 +2730,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 34768d1472..493768f440 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.17 timer_getoverrun F
 GLIBC_2.17 timer_gettime F
 GLIBC_2.17 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
deleted file mode 100644
index 22eaff5cda..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index c653f52373..3e0e33bbb3 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1952,6 +1952,7 @@ GLIBC_2.33 timegm F
 GLIBC_2.33 timelocal F
 GLIBC_2.33 timer_create F
 GLIBC_2.33 timer_delete F
+GLIBC_2.33 timer_getoverrun F
 GLIBC_2.33 timerfd_create F
 GLIBC_2.33 timerfd_gettime F
 GLIBC_2.33 timerfd_settime F
@@ -2294,6 +2295,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 09bbee0960..de338094e1 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.33 timer_getoverrun F
 GLIBC_2.33 timer_gettime F
 GLIBC_2.33 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 711484eee5..1092e5a170 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2018,6 +2018,7 @@ GLIBC_2.27 timegm F
 GLIBC_2.27 timelocal F
 GLIBC_2.27 timer_create F
 GLIBC_2.27 timer_delete F
+GLIBC_2.27 timer_getoverrun F
 GLIBC_2.27 timerfd_create F
 GLIBC_2.27 timerfd_gettime F
 GLIBC_2.27 timerfd_settime F
@@ -2494,6 +2495,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 8e1d8b21fe..624ab969d8 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.27 timer_getoverrun F
 GLIBC_2.27 timer_gettime F
 GLIBC_2.27 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 4040312275..710cafe7c0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2067,6 +2067,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2660,6 +2661,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 5989ac75a9..e7f968fcdf 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
@@ -9,7 +9,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     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 4cf6a5ea09..6b2c7e7d68 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1763,6 +1763,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2212,6 +2213,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2468,6 +2470,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 34e8d31133..35dc39d27d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime 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 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
deleted file mode 100644
index 22eaff5cda..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 6fd93a5445..51a493aadb 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2515,6 +2516,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __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 c5c41bf0e6..cb37ba55cb 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2512,6 +2513,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 132470d40b..05b4e88794 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2062,6 +2062,7 @@ GLIBC_2.2 swprintf F
 GLIBC_2.2 swscanf F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2655,6 +2656,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 d8ff3b0988..0de56c2c15 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +1,4 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
index 358081399a..d04738fafc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -14,7 +14,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 6ee552611b..72591794e8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1793,6 +1793,7 @@ GLIBC_2.2 timegm F
 GLIBC_2.2 timelocal F
 GLIBC_2.2 timer_create F
 GLIBC_2.2 timer_delete F
+GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2246,6 +2247,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2490,6 +2492,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 3b744cf5a1..34d42d122b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,9 +1,7 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_getoverrun F
 GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
deleted file mode 100644
index 22eaff5cda..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
diff --git a/sysdeps/unix/sysv/linux/timer_getoverr.c b/sysdeps/unix/sysv/linux/timer_getoverr.c
index b997290768..accec3757d 100644
--- a/sysdeps/unix/sysv/linux/timer_getoverr.c
+++ b/sysdeps/unix/sysv/linux/timer_getoverr.c
@@ -20,17 +20,33 @@
 #include <time.h>
 #include <sysdep.h>
 #include <kernel-posix-timers.h>
-
-
-#ifdef timer_getoverrun_alias
-# define timer_getoverrun timer_getoverrun_alias
-#endif
-
+#include <shlib-compat.h>
 
 int
-timer_getoverrun (timer_t timerid)
+___timer_getoverrun (timer_t timerid)
 {
-#undef timer_getoverrun
   kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
   return INLINE_SYSCALL_CALL (timer_getoverrun, ktimerid);
 }
+versioned_symbol (libc, ___timer_getoverrun, timer_getoverrun, GLIBC_2_34);
+libc_hidden_ver (___timer_getoverrun, __timer_getoverrun)
+
+#if TIMER_T_WAS_INT_COMPAT
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, GLIBC_2_3_3);
+# endif
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
+int
+__timer_getoverrun_old (int timerid)
+{
+  return __timer_getoverrun (__timer_compat_list[timerid]);
+}
+compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, GLIBC_2_2);
+# endif /* OTHER_SHLIB_COMPAT */
+
+#else /* !TIMER_T_WAS_INT_COMPAT */
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, 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 377d35a04f..92f4369765 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1762,6 +1762,7 @@ GLIBC_2.2.5 timegm F
 GLIBC_2.2.5 timelocal F
 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 times F
 GLIBC_2.2.5 timezone D 0x8
 GLIBC_2.2.5 tmpfile F
@@ -2200,6 +2201,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
 GLIBC_2.3.3 sys_siglist D 0x208
 GLIBC_2.3.3 timer_create F
 GLIBC_2.3.3 timer_delete F
+GLIBC_2.3.3 timer_getoverrun F
 GLIBC_2.3.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2446,6 +2448,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 13a2bf2022..379fa6930c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.2.5 timer_getoverrun F
 GLIBC_2.2.5 timer_gettime F
 GLIBC_2.2.5 timer_settime 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 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
index c4d1c5fb79..a97b6c7413 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Versions
+++ b/sysdeps/unix/sysv/linux/x86_64/Versions
@@ -11,7 +11,7 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_getoverrun; timer_gettime;
+    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
deleted file mode 100644
index fb6e631a00..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
+++ /dev/null
@@ -1,38 +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 "compat-timer.h"
-
-
-#define timer_getoverrun_alias __timer_getoverrun_new
-#include <sysdeps/unix/sysv/linux/timer_getoverr.c>
-
-#undef timer_getoverrun
-versioned_symbol (librt, __timer_getoverrun_new, timer_getoverrun,
-		  GLIBC_2_3_3);
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-int
-__timer_getoverrun_old (int timerid)
-{
-  return __timer_getoverrun_new (__timer_compat_list[timerid]);
-}
-compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, 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 620f35836c..25b177fda0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2013,6 +2013,7 @@ GLIBC_2.16 timegm F
 GLIBC_2.16 timelocal F
 GLIBC_2.16 timer_create F
 GLIBC_2.16 timer_delete F
+GLIBC_2.16 timer_getoverrun F
 GLIBC_2.16 timerfd_create F
 GLIBC_2.16 timerfd_gettime F
 GLIBC_2.16 timerfd_settime F
@@ -2548,6 +2549,7 @@ GLIBC_2.34 thrd_exit F
 GLIBC_2.34 thrd_join F
 GLIBC_2.34 timer_create F
 GLIBC_2.34 timer_delete F
+GLIBC_2.34 timer_getoverrun 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 4b3e816fdd..0b969910ba 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,3 +1,2 @@
-GLIBC_2.16 timer_getoverrun F
 GLIBC_2.16 timer_gettime F
 GLIBC_2.16 timer_settime F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (30 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 31/34] Linux: Move timer_getoverrun " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 17:36   ` Adhemerval Zanella
  2021-06-17 18:59 ` [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 " Florian Weimer
                   ` (2 subsequent siblings)
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

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.
---
 include/time.h                                |  6 +-
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  4 +-
 sysdeps/unix/sysv/linux/Versions              |  3 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
 sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
 sysdeps/unix/sysv/linux/alpha/Versions        |  1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/alpha/timer_gettime.c |  1 -
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
 sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  3 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  3 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/Versions         |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
 sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
 sysdeps/unix/sysv/linux/ia64/timer_gettime.c  |  1 -
 .../sysv/linux/m68k/coldfire/libc.abilist     |  3 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
 .../sysv/linux/microblaze/be/libc.abilist     |  3 +
 .../sysv/linux/microblaze/be/librt.abilist    |  2 -
 .../sysv/linux/microblaze/le/libc.abilist     |  3 +
 .../sysv/linux/microblaze/le/librt.abilist    |  2 -
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
 .../linux/powerpc/powerpc32/librt.abilist     |  2 -
 .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
 .../sysv/linux/powerpc/powerpc64/Versions     |  1 -
 .../linux/powerpc/powerpc64/be/libc.abilist   |  3 +
 .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
 .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
 .../linux/powerpc/powerpc64/timer_gettime.c   |  1 -
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
 .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
 sysdeps/unix/sysv/linux/s390/s390-64/Versions |  1 -
 .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 +
 .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
 .../sysv/linux/s390/s390-64/timer_gettime.c   |  1 -
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
 .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
 .../unix/sysv/linux/sparc/sparc64/Versions    |  1 -
 .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
 .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
 .../sysv/linux/sparc/sparc64/timer_gettime.c  |  1 -
 sysdeps/unix/sysv/linux/timer_gettime.c       | 63 ++++++++++++++++---
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 +
 .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
 sysdeps/unix/sysv/linux/x86_64/Versions       |  1 -
 .../unix/sysv/linux/x86_64/timer_gettime.c    | 41 ------------
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
 .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
 79 files changed, 153 insertions(+), 119 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_gettime.c

diff --git a/include/time.h b/include/time.h
index 980c6bd924..3f4ff44ac3 100644
--- a/include/time.h
+++ b/include/time.h
@@ -218,7 +218,11 @@ libc_hidden_proto (__futimens64);
 #else
 extern int __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value);
 extern int __timerfd_gettime64 (int fd, struct __itimerspec64 *value);
-librt_hidden_proto (__timer_gettime64);
+# if PTHREAD_IN_LIBC
+libc_hidden_proto (__timer_gettime64)
+# else
+librt_hidden_proto (__timer_gettime64)
+# endif
 libc_hidden_proto (__timerfd_gettime64);
 #endif
 
diff --git a/rt/Makefile b/rt/Makefile
index 1eadb94ea8..e2ef5f4b0b 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -30,7 +30,6 @@ routines = \
 
 librt-routines = \
   librt-compat \
-  timer_gettime \
   timer_settime \
 
 librt-shared-only-routines = librt-compat
@@ -63,6 +62,7 @@ $(librt-routines-var) += \
   timer_create \
   timer_delete \
   timer_getoverr \
+  timer_gettime \
 
 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 de78be15dc..d1f05af013 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -25,6 +25,7 @@ libc {
     timer_create;
     timer_delete;
     timer_getoverrun;
+    timer_gettime;
 %endif
     shm_open;
     shm_unlink;
@@ -87,6 +88,7 @@ libc {
     timer_create;
     timer_delete;
     timer_getoverrun;
+    timer_gettime;
 %endif
     shm_open;
     shm_unlink;
@@ -134,8 +136,8 @@ librt {
     timer_create;
     timer_delete;
     timer_getoverrun;
-%endif
     timer_gettime;
+%endif
     timer_settime;
   }
   GLIBC_2.3.4 {
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 31fb4a437b..9bb9d955a5 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -126,6 +126,7 @@ libc {
     timer_create;
     timer_delete;
     timer_getoverrun;
+    timer_gettime;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
@@ -267,6 +268,7 @@ libc {
     __thrd_sleep64;
     __time64;
     __timegm64;
+    __timer_gettime64;
     __timerfd_gettime64;
     __timerfd_settime64;
     __timespec_get64;
@@ -308,7 +310,6 @@ librt {
   GLIBC_2.34 {
 %ifdef TIME64_NON_DEFAULT
     # 64-bit time_t support
-    __timer_gettime64;
     __timer_settime64;
 %endif
   }
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 9426bbe3f8..23130c3c9e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2009,6 +2009,7 @@ GLIBC_2.17 timelocal F
 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 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2535,6 +2536,7 @@ GLIBC_2.34 thrd_join F
 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 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 493768f440..2cb1369ddb 100644
--- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.17 timer_gettime F
 GLIBC_2.17 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
index dd5b365d77..0359822d6d 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -104,7 +104,6 @@ librt {
   }
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 50ab6f3fc1..1f2fff3443 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2096,6 +2096,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2359,6 +2360,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 _OtsAddX F
 GLIBC_2.3.4 _OtsConvertFloatTX F
 GLIBC_2.3.4 _OtsConvertFloatXT F
@@ -2632,6 +2634,7 @@ GLIBC_2.34 thrd_join F
 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 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
index 34d42d122b..a2de1ecd94 100644
--- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/timer_gettime.c b/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
deleted file mode 100644
index cea524bae5..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index aafc056267..8ece5c40fb 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1943,6 +1943,7 @@ GLIBC_2.32 timelocal F
 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 timerfd_create F
 GLIBC_2.32 timerfd_gettime F
 GLIBC_2.32 timerfd_settime F
@@ -2294,6 +2295,7 @@ GLIBC_2.34 thrd_join F
 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 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 14ae3d7c65..0023244be6 100644
--- a/sysdeps/unix/sysv/linux/arc/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.32 timer_gettime F
 GLIBC_2.32 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index ac73d766ba..515c3a224a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -271,6 +271,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -437,6 +438,7 @@ GLIBC_2.34 thrd_join F
 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 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2356,6 +2358,7 @@ GLIBC_2.4 timelocal F
 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 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 78152d8fa3..2f84162558 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 96ad967292..7b7ca7d348 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -268,6 +268,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -434,6 +435,7 @@ GLIBC_2.34 thrd_join F
 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 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2353,6 +2355,7 @@ GLIBC_2.4 timelocal F
 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 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 78152d8fa3..2f84162558 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 980ac9c497..d53acb2c08 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2033,6 +2033,7 @@ GLIBC_2.29 timelocal F
 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 timerfd_create F
 GLIBC_2.29 timerfd_gettime F
 GLIBC_2.29 timerfd_settime F
@@ -2391,6 +2392,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2557,6 +2559,7 @@ GLIBC_2.34 thrd_join F
 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 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 9f89eb4e8b..52b2819a7d 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,4 +1,2 @@
-GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 0e6e1444d6..a592e3f628 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1747,6 +1747,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2344,6 +2345,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2510,6 +2512,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 d8693b0c7b..bd3824cb88 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2109,6 +2109,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2528,6 +2529,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2694,6 +2696,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 1d09fca7e3..9a7faf067a 100644
--- a/sysdeps/unix/sysv/linux/ia64/Versions
+++ b/sysdeps/unix/sysv/linux/ia64/Versions
@@ -30,7 +30,6 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 984b58be61..d589ce16d6 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1768,6 +1768,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2224,6 +2225,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2470,6 +2472,7 @@ GLIBC_2.34 thrd_join F
 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 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 c56040a5f9..7d8e91b0d9 100644
--- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
@@ -1,7 +1,5 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/timer_gettime.c b/sysdeps/unix/sysv/linux/ia64/timer_gettime.c
deleted file mode 100644
index cea524bae5..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index a8d6ad9a4f..7e986dcfd5 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -272,6 +272,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -438,6 +439,7 @@ GLIBC_2.34 thrd_join F
 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 timespec_getres F
 GLIBC_2.34 tss_create F
 GLIBC_2.34 tss_delete F
@@ -2336,6 +2338,7 @@ GLIBC_2.4 timelocal F
 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 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 78152d8fa3..2f84162558 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
-GLIBC_2.4 timer_gettime F
 GLIBC_2.4 timer_settime 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 62590726a8..97fe827b8d 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2065,6 +2065,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2471,6 +2472,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2637,6 +2639,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 3fd1621454..56b5f885b7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2013,6 +2013,7 @@ GLIBC_2.18 timelocal F
 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 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2442,6 +2443,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2608,6 +2610,7 @@ GLIBC_2.34 thrd_join F
 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 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 f308a63244..8a4faf155c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,4 +1,2 @@
-GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 2b839a784d..8910180ff8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2013,6 +2013,7 @@ GLIBC_2.18 timelocal F
 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 timerfd_create F
 GLIBC_2.18 timerfd_gettime F
 GLIBC_2.18 timerfd_settime F
@@ -2439,6 +2440,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2605,6 +2607,7 @@ GLIBC_2.34 thrd_join F
 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 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 f308a63244..8a4faf155c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,4 +1,2 @@
-GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ac623acbd3..e81456caf7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1996,6 +1996,7 @@ GLIBC_2.2 tdestroy F
 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 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2436,6 +2437,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2602,6 +2604,7 @@ GLIBC_2.34 thrd_join F
 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 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 af07e28f55..211a60584c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 776b30b48a..ecbad99217 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1994,6 +1994,7 @@ GLIBC_2.2 tdestroy F
 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 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2434,6 +2435,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2600,6 +2602,7 @@ GLIBC_2.34 thrd_join F
 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 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 1ffaa8e684..986b16ece3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1992,6 +1992,7 @@ GLIBC_2.2 tdestroy F
 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 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2442,6 +2443,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2608,6 +2610,7 @@ GLIBC_2.34 thrd_join F
 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 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 af07e28f55..211a60584c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 b0c5d0a636..141e1b295f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1988,6 +1988,7 @@ GLIBC_2.2 tdestroy F
 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 tmpfile F
 GLIBC_2.2 tmpfile64 F
 GLIBC_2.2 truncate64 F
@@ -2523,6 +2524,7 @@ GLIBC_2.34 thrd_join F
 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 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 a92565949e..406120e1d8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 77778d11f3..71dc98ecf7 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2055,6 +2055,7 @@ GLIBC_2.21 timelocal F
 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 timerfd_create F
 GLIBC_2.21 timerfd_gettime F
 GLIBC_2.21 timerfd_settime F
@@ -2481,6 +2482,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2647,6 +2649,7 @@ GLIBC_2.34 thrd_join F
 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 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 8ab5ece2b0..c162738eae 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,4 +1,2 @@
-GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
-GLIBC_2.34 __timer_gettime64 F
 GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 5562012575..03a0a0579a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2070,6 +2070,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2498,6 +2499,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2664,6 +2666,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 f0adf7b58b..793531d9c4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2074,6 +2074,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2531,6 +2532,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2697,6 +2699,7 @@ GLIBC_2.34 thrd_join F
 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 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 a69927d41d..8607ac1012 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -29,7 +29,6 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     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 e74ecec60f..21763f0238 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -1889,6 +1889,7 @@ GLIBC_2.3 timelocal F
 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 times F
 GLIBC_2.3 timezone D 0x8
 GLIBC_2.3 tmpfile F
@@ -2168,6 +2169,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2434,6 +2436,7 @@ GLIBC_2.34 thrd_join F
 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 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 dd8b2ad6ef..bfaae8ac0e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.3 timer_gettime F
 GLIBC_2.3 timer_settime F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __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 2a0c06b881..ec8a207385 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2097,6 +2097,7 @@ GLIBC_2.17 timelocal F
 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 timerfd_create F
 GLIBC_2.17 timerfd_gettime F
 GLIBC_2.17 timerfd_settime F
@@ -2731,6 +2732,7 @@ GLIBC_2.34 thrd_join F
 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 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 493768f440..2cb1369ddb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.17 timer_gettime F
 GLIBC_2.17 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
deleted file mode 100644
index cea524bae5..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 3e0e33bbb3..c7b749f6a7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1953,6 +1953,7 @@ GLIBC_2.33 timelocal F
 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 timerfd_create F
 GLIBC_2.33 timerfd_gettime F
 GLIBC_2.33 timerfd_settime F
@@ -2296,6 +2297,7 @@ GLIBC_2.34 thrd_join F
 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 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 de338094e1..c59f14490e 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.33 timer_gettime F
 GLIBC_2.33 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 1092e5a170..33e13783fc 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2019,6 +2019,7 @@ GLIBC_2.27 timelocal F
 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 timerfd_create F
 GLIBC_2.27 timerfd_gettime F
 GLIBC_2.27 timerfd_settime F
@@ -2496,6 +2497,7 @@ GLIBC_2.34 thrd_join F
 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 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 624ab969d8..62ff23fd04 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.27 timer_gettime F
 GLIBC_2.27 timer_settime F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 710cafe7c0..6681f84af2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2068,6 +2068,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 versionsort64 F
 GLIBC_2.2 vfwprintf F
@@ -2496,6 +2497,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2662,6 +2664,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 e7f968fcdf..5c682764ad 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
@@ -9,7 +9,6 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     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 6b2c7e7d68..e97c113408 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1764,6 +1764,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2214,6 +2215,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2471,6 +2473,7 @@ GLIBC_2.34 thrd_join F
 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 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 35dc39d27d..f851eea81e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
deleted file mode 100644
index cea524bae5..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 51a493aadb..360802cf78 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -1751,6 +1751,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2351,6 +2352,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2517,6 +2519,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 cb37ba55cb..e9cb3ff8f1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -1751,6 +1751,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x4
 GLIBC_2.2 tmpfile F
@@ -2348,6 +2349,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2514,6 +2516,7 @@ GLIBC_2.34 thrd_join F
 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 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 f04b1e7978..179d1d53da 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 05b4e88794..2af5948dd7 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2063,6 +2063,7 @@ GLIBC_2.2 swscanf F
 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 ungetwc F
 GLIBC_2.2 vfwprintf F
 GLIBC_2.2 vfwscanf F
@@ -2491,6 +2492,7 @@ GLIBC_2.34 __stat64_time64 F
 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 __timerfd_gettime64 F
 GLIBC_2.34 __timerfd_settime64 F
 GLIBC_2.34 __timespec_get64 F
@@ -2657,6 +2659,7 @@ GLIBC_2.34 thrd_join F
 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 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 0de56c2c15..dc0a3c4dfb 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,9 +1,7 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.4 __librt_version_placeholder F
-GLIBC_2.34 __timer_gettime64 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 d04738fafc..5e8f59ceae 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -14,7 +14,6 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 72591794e8..fde5b780a6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1794,6 +1794,7 @@ GLIBC_2.2 timelocal F
 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 times F
 GLIBC_2.2 timezone D 0x8
 GLIBC_2.2 tmpfile F
@@ -2248,6 +2249,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2493,6 +2495,7 @@ GLIBC_2.34 thrd_join F
 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 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 34d42d122b..a2de1ecd94 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
@@ -1,8 +1,6 @@
 GLIBC_2.1 __librt_version_placeholder F
-GLIBC_2.2 timer_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
deleted file mode 100644
index cea524bae5..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c
index 0b31324da7..993bef8c6a 100644
--- a/sysdeps/unix/sysv/linux/timer_gettime.c
+++ b/sysdeps/unix/sysv/linux/timer_gettime.c
@@ -22,17 +22,19 @@
 #include <sysdep.h>
 #include <kernel-features.h>
 #include <kernel-posix-timers.h>
+#include <shlib-compat.h>
 
+#if !TIMER_T_WAS_INT_COMPAT
 int
-__timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
+___timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
 {
   kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
 
-#ifndef __NR_timer_gettime64
-# define __NR_timer_gettime64 __NR_timer_gettime
-#endif
+# ifndef __NR_timer_gettime64
+#  define __NR_timer_gettime64 __NR_timer_gettime
+# endif
   int ret = INLINE_SYSCALL_CALL (timer_gettime64, ktimerid, value);
-#ifndef __ASSUME_TIME64_SYSCALLS
+# ifndef __ASSUME_TIME64_SYSCALLS
   if (ret == 0 || errno != ENOSYS)
     return ret;
 
@@ -43,12 +45,19 @@ __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
       value->it_interval = valid_timespec_to_timespec64 (its32.it_interval);
       value->it_value = valid_timespec_to_timespec64 (its32.it_value);
     }
-#endif
+# endif
   return ret;
 }
 
-#if __TIMESIZE != 64
-librt_hidden_def (__timer_gettime64)
+# if __TIMESIZE == 64
+versioned_symbol (libc, ___timer_gettime64, timer_gettime, GLIBC_2_34);
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, ___timer_gettime64, timer_gettime, GLIBC_2_2);
+#  endif
+
+# else /* __TIMESIZE != 64 */
+libc_hidden_ver (___timer_gettime64, __timer_gettime64)
+versioned_symbol (libc, ___timer_gettime64, __timer_gettime64, GLIBC_2_34);
 
 int
 __timer_gettime (timer_t timerid, struct itimerspec *value)
@@ -63,5 +72,39 @@ __timer_gettime (timer_t timerid, struct itimerspec *value)
 
   return retval;
 }
-#endif
-weak_alias (__timer_gettime, timer_gettime)
+versioned_symbol (libc, __timer_gettime, timer_gettime, GLIBC_2_34);
+
+#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (librt, __timer_gettime, timer_gettime, GLIBC_2_2);
+#  endif
+# endif /* __TIMESIZE != 64 */
+
+#else /* TIMER_T_WAS_INT_COMPAT */
+
+extern __typeof (timer_gettime) __timer_gettime_new;
+libc_hidden_proto (__timer_gettime_new)
+
+int
+___timer_gettime_new (timer_t timerid, struct itimerspec *value)
+{
+  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
+
+  return INLINE_SYSCALL_CALL (timer_gettime, ktimerid, value);
+}
+versioned_symbol (libc, ___timer_gettime_new, timer_gettime, GLIBC_2_34);
+libc_hidden_ver (___timer_gettime_new, __timer_gettime_new)
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
+compat_symbol (librt, ___timer_gettime_new, timer_gettime, GLIBC_2_3_3);
+# endif
+
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
+int
+__timer_gettime_old (int timerid, struct itimerspec *value)
+{
+  return __timer_gettime_new (__timer_compat_list[timerid], value);
+}
+compat_symbol (librt, __timer_gettime_old, timer_gettime, 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 92f4369765..87dc534709 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1763,6 +1763,7 @@ GLIBC_2.2.5 timelocal F
 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 times F
 GLIBC_2.2.5 timezone D 0x8
 GLIBC_2.2.5 tmpfile F
@@ -2202,6 +2203,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
 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.4 __chk_fail F
 GLIBC_2.3.4 __fprintf_chk F
 GLIBC_2.3.4 __gets_chk F
@@ -2449,6 +2451,7 @@ GLIBC_2.34 thrd_join F
 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 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 379fa6930c..913835d267 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.2.5 timer_gettime F
 GLIBC_2.2.5 timer_settime F
-GLIBC_2.3.3 timer_gettime F
 GLIBC_2.3.3 timer_settime F
 GLIBC_2.3.4 __librt_version_placeholder F
 GLIBC_2.4 __librt_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
index a97b6c7413..8deeb8908a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Versions
+++ b/sysdeps/unix/sysv/linux/x86_64/Versions
@@ -11,7 +11,6 @@ libc {
 librt {
   GLIBC_2.3.3 {
     # Changed timer_t.
-    timer_gettime;
     timer_settime;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
deleted file mode 100644
index 06ccbc40bd..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
+++ /dev/null
@@ -1,41 +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_gettime_new (timer_t timerid, struct itimerspec *value)
-{
-  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
-
-  return INLINE_SYSCALL_CALL (timer_gettime, ktimerid, value);
-}
-versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3);
-
-
-#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-int
-__timer_gettime_old (int timerid, struct itimerspec *value)
-{
-  return __timer_gettime_new (__timer_compat_list[timerid], value);
-}
-compat_symbol (librt, __timer_gettime_old, timer_gettime, 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 25b177fda0..143b8d602c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2014,6 +2014,7 @@ GLIBC_2.16 timelocal F
 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 timerfd_create F
 GLIBC_2.16 timerfd_gettime F
 GLIBC_2.16 timerfd_settime F
@@ -2550,6 +2551,7 @@ GLIBC_2.34 thrd_join F
 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 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 0b969910ba..50f2032de7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
@@ -1,2 +1 @@
-GLIBC_2.16 timer_gettime F
 GLIBC_2.16 timer_settime F
-- 
2.31.1



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 from librt to libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (31 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 " Florian Weimer
@ 2021-06-17 18:59 ` Florian Weimer
  2021-06-24 17:42   ` Adhemerval Zanella
  2021-06-17 19:00 ` [PATCH 34/34] Linux: Cleanups after librt move Florian Weimer
  2021-06-24 17:49 ` [PATCH v2 00/34] Move librt into libc Adhemerval Zanella
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 18:59 UTC (permalink / raw)
  To: libc-alpha

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

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



^ permalink raw reply	[flat|nested] 72+ messages in thread

* [PATCH 34/34] Linux: Cleanups after librt move
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (32 preceding siblings ...)
  2021-06-17 18:59 ` [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 " Florian Weimer
@ 2021-06-17 19:00 ` Florian Weimer
  2021-06-24 17:45   ` Adhemerval Zanella
  2021-06-24 17:49 ` [PATCH v2 00/34] Move librt into libc Adhemerval Zanella
  34 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-17 19:00 UTC (permalink / raw)
  To: libc-alpha

librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
are not linked against it.

GLIBC_PRIVATE symbols that were needed during the transition are
removed again.
---
 elf/Makefile                                  |  4 +-
 nptl/Makefile                                 |  9 ----
 rt/Makefile                                   | 13 ++++--
 rt/Versions                                   | 13 ------
 rt/aio_misc.c                                 | 14 ------
 rt/aio_notify.c                               |  8 ----
 rt/aio_sigqueue.c                             |  1 -
 sysdeps/generic/aio_misc.h                    | 43 ++++++-------------
 sysdeps/pthread/Makefile                      |  2 +
 sysdeps/unix/sysv/linux/Versions              |  6 ---
 sysdeps/unix/sysv/linux/aio_sigqueue.c        |  1 -
 sysdeps/unix/sysv/linux/kernel-posix-timers.h | 19 +++-----
 sysdeps/unix/sysv/linux/timer_create.c        |  3 +-
 sysdeps/unix/sysv/linux/timer_routines.c      | 10 +----
 14 files changed, 37 insertions(+), 109 deletions(-)

diff --git a/elf/Makefile b/elf/Makefile
index 38d08e03b8..f9dac8dcc9 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1179,7 +1179,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
 				  libc.so \
 				  elf/ld.so \
 				  math/libm.so \
-				  rt/librt.so \
 				  dlfcn/libdl.so \
 				  resolv/libresolv.so \
 		       )
@@ -1192,6 +1191,9 @@ endif
 ifeq ($(build-crypt),yes)
 localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
 endif
+ifneq ($(pthread-in-libc),yes)
+localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
+endif
 
 vpath localplt.data $(+sysdep_dirs)
 
diff --git a/nptl/Makefile b/nptl/Makefile
index bbaf796771..17a4b63730 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -536,15 +536,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
 	$(evaluate-test)
 endif
 
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
-$(objpfx)tst-cancel17: $(librt)
-$(objpfx)tst-cancelx17: $(librt)
-
 LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
 LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
 
diff --git a/rt/Makefile b/rt/Makefile
index c1e989ede8..8945fbf94d 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -28,9 +28,7 @@ routines = \
   shm_open \
   shm_unlink \
 
-librt-routines = \
-  librt-compat \
-
+librt-routines = librt-compat
 librt-shared-only-routines = librt-compat
 
 $(librt-routines-var) += \
@@ -64,6 +62,13 @@ $(librt-routines-var) += \
   timer_gettime \
   timer_settime \
 
+ifeq ($(pthread-in-libc),yes)
+# Pretend that libdl.so is a linker script, so that the symbolic
+# link is not installed.
+install-lib-ldscripts = librt.so
+$(inst_libdir)/librt.so:
+endif
+
 tests := tst-shm tst-timer tst-timer2 \
 	 tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
 	 tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
@@ -96,6 +101,7 @@ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
 
 $(objpfx)librt.so: $(shared-thread-library)
 
+ifneq ($(pthread-in-libc),yes)
 ifeq (yes,$(build-shared))
 $(addprefix $(objpfx),$(tests) $(tests-internal)): \
 	$(objpfx)librt.so $(shared-thread-library)
@@ -103,5 +109,6 @@ else
 $(addprefix $(objpfx),$(tests)) $(tests-internal): \
 	$(objpfx)librt.a $(static-thread-library)
 endif
+endif # !$(pthread-in-libc)
 
 tst-mqueue7-ARGS = -- $(host-test-program-cmd)
diff --git a/rt/Versions b/rt/Versions
index 7e41beae06..a3dc72cff4 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -95,19 +95,6 @@ libc {
     shm_open;
     shm_unlink;
   }
-%if PTHREAD_IN_LIBC
-  GLIBC_PRIVATE {
-    __aio_enqueue_request;
-    __aio_find_req;
-    __aio_find_req_fd;
-    __aio_free_request;
-    __aio_notify;
-    __aio_notify_only;
-    __aio_remove_request;
-    __aio_requests_mutex;
-    __aio_sigqueue;
-  }
-%endif
 }
 librt {
   GLIBC_2.1 {
diff --git a/rt/aio_misc.c b/rt/aio_misc.c
index d9be8ac33d..856a1b2755 100644
--- a/rt/aio_misc.c
+++ b/rt/aio_misc.c
@@ -735,24 +735,10 @@ add_request_to_runlist (struct requestlist *newrequest)
 }
 
 #if PTHREAD_IN_LIBC
-libc_hidden_data_def (__aio_requests_mutex)
-libc_hidden_def (__aio_enqueue_request)
-libc_hidden_def (__aio_find_req)
-libc_hidden_def (__aio_find_req_fd)
-libc_hidden_def (__aio_free_request)
-libc_hidden_def (__aio_remove_request)
-
 versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
 # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
 compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
 # endif
-
 #else /* !PTHREAD_IN_LIBC */
-librt_hidden_data_def (__aio_requests_mutex)
-librt_hidden_def (__aio_enqueue_request)
-librt_hidden_def (__aio_find_req)
-librt_hidden_def (__aio_find_req_fd)
-librt_hidden_def (__aio_free_request)
-librt_hidden_def (__aio_remove_request)
 weak_alias (__aio_init, aio_init)
 #endif /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_notify.c b/rt/aio_notify.c
index 432000e34b..0fa84f203c 100644
--- a/rt/aio_notify.c
+++ b/rt/aio_notify.c
@@ -160,11 +160,3 @@ __aio_notify (struct requestlist *req)
       waitlist = next;
     }
 }
-
-#if PTHREAD_IN_LIBC
-libc_hidden_def (__aio_notify)
-libc_hidden_def (__aio_notify_only)
-#else
-librt_hidden_def (__aio_notify)
-librt_hidden_def (__aio_notify_only)
-#endif
diff --git a/rt/aio_sigqueue.c b/rt/aio_sigqueue.c
index 0ad95ae04c..84848bacd8 100644
--- a/rt/aio_sigqueue.c
+++ b/rt/aio_sigqueue.c
@@ -28,5 +28,4 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
   __set_errno (ENOSYS);
   return -1;
 }
-librt_hidden_def (__aio_sigqueue)
 stub_warning (__aio_sigqueue)
diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
index d9bff36e50..4d05b8cdd6 100644
--- a/sysdeps/generic/aio_misc.h
+++ b/sysdeps/generic/aio_misc.h
@@ -87,55 +87,36 @@ struct requestlist
 
 
 /* Lock for global I/O list of requests.  */
-extern pthread_mutex_t __aio_requests_mutex;
+extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
 
 
 /* Enqueue request.  */
 extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
-						  int operation);
+						  int operation)
+  attribute_hidden;
 
 /* Find request entry for given AIO control block.  */
-extern struct requestlist *__aio_find_req (aiocb_union *elem);
+extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
 
 /* Find request entry for given file descriptor.  */
-extern struct requestlist *__aio_find_req_fd (int fildes);
+extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
 
 /* Remove request from the list.  */
 extern void __aio_remove_request (struct requestlist *last,
-				  struct requestlist *req, int all);
+				  struct requestlist *req, int all)
+  attribute_hidden;
 
 /* Release the entry for the request.  */
-extern void __aio_free_request (struct requestlist *req);
+extern void __aio_free_request (struct requestlist *req) attribute_hidden;
 
 /* Notify initiator of request and tell this everybody listening.  */
-extern void __aio_notify (struct requestlist *req);
+extern void __aio_notify (struct requestlist *req) attribute_hidden;
 
 /* Notify initiator of request.  */
-extern int __aio_notify_only (struct sigevent *sigev);
+extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
 
 /* Send the signal.  */
-extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
-
-#if PTHREAD_IN_LIBC
-libc_hidden_proto (__aio_enqueue_request)
-libc_hidden_proto (__aio_find_req)
-libc_hidden_proto (__aio_find_req_fd)
-libc_hidden_proto (__aio_free_request)
-libc_hidden_proto (__aio_notify)
-libc_hidden_proto (__aio_notify_only)
-libc_hidden_proto (__aio_remove_request)
-libc_hidden_proto (__aio_requests_mutex)
-libc_hidden_proto (__aio_sigqueue)
-#else
-librt_hidden_proto (__aio_enqueue_request)
-librt_hidden_proto (__aio_find_req)
-librt_hidden_proto (__aio_find_req_fd)
-librt_hidden_proto (__aio_free_request)
-librt_hidden_proto (__aio_notify)
-librt_hidden_proto (__aio_notify_only)
-librt_hidden_proto (__aio_remove_request)
-librt_hidden_proto (__aio_requests_mutex)
-librt_hidden_proto (__aio_sigqueue)
-#endif
+extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
+  attribute_hidden;
 
 #endif /* aio_misc.h */
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index 9e6ed3c6f7..cca0d4da0d 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -18,11 +18,13 @@
 
 ifeq ($(subdir),rt)
 
+ifneq ($(pthread-in-libc),yes)
 ifeq (yes,$(build-shared))
 $(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
 else
 $(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
 endif
+endif # !$(pthread-in-libc)
 
 endif
 
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 578d55e7fd..29ed24591d 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -291,12 +291,6 @@ libc {
     __pread64_nocancel;
     __close_nocancel;
     __sigtimedwait;
-    __timer_active_sigev_thread;
-    __timer_active_sigev_thread_lock;
-    __timer_compat_list;
-    __timer_helper_once;
-    __timer_helper_tid;
-    __timer_start_helper_thread;
     # functions used by nscd
     __netlink_assert_response;
   }
diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
index bd0da6e763..0b0f347197 100644
--- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
+++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
@@ -44,4 +44,3 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
 
   return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
 }
-libc_hidden_def (__aio_sigqueue)
diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
index a976b028e0..0f7eff1794 100644
--- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
+++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
@@ -26,27 +26,23 @@
 extern int __no_posix_timers attribute_hidden;
 
 /* Callback to start helper thread.  */
-extern void __timer_start_helper_thread (void);
-libc_hidden_proto (__timer_start_helper_thread)
+extern void __timer_start_helper_thread (void) attribute_hidden;
 
 /* Control variable for helper thread creation.  */
-extern pthread_once_t __timer_helper_once;
-libc_hidden_proto (__timer_helper_once)
+extern pthread_once_t __timer_helper_once attribute_hidden;
 
 /* Called from fork so that the new subprocess re-creates the
    notification thread if necessary.  */
 void __timer_fork_subprocess (void) attribute_hidden;
 
 /* TID of the helper thread.  */
-extern pid_t __timer_helper_tid;
-libc_hidden_proto (__timer_helper_tid)
+extern pid_t __timer_helper_tid attribute_hidden;
 
 /* List of active SIGEV_THREAD timers.  */
-extern struct timer *__timer_active_sigev_thread;
-libc_hidden_proto (__timer_active_sigev_thread)
+extern struct timer *__timer_active_sigev_thread attribute_hidden;
+
 /* Lock for __timer_active_sigev_thread.  */
-extern pthread_mutex_t __timer_active_sigev_thread_lock;
-libc_hidden_proto (__timer_active_sigev_thread_lock)
+extern pthread_mutex_t __timer_active_sigev_thread_lock attribute_hidden;
 
 extern __typeof (timer_create) __timer_create;
 libc_hidden_proto (__timer_create)
@@ -117,5 +113,4 @@ timerid_to_kernel_timer (timer_t timerid)
 
 /* Used if an override sets TIMER_T_WAS_INT_COMPAT to 1.  */
 #define OLD_TIMER_MAX 256
-extern timer_t __timer_compat_list[OLD_TIMER_MAX];
-libc_hidden_proto (__timer_compat_list)
+extern timer_t __timer_compat_list[OLD_TIMER_MAX] attribute_hidden;
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index 9861177cf2..230bc45083 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -146,8 +146,7 @@ compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
 # endif
 
 # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_compat_list)
+timer_t __timer_compat_list[OLD_TIMER_MAX];
 
 int
 __timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
index fc3aa894ab..3a509d8ace 100644
--- a/sysdeps/unix/sysv/linux/timer_routines.c
+++ b/sysdeps/unix/sysv/linux/timer_routines.c
@@ -26,13 +26,10 @@
 
 
 /* List of active SIGEV_THREAD timers.  */
-struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_active_sigev_thread)
+struct timer *__timer_active_sigev_thread;
 
 /* Lock for _timer_active_sigev_thread.  */
-pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
-  = PTHREAD_MUTEX_INITIALIZER;
-libc_hidden_data_def (__timer_active_sigev_thread_lock)
+pthread_mutex_t __timer_active_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
 
 struct thread_start_data
 {
@@ -112,12 +109,10 @@ timer_helper_thread (void *arg)
 /* Control variable for helper thread creation.  */
 pthread_once_t __timer_helper_once __attribute__ ((nocommon))
   = PTHREAD_ONCE_INIT;
-libc_hidden_data_def (__timer_helper_once)
 
 
 /* TID of the helper thread.  */
 pid_t __timer_helper_tid __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_helper_tid)
 
 
 /* Reset variables so that after a fork a new helper thread gets started.  */
@@ -159,4 +154,3 @@ __timer_start_helper_thread (void)
   /* No need for the attribute anymore.  */
   (void) __pthread_attr_destroy (&attr);
 }
-libc_hidden_def (__timer_start_helper_thread)
-- 
2.31.1


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt
  2021-06-17 18:57 ` [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
@ 2021-06-21 18:37   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-21 18:37 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> The pthread-based implementation is the generic one.  Replacing
> the stubs makes it clear that they do not have to be adjusted for
> the libpthread move.
> 
> Result of:
> 
>     git mv -f sysdeps/pthread/aio_misc.h sysdeps/generic/
>     git mv sysdeps/pthread/timer_routines.c sysdeps/htl/
>     git mv -f sysdeps/pthread/{aio,lio,timer}_*.c rt/
> 
> Followed by manual adjustment of the #include paths in
> sysdeps/unix/sysv/linux/wordsize-64, and a move of the version
> definitions formerly in sysdeps/pthread/Versions.

LGTM, thanks.

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

> ---
>  rt/Versions                                   |   4 +
>  rt/aio_cancel.c                               | 129 +++-
>  rt/aio_error.c                                |  12 +-
>  rt/aio_fsync.c                                |  26 +-
>  rt/aio_misc.c                                 | 699 ++++++++++++++++-
>  rt/aio_notify.c                               | 144 +++-
>  rt/aio_read.c                                 |  18 +-
>  rt/aio_read64.c                               |  32 +-
>  rt/aio_suspend.c                              | 237 +++++-
>  rt/aio_write.c                                |  18 +-
>  rt/aio_write64.c                              |  32 +-
>  rt/lio_listio.c                               | 236 +++++-
>  rt/lio_listio64.c                             |  33 +-
>  rt/timer_create.c                             | 156 +++-
>  rt/timer_delete.c                             |  58 +-
>  rt/timer_getoverr.c                           |  33 +-
>  rt/timer_gettime.c                            |  64 +-
>  rt/timer_settime.c                            | 120 ++-
>  sysdeps/generic/aio_misc.h                    |  83 +-
>  sysdeps/{pthread => htl}/timer_routines.c     |   0
>  sysdeps/pthread/Versions                      |   5 -
>  sysdeps/pthread/aio_cancel.c                  | 157 ----
>  sysdeps/pthread/aio_error.c                   |  48 --
>  sysdeps/pthread/aio_fsync.c                   |  57 --
>  sysdeps/pthread/aio_misc.c                    | 721 ------------------
>  sysdeps/pthread/aio_misc.h                    | 122 ---
>  sysdeps/pthread/aio_notify.c                  | 157 ----
>  sysdeps/pthread/aio_read.c                    |  30 -
>  sysdeps/pthread/aio_read64.c                  |  30 -
>  sysdeps/pthread/aio_suspend.c                 | 263 -------
>  sysdeps/pthread/aio_write.c                   |  30 -
>  sysdeps/pthread/aio_write64.c                 |  30 -
>  sysdeps/pthread/lio_listio.c                  | 248 ------
>  sysdeps/pthread/lio_listio64.c                |  33 -
>  sysdeps/pthread/timer_create.c                | 166 ----
>  sysdeps/pthread/timer_delete.c                |  68 --
>  sysdeps/pthread/timer_getoverr.c              |  43 --
>  sysdeps/pthread/timer_gettime.c               |  74 --
>  sysdeps/pthread/timer_settime.c               | 131 ----
>  sysdeps/unix/sysv/linux/alpha/aio_cancel.c    |   4 +-
>  sysdeps/unix/sysv/linux/sparc/aio_cancel.c    |   4 +-
>  .../unix/sysv/linux/wordsize-64/aio_read.c    |   2 +-
>  .../unix/sysv/linux/wordsize-64/aio_write.c   |   2 +-
>  .../unix/sysv/linux/wordsize-64/lio_listio.c  |   2 +-
>  44 files changed, 2017 insertions(+), 2544 deletions(-)
>  rename sysdeps/{pthread => htl}/timer_routines.c (100%)
>  delete mode 100644 sysdeps/pthread/Versions
>  delete mode 100644 sysdeps/pthread/aio_cancel.c
>  delete mode 100644 sysdeps/pthread/aio_error.c
>  delete mode 100644 sysdeps/pthread/aio_fsync.c
>  delete mode 100644 sysdeps/pthread/aio_misc.c
>  delete mode 100644 sysdeps/pthread/aio_misc.h
>  delete mode 100644 sysdeps/pthread/aio_notify.c
>  delete mode 100644 sysdeps/pthread/aio_read.c
>  delete mode 100644 sysdeps/pthread/aio_read64.c
>  delete mode 100644 sysdeps/pthread/aio_suspend.c
>  delete mode 100644 sysdeps/pthread/aio_write.c
>  delete mode 100644 sysdeps/pthread/aio_write64.c
>  delete mode 100644 sysdeps/pthread/lio_listio.c
>  delete mode 100644 sysdeps/pthread/lio_listio64.c
>  delete mode 100644 sysdeps/pthread/timer_create.c
>  delete mode 100644 sysdeps/pthread/timer_delete.c
>  delete mode 100644 sysdeps/pthread/timer_getoverr.c
>  delete mode 100644 sysdeps/pthread/timer_gettime.c
>  delete mode 100644 sysdeps/pthread/timer_settime.c
> 
> diff --git a/rt/Versions b/rt/Versions
> index 309486be1e..26c6d1ac63 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -47,6 +47,10 @@ librt {
>      mq_timedsend;
>      mq_unlink;
>    }
> +  GLIBC_2.4 {
> +    lio_listio;
> +    lio_listio64;
> +  }
>    GLIBC_2.7 {
>     __mq_open_2;
>    }

Ok.

> diff --git a/rt/aio_cancel.c b/rt/aio_cancel.c
> index dba1e45044..63fd88f36c 100644
> --- a/rt/aio_cancel.c
> +++ b/rt/aio_cancel.c
> @@ -1,6 +1,7 @@
> -/* Cancel requests associated with given file descriptor.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Cancel requests associated with given file descriptor.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -22,21 +23,135 @@
>     we want to avoid code duplication by using aliases.  But gcc sees
>     the different parameter lists and prints a warning.  We define here
>     a function so that aio_cancel64 has no prototype.  */
> +#ifndef aio_cancel
>  #define aio_cancel64 XXX
>  #include <aio.h>
>  /* And undo the hack.  */
>  #undef aio_cancel64
> +#endif
>  
> +#include <assert.h>
>  #include <errno.h>
> +#include <fcntl.h>
> +
> +#include <aio_misc.h>
> +
>  
>  int
>  aio_cancel (int fildes, struct aiocb *aiocbp)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct requestlist *req = NULL;
> +  int result = AIO_ALLDONE;
> +
> +  /* If fildes is invalid, error. */
> +  if (fcntl (fildes, F_GETFL) < 0)
> +    {
> +      __set_errno (EBADF);
> +      return -1;
> +    }
> +
> +  /* Request the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  /* We are asked to cancel a specific AIO request.  */
> +  if (aiocbp != NULL)
> +    {
> +      /* If the AIO request is not for this descriptor it has no value
> +	 to look for the request block.  */
> +      if (aiocbp->aio_fildes != fildes)
> +	{
> +	  pthread_mutex_unlock (&__aio_requests_mutex);
> +	  __set_errno (EINVAL);
> +	  return -1;
> +	}
> +      else if (aiocbp->__error_code == EINPROGRESS)
> +	{
> +	  struct requestlist *last = NULL;
> +
> +	  req = __aio_find_req_fd (fildes);
> +
> +	  if (req == NULL)
> +	    {
> +	    not_found:
> +	      pthread_mutex_unlock (&__aio_requests_mutex);
> +	      __set_errno (EINVAL);
> +	      return -1;
> +	    }
> +
> +	  while (req->aiocbp != (aiocb_union *) aiocbp)
> +	    {
> +	      last = req;
> +	      req = req->next_prio;
> +	      if (req == NULL)
> +		goto not_found;
> +	    }
> +
> +	  /* Don't remove the entry if a thread is already working on it.  */
> +	  if (req->running == allocated)
> +	    {
> +	      result = AIO_NOTCANCELED;
> +	      req = NULL;
> +	    }
> +	  else
> +	    {
> +	      /* We can remove the entry.  */
> +	      __aio_remove_request (last, req, 0);
> +
> +	      result = AIO_CANCELED;
> +
> +	      req->next_prio = NULL;
> +	    }
> +	}
> +    }
> +  else
> +    {
> +      /* Find the beginning of the list of all requests for this
> +	 desriptor.  */
> +      req = __aio_find_req_fd (fildes);
> +
> +      /* If any request is worked on by a thread it must be the first.
> +	 So either we can delete all requests or all but the first.  */
> +      if (req != NULL)
> +	{
> +	  if (req->running == allocated)
> +	    {
> +	      struct requestlist *old = req;
> +	      req = req->next_prio;
> +	      old->next_prio = NULL;
> +
> +	      result = AIO_NOTCANCELED;
> +
> +	      if (req != NULL)
> +		__aio_remove_request (old, req, 1);
> +	    }
> +	  else
> +	    {
> +	      result = AIO_CANCELED;
> +
> +	      /* We can remove the entry.  */
> +	      __aio_remove_request (NULL, req, 1);
> +	    }
> +	}
> +    }
> +
> +  /* Mark requests as canceled and send signal.  */
> +  while (req != NULL)
> +    {
> +      struct requestlist *old = req;
> +      assert (req->running == yes || req->running == queued);
> +      req->aiocbp->aiocb.__error_code = ECANCELED;
> +      req->aiocbp->aiocb.__return_value = -1;
> +      __aio_notify (req);
> +      req = req->next_prio;
> +      __aio_free_request (old);
> +    }
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +  return result;
>  }
>  
> +#ifndef aio_cancel
>  weak_alias (aio_cancel, aio_cancel64)
> -
> -stub_warning (aio_cancel)
> -stub_warning (aio_cancel64)
> +#endif

Ok.

> diff --git a/rt/aio_error.c b/rt/aio_error.c
> index 730b64b5e9..ed664ae0ef 100644
> --- a/rt/aio_error.c
> +++ b/rt/aio_error.c
> @@ -28,11 +28,21 @@
>  /* And undo the hack.  */
>  #undef aio_error64
>  
> +#include <aio_misc.h>
> +
>  
>  int
>  aio_error (const struct aiocb *aiocbp)
>  {
> -  return aiocbp->__error_code;
> +  int ret;
> +
> +  /* Acquire the mutex to make sure all operations for this request are
> +     complete.  */
> +  pthread_mutex_lock(&__aio_requests_mutex);
> +  ret = aiocbp->__error_code;
> +  pthread_mutex_unlock(&__aio_requests_mutex);
> +
> +  return ret;
>  }
>  
>  weak_alias (aio_error, aio_error64)

Ok.

> diff --git a/rt/aio_fsync.c b/rt/aio_fsync.c
> index 86727246f8..5a52e2fec0 100644
> --- a/rt/aio_fsync.c
> +++ b/rt/aio_fsync.c
> @@ -1,6 +1,7 @@
> -/* Synchronize I/O in given file descriptor.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Synchronize I/O in given file descriptor.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -26,24 +27,31 @@
>  #include <aio.h>
>  /* And undo the hack.  */
>  #undef aio_fsync64
> -
>  #include <errno.h>
>  #include <fcntl.h>
>  
> +#include <aio_misc.h>
> +
> +
>  int
>  aio_fsync (int op, struct aiocb *aiocbp)
>  {
> -  if (op != O_SYNC && op != O_DSYNC)
> +  if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
>      {
>        __set_errno (EINVAL);
>        return -1;
>      }
>  
> -  __set_errno (ENOSYS);
> -  return -1;
> +  /* Verify that this is an open file descriptor.  */
> +  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
> +    {
> +      __set_errno (EBADF);
> +      return -1;
> +    }
> +
> +  return (__aio_enqueue_request ((aiocb_union *) aiocbp,
> +				 op == O_SYNC ? LIO_SYNC : LIO_DSYNC) == NULL
> +	  ? -1 : 0);
>  }
>  
>  weak_alias (aio_fsync, aio_fsync64)
> -
> -stub_warning (aio_fsync)
> -stub_warning (aio_fsync64)

Ok.

> diff --git a/rt/aio_misc.c b/rt/aio_misc.c
> index 2332f3ed53..b95f07d9d3 100644
> --- a/rt/aio_misc.c
> +++ b/rt/aio_misc.c
> @@ -1,6 +1,7 @@
> -/* Handle general operations.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Handle general operations.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -17,12 +18,704 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <aio.h>
> +#include <assert.h>
> +#include <errno.h>
> +#include <limits.h>
> +#include <pthread.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +#include <sys/param.h>
> +#include <sys/stat.h>
> +#include <sys/time.h>
>  #include <aio_misc.h>
>  
> -/* This file is for internal code needed by the aio_* implementation.  */
> +#ifndef aio_create_helper_thread
> +# define aio_create_helper_thread __aio_create_helper_thread
>  
> +extern inline int
> +__aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
> +{
> +  pthread_attr_t attr;
> +
> +  /* Make sure the thread is created detached.  */
> +  pthread_attr_init (&attr);
> +  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +
> +  int ret = pthread_create (threadp, &attr, tf, arg);
> +
> +  (void) pthread_attr_destroy (&attr);
> +  return ret;
> +}
> +#endif
> +
> +static void add_request_to_runlist (struct requestlist *newrequest);
> +
> +/* Pool of request list entries.  */
> +static struct requestlist **pool;
> +
> +/* Number of total and allocated pool entries.  */
> +static size_t pool_max_size;
> +static size_t pool_size;
> +
> +/* We implement a two dimensional array but allocate each row separately.
> +   The macro below determines how many entries should be used per row.
> +   It should better be a power of two.  */
> +#define ENTRIES_PER_ROW	32
> +
> +/* How many rows we allocate at once.  */
> +#define ROWS_STEP	8
> +
> +/* List of available entries.  */
> +static struct requestlist *freelist;
> +
> +/* List of request waiting to be processed.  */
> +static struct requestlist *runlist;
> +
> +/* Structure list of all currently processed requests.  */
> +static struct requestlist *requests;
> +
> +/* Number of threads currently running.  */
> +static int nthreads;
> +
> +/* Number of threads waiting for work to arrive. */
> +static int idle_thread_count;
> +
> +
> +/* These are the values used to optimize the use of AIO.  The user can
> +   overwrite them by using the `aio_init' function.  */
> +static struct aioinit optim =
> +{
> +  20,	/* int aio_threads;	Maximal number of threads.  */
> +  64,	/* int aio_num;		Number of expected simultaneous requests. */
> +  0,
> +  0,
> +  0,
> +  0,
> +  1,
> +  0
> +};
> +
> +
> +/* Since the list is global we need a mutex protecting it.  */
> +pthread_mutex_t __aio_requests_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
> +
> +/* When you add a request to the list and there are idle threads present,
> +   you signal this condition variable. When a thread finishes work, it waits
> +   on this condition variable for a time before it actually exits. */
> +pthread_cond_t __aio_new_request_notification = PTHREAD_COND_INITIALIZER;
> +
> +
> +/* Functions to handle request list pool.  */
> +static struct requestlist *
> +get_elem (void)
> +{
> +  struct requestlist *result;
> +
> +  if (freelist == NULL)
> +    {
> +      struct requestlist *new_row;
> +      int cnt;
> +
> +      assert (sizeof (struct aiocb) == sizeof (struct aiocb64));
> +
> +      if (pool_size + 1 >= pool_max_size)
> +	{
> +	  size_t new_max_size = pool_max_size + ROWS_STEP;
> +	  struct requestlist **new_tab;
> +
> +	  new_tab = (struct requestlist **)
> +	    realloc (pool, new_max_size * sizeof (struct requestlist *));
> +
> +	  if (new_tab == NULL)
> +	    return NULL;
> +
> +	  pool_max_size = new_max_size;
> +	  pool = new_tab;
> +	}
> +
> +      /* Allocate the new row.  */
> +      cnt = pool_size == 0 ? optim.aio_num : ENTRIES_PER_ROW;
> +      new_row = (struct requestlist *) calloc (cnt,
> +					       sizeof (struct requestlist));
> +      if (new_row == NULL)
> +	return NULL;
> +
> +      pool[pool_size++] = new_row;
> +
> +      /* Put all the new entries in the freelist.  */
> +      do
> +	{
> +	  new_row->next_prio = freelist;
> +	  freelist = new_row++;
> +	}
> +      while (--cnt > 0);
> +    }
> +
> +  result = freelist;
> +  freelist = freelist->next_prio;
> +
> +  return result;
> +}
> +
> +
> +void
> +__aio_free_request (struct requestlist *elem)
> +{
> +  elem->running = no;
> +  elem->next_prio = freelist;
> +  freelist = elem;
> +}
> +
> +
> +struct requestlist *
> +__aio_find_req (aiocb_union *elem)
> +{
> +  struct requestlist *runp = requests;
> +  int fildes = elem->aiocb.aio_fildes;
> +
> +  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
> +    runp = runp->next_fd;
> +
> +  if (runp != NULL)
> +    {
> +      if (runp->aiocbp->aiocb.aio_fildes != fildes)
> +	runp = NULL;
> +      else
> +	while (runp != NULL && runp->aiocbp != elem)
> +	  runp = runp->next_prio;
> +    }
> +
> +  return runp;
> +}
> +
> +
> +struct requestlist *
> +__aio_find_req_fd (int fildes)
> +{
> +  struct requestlist *runp = requests;
> +
> +  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
> +    runp = runp->next_fd;
> +
> +  return (runp != NULL && runp->aiocbp->aiocb.aio_fildes == fildes
> +	  ? runp : NULL);
> +}
> +
> +
> +void
> +__aio_remove_request (struct requestlist *last, struct requestlist *req,
> +		      int all)
> +{
> +  assert (req->running == yes || req->running == queued
> +	  || req->running == done);
> +
> +  if (last != NULL)
> +    last->next_prio = all ? NULL : req->next_prio;
> +  else
> +    {
> +      if (all || req->next_prio == NULL)
> +	{
> +	  if (req->last_fd != NULL)
> +	    req->last_fd->next_fd = req->next_fd;
> +	  else
> +	    requests = req->next_fd;
> +	  if (req->next_fd != NULL)
> +	    req->next_fd->last_fd = req->last_fd;
> +	}
> +      else
> +	{
> +	  if (req->last_fd != NULL)
> +	    req->last_fd->next_fd = req->next_prio;
> +	  else
> +	    requests = req->next_prio;
> +
> +	  if (req->next_fd != NULL)
> +	    req->next_fd->last_fd = req->next_prio;
> +
> +	  req->next_prio->last_fd = req->last_fd;
> +	  req->next_prio->next_fd = req->next_fd;
> +
> +	  /* Mark this entry as runnable.  */
> +	  req->next_prio->running = yes;
> +	}
> +
> +      if (req->running == yes)
> +	{
> +	  struct requestlist *runp = runlist;
> +
> +	  last = NULL;
> +	  while (runp != NULL)
> +	    {
> +	      if (runp == req)
> +		{
> +		  if (last == NULL)
> +		    runlist = runp->next_run;
> +		  else
> +		    last->next_run = runp->next_run;
> +		  break;
> +		}
> +	      last = runp;
> +	      runp = runp->next_run;
> +	    }
> +	}
> +    }
> +}
> +
> +
> +/* The thread handler.  */
> +static void *handle_fildes_io (void *arg);
> +
> +
> +/* User optimization.  */
>  void
>  __aio_init (const struct aioinit *init)
>  {
> +  /* Get the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  /* Only allow writing new values if the table is not yet allocated.  */
> +  if (pool == NULL)
> +    {
> +      optim.aio_threads = init->aio_threads < 1 ? 1 : init->aio_threads;
> +      assert (powerof2 (ENTRIES_PER_ROW));
> +      optim.aio_num = (init->aio_num < ENTRIES_PER_ROW
> +		       ? ENTRIES_PER_ROW
> +		       : init->aio_num & ~(ENTRIES_PER_ROW - 1));
> +    }
> +
> +  if (init->aio_idle_time != 0)
> +    optim.aio_idle_time = init->aio_idle_time;
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
>  }
>  weak_alias (__aio_init, aio_init)
> +
> +
> +/* The main function of the async I/O handling.  It enqueues requests
> +   and if necessary starts and handles threads.  */
> +struct requestlist *
> +__aio_enqueue_request (aiocb_union *aiocbp, int operation)
> +{
> +  int result = 0;
> +  int policy, prio;
> +  struct sched_param param;
> +  struct requestlist *last, *runp, *newp;
> +  int running = no;
> +
> +  if (operation == LIO_SYNC || operation == LIO_DSYNC)
> +    aiocbp->aiocb.aio_reqprio = 0;
> +  else if (aiocbp->aiocb.aio_reqprio < 0
> +#ifdef AIO_PRIO_DELTA_MAX
> +	   || aiocbp->aiocb.aio_reqprio > AIO_PRIO_DELTA_MAX
> +#endif
> +	   )
> +    {
> +      /* Invalid priority value.  */
> +      __set_errno (EINVAL);
> +      aiocbp->aiocb.__error_code = EINVAL;
> +      aiocbp->aiocb.__return_value = -1;
> +      return NULL;
> +    }
> +
> +  /* Compute priority for this request.  */
> +  pthread_getschedparam (pthread_self (), &policy, &param);
> +  prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
> +
> +  /* Get the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  last = NULL;
> +  runp = requests;
> +  /* First look whether the current file descriptor is currently
> +     worked with.  */
> +  while (runp != NULL
> +	 && runp->aiocbp->aiocb.aio_fildes < aiocbp->aiocb.aio_fildes)
> +    {
> +      last = runp;
> +      runp = runp->next_fd;
> +    }
> +
> +  /* Get a new element for the waiting list.  */
> +  newp = get_elem ();
> +  if (newp == NULL)
> +    {
> +      pthread_mutex_unlock (&__aio_requests_mutex);
> +      __set_errno (EAGAIN);
> +      return NULL;
> +    }
> +  newp->aiocbp = aiocbp;
> +  newp->waiting = NULL;
> +
> +  aiocbp->aiocb.__abs_prio = prio;
> +  aiocbp->aiocb.__policy = policy;
> +  aiocbp->aiocb.aio_lio_opcode = operation;
> +  aiocbp->aiocb.__error_code = EINPROGRESS;
> +  aiocbp->aiocb.__return_value = 0;
> +
> +  if (runp != NULL
> +      && runp->aiocbp->aiocb.aio_fildes == aiocbp->aiocb.aio_fildes)
> +    {
> +      /* The current file descriptor is worked on.  It makes no sense
> +	 to start another thread since this new thread would fight
> +	 with the running thread for the resources.  But we also cannot
> +	 say that the thread processing this desriptor shall immediately
> +	 after finishing the current job process this request if there
> +	 are other threads in the running queue which have a higher
> +	 priority.  */
> +
> +      /* Simply enqueue it after the running one according to the
> +	 priority.  */
> +      last = NULL;
> +      while (runp->next_prio != NULL
> +	     && runp->next_prio->aiocbp->aiocb.__abs_prio >= prio)
> +	{
> +	  last = runp;
> +	  runp = runp->next_prio;
> +	}
> +
> +      newp->next_prio = runp->next_prio;
> +      runp->next_prio = newp;
> +
> +      running = queued;
> +    }
> +  else
> +    {
> +      running = yes;
> +      /* Enqueue this request for a new descriptor.  */
> +      if (last == NULL)
> +	{
> +	  newp->last_fd = NULL;
> +	  newp->next_fd = requests;
> +	  if (requests != NULL)
> +	    requests->last_fd = newp;
> +	  requests = newp;
> +	}
> +      else
> +	{
> +	  newp->next_fd = last->next_fd;
> +	  newp->last_fd = last;
> +	  last->next_fd = newp;
> +	  if (newp->next_fd != NULL)
> +	    newp->next_fd->last_fd = newp;
> +	}
> +
> +      newp->next_prio = NULL;
> +      last = NULL;
> +    }
> +
> +  if (running == yes)
> +    {
> +      /* We try to create a new thread for this file descriptor.  The
> +	 function which gets called will handle all available requests
> +	 for this descriptor and when all are processed it will
> +	 terminate.
> +
> +	 If no new thread can be created or if the specified limit of
> +	 threads for AIO is reached we queue the request.  */
> +
> +      /* See if we need to and are able to create a thread.  */
> +      if (nthreads < optim.aio_threads && idle_thread_count == 0)
> +	{
> +	  pthread_t thid;
> +
> +	  running = newp->running = allocated;
> +
> +	  /* Now try to start a thread.  */
> +	  result = aio_create_helper_thread (&thid, handle_fildes_io, newp);
> +	  if (result == 0)
> +	    /* We managed to enqueue the request.  All errors which can
> +	       happen now can be recognized by calls to `aio_return' and
> +	       `aio_error'.  */
> +	    ++nthreads;
> +	  else
> +	    {
> +	      /* Reset the running flag.  The new request is not running.  */
> +	      running = newp->running = yes;
> +
> +	      if (nthreads == 0)
> +		{
> +		  /* We cannot create a thread in the moment and there is
> +		     also no thread running.  This is a problem.  `errno' is
> +		     set to EAGAIN if this is only a temporary problem.  */
> +		  __aio_remove_request (last, newp, 0);
> +		}
> +	      else
> +		result = 0;
> +	    }
> +	}
> +    }
> +
> +  /* Enqueue the request in the run queue if it is not yet running.  */
> +  if (running == yes && result == 0)
> +    {
> +      add_request_to_runlist (newp);
> +
> +      /* If there is a thread waiting for work, then let it know that we
> +	 have just given it something to do. */
> +      if (idle_thread_count > 0)
> +	pthread_cond_signal (&__aio_new_request_notification);
> +    }
> +
> +  if (result == 0)
> +    newp->running = running;
> +  else
> +    {
> +      /* Something went wrong.  */
> +      __aio_free_request (newp);
> +      aiocbp->aiocb.__error_code = result;
> +      __set_errno (result);
> +      newp = NULL;
> +    }
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +  return newp;
> +}
> +
> +
> +static void *
> +handle_fildes_io (void *arg)
> +{
> +  pthread_t self = pthread_self ();
> +  struct sched_param param;
> +  struct requestlist *runp = (struct requestlist *) arg;
> +  aiocb_union *aiocbp;
> +  int policy;
> +  int fildes;
> +
> +  pthread_getschedparam (self, &policy, &param);
> +
> +  do
> +    {
> +      /* If runp is NULL, then we were created to service the work queue
> +	 in general, not to handle any particular request. In that case we
> +	 skip the "do work" stuff on the first pass, and go directly to the
> +	 "get work off the work queue" part of this loop, which is near the
> +	 end. */
> +      if (runp == NULL)
> +	pthread_mutex_lock (&__aio_requests_mutex);
> +      else
> +	{
> +	  /* Hopefully this request is marked as running.  */
> +	  assert (runp->running == allocated);
> +
> +	  /* Update our variables.  */
> +	  aiocbp = runp->aiocbp;
> +	  fildes = aiocbp->aiocb.aio_fildes;
> +
> +	  /* Change the priority to the requested value (if necessary).  */
> +	  if (aiocbp->aiocb.__abs_prio != param.sched_priority
> +	      || aiocbp->aiocb.__policy != policy)
> +	    {
> +	      param.sched_priority = aiocbp->aiocb.__abs_prio;
> +	      policy = aiocbp->aiocb.__policy;
> +	      pthread_setschedparam (self, policy, &param);
> +	    }
> +
> +	  /* Process request pointed to by RUNP.  We must not be disturbed
> +	     by signals.  */
> +	  if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_READ)
> +	    {
> +	      if (sizeof (off_t) != sizeof (off64_t)
> +		  && aiocbp->aiocb.aio_lio_opcode & 128)
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (__pread64 (fildes, (void *)
> +						 aiocbp->aiocb64.aio_buf,
> +						 aiocbp->aiocb64.aio_nbytes,
> +						 aiocbp->aiocb64.aio_offset));
> +	      else
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
> +						    (void *)
> +						    aiocbp->aiocb.aio_buf,
> +						    aiocbp->aiocb.aio_nbytes,
> +						    aiocbp->aiocb.aio_offset));
> +
> +	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
> +		/* The Linux kernel is different from others.  It returns
> +		   ESPIPE if using pread on a socket.  Other platforms
> +		   simply ignore the offset parameter and behave like
> +		   read.  */
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (read (fildes,
> +					    (void *) aiocbp->aiocb64.aio_buf,
> +					    aiocbp->aiocb64.aio_nbytes));
> +	    }
> +	  else if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_WRITE)
> +	    {
> +	      if (sizeof (off_t) != sizeof (off64_t)
> +		  && aiocbp->aiocb.aio_lio_opcode & 128)
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (__pwrite64 (fildes, (const void *)
> +						  aiocbp->aiocb64.aio_buf,
> +						  aiocbp->aiocb64.aio_nbytes,
> +						  aiocbp->aiocb64.aio_offset));
> +	      else
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
> +					      aiocbp->aiocb.aio_buf,
> +					      aiocbp->aiocb.aio_nbytes,
> +					      aiocbp->aiocb.aio_offset));
> +
> +	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
> +		/* The Linux kernel is different from others.  It returns
> +		   ESPIPE if using pwrite on a socket.  Other platforms
> +		   simply ignore the offset parameter and behave like
> +		   write.  */
> +		aiocbp->aiocb.__return_value =
> +		  TEMP_FAILURE_RETRY (write (fildes,
> +					     (void *) aiocbp->aiocb64.aio_buf,
> +					     aiocbp->aiocb64.aio_nbytes));
> +	    }
> +	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_DSYNC)
> +	    aiocbp->aiocb.__return_value =
> +	      TEMP_FAILURE_RETRY (fdatasync (fildes));
> +	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_SYNC)
> +	    aiocbp->aiocb.__return_value =
> +	      TEMP_FAILURE_RETRY (fsync (fildes));
> +	  else
> +	    {
> +	      /* This is an invalid opcode.  */
> +	      aiocbp->aiocb.__return_value = -1;
> +	      __set_errno (EINVAL);
> +	    }
> +
> +	  /* Get the mutex.  */
> +	  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +	  if (aiocbp->aiocb.__return_value == -1)
> +	    aiocbp->aiocb.__error_code = errno;
> +	  else
> +	    aiocbp->aiocb.__error_code = 0;
> +
> +	  /* Send the signal to notify about finished processing of the
> +	     request.  */
> +	  __aio_notify (runp);
> +
> +	  /* For debugging purposes we reset the running flag of the
> +	     finished request.  */
> +	  assert (runp->running == allocated);
> +	  runp->running = done;
> +
> +	  /* Now dequeue the current request.  */
> +	  __aio_remove_request (NULL, runp, 0);
> +	  if (runp->next_prio != NULL)
> +	    add_request_to_runlist (runp->next_prio);
> +
> +	  /* Free the old element.  */
> +	  __aio_free_request (runp);
> +	}
> +
> +      runp = runlist;
> +
> +      /* If the runlist is empty, then we sleep for a while, waiting for
> +	 something to arrive in it. */
> +      if (runp == NULL && optim.aio_idle_time >= 0)
> +	{
> +	  struct timespec now;
> +	  struct timespec wakeup_time;
> +
> +	  ++idle_thread_count;
> +	  __clock_gettime (CLOCK_REALTIME, &now);
> +	  wakeup_time.tv_sec = now.tv_sec + optim.aio_idle_time;
> +	  wakeup_time.tv_nsec = now.tv_nsec;
> +	  if (wakeup_time.tv_nsec >= 1000000000)
> +	    {
> +	      wakeup_time.tv_nsec -= 1000000000;
> +	      ++wakeup_time.tv_sec;
> +	    }
> +	  pthread_cond_timedwait (&__aio_new_request_notification,
> +				  &__aio_requests_mutex,
> +				  &wakeup_time);
> +	  --idle_thread_count;
> +	  runp = runlist;
> +	}
> +
> +      if (runp == NULL)
> +	--nthreads;
> +      else
> +	{
> +	  assert (runp->running == yes);
> +	  runp->running = allocated;
> +	  runlist = runp->next_run;
> +
> +	  /* If we have a request to process, and there's still another in
> +	     the run list, then we need to either wake up or create a new
> +	     thread to service the request that is still in the run list. */
> +	  if (runlist != NULL)
> +	    {
> +	      /* There are at least two items in the work queue to work on.
> +		 If there are other idle threads, then we should wake them
> +		 up for these other work elements; otherwise, we should try
> +		 to create a new thread. */
> +	      if (idle_thread_count > 0)
> +		pthread_cond_signal (&__aio_new_request_notification);
> +	      else if (nthreads < optim.aio_threads)
> +		{
> +		  pthread_t thid;
> +		  pthread_attr_t attr;
> +
> +		  /* Make sure the thread is created detached.  */
> +		  pthread_attr_init (&attr);
> +		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +
> +		  /* Now try to start a thread. If we fail, no big deal,
> +		     because we know that there is at least one thread (us)
> +		     that is working on AIO operations. */
> +		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
> +		      == 0)
> +		    ++nthreads;
> +		}
> +	    }
> +	}
> +
> +      /* Release the mutex.  */
> +      pthread_mutex_unlock (&__aio_requests_mutex);
> +    }
> +  while (runp != NULL);
> +
> +  return NULL;
> +}
> +
> +
> +/* Free allocated resources.  */
> +libc_freeres_fn (free_res)
> +{
> +  size_t row;
> +
> +  for (row = 0; row < pool_max_size; ++row)
> +    free (pool[row]);
> +
> +  free (pool);
> +}
> +
> +
> +/* Add newrequest to the runlist. The __abs_prio flag of newrequest must
> +   be correctly set to do this. Also, you had better set newrequest's
> +   "running" flag to "yes" before you release your lock or you'll throw an
> +   assertion. */
> +static void
> +add_request_to_runlist (struct requestlist *newrequest)
> +{
> +  int prio = newrequest->aiocbp->aiocb.__abs_prio;
> +  struct requestlist *runp;
> +
> +  if (runlist == NULL || runlist->aiocbp->aiocb.__abs_prio < prio)
> +    {
> +      newrequest->next_run = runlist;
> +      runlist = newrequest;
> +    }
> +  else
> +    {
> +      runp = runlist;
> +
> +      while (runp->next_run != NULL
> +	     && runp->next_run->aiocbp->aiocb.__abs_prio >= prio)
> +	runp = runp->next_run;
> +
> +      newrequest->next_run = runp->next_run;
> +      runp->next_run = newrequest;
> +    }
> +}

Ok.

> diff --git a/rt/aio_notify.c b/rt/aio_notify.c
> index 9d51fd9c5e..a8d61503d8 100644
> --- a/rt/aio_notify.c
> +++ b/rt/aio_notify.c
> @@ -1,6 +1,7 @@
> -/* Notify initiator of AIO request.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Notify initiator of AIO request.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -16,8 +17,141 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> +#include <errno.h>
> +#include <pthread.h>
> +#include <stdlib.h>
> +#include <unistd.h>
>  #include <aio_misc.h>
> +#include <signal.h>
>  
> -/* This file contains only internal functions used by
> -   the particular aio_* implementation code.  */
> +#ifndef aio_start_notify_thread
> +# define aio_start_notify_thread() do { } while (0)
> +#endif
> +
> +struct notify_func
> +  {
> +    void (*func) (sigval_t);
> +    sigval_t value;
> +  };
> +
> +static void *
> +notify_func_wrapper (void *arg)
> +{
> +  aio_start_notify_thread ();
> +  struct notify_func *const n = arg;
> +  void (*func) (sigval_t) = n->func;
> +  sigval_t value = n->value;
> +  free (n);
> +  (*func) (value);
> +  return NULL;
> +}
> +
> +
> +int
> +__aio_notify_only (struct sigevent *sigev)
> +{
> +  int result = 0;
> +
> +  /* Send the signal to notify about finished processing of the request.  */
> +  if (__glibc_unlikely (sigev->sigev_notify == SIGEV_THREAD))
> +    {
> +      /* We have to start a thread.  */
> +      pthread_t tid;
> +      pthread_attr_t attr, *pattr;
> +
> +      pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
> +      if (pattr == NULL)
> +	{
> +	  pthread_attr_init (&attr);
> +	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +	  pattr = &attr;
> +	}
> +
> +      /* SIGEV may be freed as soon as we return, so we cannot let the
> +	 notification thread use that pointer.  Even though a sigval_t is
> +	 only one word and the same size as a void *, we cannot just pass
> +	 the value through pthread_create as the argument and have the new
> +	 thread run the user's function directly, because on some machines
> +	 the calling convention for a union like sigval_t is different from
> +	 that for a pointer type like void *.  */
> +      struct notify_func *nf = malloc (sizeof *nf);
> +      if (nf == NULL)
> +	result = -1;
> +      else
> +	{
> +	  nf->func = sigev->sigev_notify_function;
> +	  nf->value = sigev->sigev_value;
> +	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
> +	    {
> +	      free (nf);
> +	      result = -1;
> +	    }
> +	}
> +    }
> +  else if (sigev->sigev_notify == SIGEV_SIGNAL)
> +    {
> +      /* We have to send a signal.  */
> +#if _POSIX_REALTIME_SIGNALS > 0
> +      /* Note that the standard gives us the option of using a plain
> +	 non-queuing signal here when SA_SIGINFO is not set for the signal.  */
> +      if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
> +	  < 0)
> +	result = -1;
> +#else
> +      /* There are no queued signals on this system at all.  */
> +      result = raise (sigev->sigev_signo);
> +#endif
> +    }
> +
> +  return result;
> +}
> +
> +
> +void
> +__aio_notify (struct requestlist *req)
> +{
> +  struct waitlist *waitlist;
> +  struct aiocb *aiocbp = &req->aiocbp->aiocb;
> +
> +  if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
> +    {
> +      /* XXX What shall we do if already an error is set by
> +	 read/write/fsync?  */
> +      aiocbp->__error_code = errno;
> +      aiocbp->__return_value = -1;
> +    }
> +
> +  /* Now also notify possibly waiting threads.  */
> +  waitlist = req->waiting;
> +  while (waitlist != NULL)
> +    {
> +      struct waitlist *next = waitlist->next;
> +
> +      if (waitlist->sigevp == NULL)
> +	{
> +	  if (waitlist->result != NULL && aiocbp->__return_value == -1)
> +	    *waitlist->result = -1;
> +
> +#ifdef DONT_NEED_AIO_MISC_COND
> +	  AIO_MISC_NOTIFY (waitlist);
> +#else
> +	  /* Decrement the counter.  */
> +	  --*waitlist->counterp;
> +
> +	  pthread_cond_signal (waitlist->cond);
> +#endif
> +	}
> +      else
> +	/* This is part of an asynchronous `lio_listio' operation.  If
> +	   this request is the last one, send the signal.  */
> +	if (--*waitlist->counterp == 0)
> +	  {
> +	    __aio_notify_only (waitlist->sigevp);
> +	    /* This is tricky.  See lio_listio.c for the reason why
> +	       this works.  */
> +	    free ((void *) waitlist->counterp);
> +	  }
> +
> +      waitlist = next;
> +    }
> +}
> diff --git a/rt/aio_read.c b/rt/aio_read.c
> index fcd5acea8e..4698e48b1c 100644
> --- a/rt/aio_read.c
> +++ b/rt/aio_read.c
> @@ -1,6 +1,7 @@
> -/* Asynchronous read.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Asynchronous read.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -17,18 +18,13 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <aio.h>
> -#include <errno.h>
>  
> -#ifdef BE_AIO64
> -#define aiocb		aiocb64
> -#define aio_read	aio_read64
> -#endif
> +#include <aio_misc.h>
> +
>  
>  int
>  aio_read (struct aiocb *aiocbp)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
> +	  ? -1 : 0);
>  }
> -
> -stub_warning (aio_read)

Ok.

> diff --git a/rt/aio_read64.c b/rt/aio_read64.c
> index e9994aefcb..26b9b0b380 100644
> --- a/rt/aio_read64.c
> +++ b/rt/aio_read64.c
> @@ -1,2 +1,30 @@
> -#define BE_AIO64
> -#include <aio_read.c>
> +/* Asynchronous read, 64bit offset version.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> +
> +   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 <aio.h>
> +
> +#include <aio_misc.h>
> +
> +
> +int
> +aio_read64 (struct aiocb64 *aiocbp)
> +{
> +  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
> +	  ? -1 : 0);
> +}


Ok.


> diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c
> index 32f5f7e742..6fd5b1bee2 100644
> --- a/rt/aio_suspend.c
> +++ b/rt/aio_suspend.c
> @@ -1,6 +1,7 @@
> -/* Suspend until termination of a requests.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Suspend until termination of a requests.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -27,18 +28,236 @@
>  /* And undo the hack.  */
>  #undef aio_suspend64
>  
> +#include <assert.h>
>  #include <errno.h>
> +#include <stdbool.h>
> +#include <stdlib.h>
>  #include <sys/time.h>
>  
> +#include <libc-lock.h>
> +#include <aio_misc.h>
> +
> +
> +struct clparam
> +{
> +  const struct aiocb *const *list;
> +  struct waitlist *waitlist;
> +  struct requestlist **requestlist;
> +#ifndef DONT_NEED_AIO_MISC_COND
> +  pthread_cond_t *cond;
> +#endif
> +  int nent;
> +};
> +
> +
> +static void
> +cleanup (void *arg)
> +{
> +#ifdef DONT_NEED_AIO_MISC_COND
> +  /* Acquire the mutex.  If pthread_cond_*wait is used this would
> +     happen implicitly.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +#endif
> +
> +  const struct clparam *param = (const struct clparam *) arg;
> +
> +  /* Now remove the entry in the waiting list for all requests
> +     which didn't terminate.  */
> +  int cnt = param->nent;
> +  while (cnt-- > 0)
> +    if (param->list[cnt] != NULL
> +	&& param->list[cnt]->__error_code == EINPROGRESS)
> +      {
> +	struct waitlist **listp;
> +
> +	assert (param->requestlist[cnt] != NULL);
> +
> +	/* There is the chance that we cannot find our entry anymore. This
> +	   could happen if the request terminated and restarted again.  */
> +	listp = &param->requestlist[cnt]->waiting;
> +	while (*listp != NULL && *listp != &param->waitlist[cnt])
> +	  listp = &(*listp)->next;
> +
> +	if (*listp != NULL)
> +	  *listp = (*listp)->next;
> +      }
> +
> +#ifndef DONT_NEED_AIO_MISC_COND
> +  /* Release the conditional variable.  */
> +  (void) pthread_cond_destroy (param->cond);
> +#endif
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +}
> +
> +#ifdef DONT_NEED_AIO_MISC_COND
> +static int
> +__attribute__ ((noinline))
> +do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
> +{
> +  int result = 0;
> +
> +  AIO_MISC_WAIT (result, *cntr, timeout, 1);
> +
> +  return result;
> +}
> +#endif
>  
>  int
> -aio_suspend (const struct aiocb *const list[], int nent,
> -	     const struct timespec *timeout)
> +__aio_suspend_time64 (const struct aiocb *const list[], int nent,
> +		      const struct __timespec64 *timeout)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  if (__glibc_unlikely (nent < 0))
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  struct waitlist waitlist[nent];
> +  struct requestlist *requestlist[nent];
> +#ifndef DONT_NEED_AIO_MISC_COND
> +  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> +#endif
> +  int cnt;
> +  bool any = false;
> +  int result = 0;
> +  unsigned int cntr = 1;
> +
> +  /* Request the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  /* There is not yet a finished request.  Signal the request that
> +     we are working for it.  */
> +  for (cnt = 0; cnt < nent; ++cnt)
> +    if (list[cnt] != NULL)
> +      {
> +	if (list[cnt]->__error_code == EINPROGRESS)
> +	  {
> +	    requestlist[cnt] = __aio_find_req ((aiocb_union *) list[cnt]);
> +
> +	    if (requestlist[cnt] != NULL)
> +	      {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +		waitlist[cnt].cond = &cond;
> +#endif
> +		waitlist[cnt].result = NULL;
> +		waitlist[cnt].next = requestlist[cnt]->waiting;
> +		waitlist[cnt].counterp = &cntr;
> +		waitlist[cnt].sigevp = NULL;
> +		requestlist[cnt]->waiting = &waitlist[cnt];
> +		any = true;
> +	      }
> +	    else
> +	      /* We will never suspend.  */
> +	      break;
> +	  }
> +	else
> +	  /* We will never suspend.  */
> +	  break;
> +      }
> +
> +  struct __timespec64 ts;
> +  if (timeout != NULL)
> +    {
> +      __clock_gettime64 (CLOCK_MONOTONIC, &ts);
> +      ts.tv_sec += timeout->tv_sec;
> +      ts.tv_nsec += timeout->tv_nsec;
> +      if (ts.tv_nsec >= 1000000000)
> +	{
> +	  ts.tv_nsec -= 1000000000;
> +	  ts.tv_sec++;
> +	}
> +    }
> +
> +  /* Only if none of the entries is NULL or finished to be wait.  */
> +  if (cnt == nent && any)
> +    {
> +      struct clparam clparam =
> +	{
> +	  .list = list,
> +	  .waitlist = waitlist,
> +	  .requestlist = requestlist,
> +#ifndef DONT_NEED_AIO_MISC_COND
> +	  .cond = &cond,
> +#endif
> +	  .nent = nent
> +	};
> +
> +      pthread_cleanup_push (cleanup, &clparam);
> +
> +#ifdef DONT_NEED_AIO_MISC_COND
> +      result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
> +#else
> +      struct timespec ts32 = valid_timespec64_to_timespec (ts);
> +      result = pthread_cond_timedwait (&cond, &__aio_requests_mutex,
> +				       timeout == NULL ? NULL : &ts32);
> +#endif
> +
> +      pthread_cleanup_pop (0);
> +    }
> +
> +  /* Now remove the entry in the waiting list for all requests
> +     which didn't terminate.  */
> +  while (cnt-- > 0)
> +    if (list[cnt] != NULL && list[cnt]->__error_code == EINPROGRESS)
> +      {
> +	struct waitlist **listp;
> +
> +	assert (requestlist[cnt] != NULL);
> +
> +	/* There is the chance that we cannot find our entry anymore. This
> +	   could happen if the request terminated and restarted again.  */
> +	listp = &requestlist[cnt]->waiting;
> +	while (*listp != NULL && *listp != &waitlist[cnt])
> +	  listp = &(*listp)->next;
> +
> +	if (*listp != NULL)
> +	  *listp = (*listp)->next;
> +      }
> +
> +#ifndef DONT_NEED_AIO_MISC_COND
> +  /* Release the conditional variable.  */
> +  if (__glibc_unlikely (pthread_cond_destroy (&cond) != 0))
> +    /* This must never happen.  */
> +    abort ();
> +#endif
> +
> +  if (result != 0)
> +    {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +      /* An error occurred.  Possibly it's ETIMEDOUT.  We have to translate
> +	 the timeout error report of `pthread_cond_timedwait' to the
> +	 form expected from `aio_suspend'.  */
> +      if (result == ETIMEDOUT)
> +	__set_errno (EAGAIN);
> +      else
> +#endif
> +	__set_errno (result);
> +
> +      result = -1;
> +    }
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +  return result;
>  }
> -weak_alias (aio_suspend, aio_suspend64)
>  
> -stub_warning (aio_suspend)
> -stub_warning (aio_suspend64)
> +#if __TIMESIZE != 64
> +librt_hidden_def (__aio_suspend_time64)
> +
> +int
> +__aio_suspend (const struct aiocb *const list[], int nent,
> +               const struct timespec *timeout)
> +{
> +  struct __timespec64 ts64;
> +
> +  if (timeout != NULL)
> +    ts64 = valid_timespec_to_timespec64 (*timeout);
> +
> +  return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
> +}
> +#endif
> +weak_alias (__aio_suspend, aio_suspend)
> +weak_alias (aio_suspend, aio_suspend64)


Ok.


> diff --git a/rt/aio_write.c b/rt/aio_write.c
> index 18a338e094..ea55f0dbbc 100644
> --- a/rt/aio_write.c
> +++ b/rt/aio_write.c
> @@ -1,6 +1,7 @@
> -/* Asynchronous write.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Asynchronous write.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -17,18 +18,13 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <aio.h>
> -#include <errno.h>
>  
> -#ifdef BE_AIO64
> -#define aiocb		aiocb64
> -#define aio_write	aio_write64
> -#endif
> +#include <aio_misc.h>
> +
>  
>  int
>  aio_write (struct aiocb *aiocbp)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
> +	  ? -1 : 0);
>  }
> -
> -stub_warning (aio_write)

Ok.

> diff --git a/rt/aio_write64.c b/rt/aio_write64.c
> index 88d5c001ce..bd6dd316be 100644
> --- a/rt/aio_write64.c
> +++ b/rt/aio_write64.c
> @@ -1,2 +1,30 @@
> -#define BE_AIO64
> -#include <aio_write.c>
> +/* Asynchronous write, 64bit offset version.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> +
> +   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 <aio.h>
> +
> +#include <aio_misc.h>
> +
> +
> +int
> +aio_write64 (struct aiocb64 *aiocbp)
> +{
> +  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
> +	  ? -1 : 0);
> +}

Ok.

> diff --git a/rt/lio_listio.c b/rt/lio_listio.c
> index db4ce68afc..2cab3c2254 100644
> --- a/rt/lio_listio.c
> +++ b/rt/lio_listio.c
> @@ -1,6 +1,7 @@
> -/* Enqueue a list of read or write requests.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Enqueue and list of read or write requests.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -16,25 +17,232 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> +#ifndef lio_listio
>  #include <aio.h>
> +#include <assert.h>
>  #include <errno.h>
> +#include <stdlib.h>
> +#include <unistd.h>
>  
> -#ifdef BE_AIO64
> -#define lio_listio	lio_listio64
> -#define aiocb		aiocb64
> -#define aio_read	aio_read64
> -#define aio_write	aio_write64
> -#define aio_suspend	aio_suspend64
> +#include <aio_misc.h>
> +
> +#define LIO_OPCODE_BASE 0
> +#endif
> +
> +#include <shlib-compat.h>
> +
> +
> +/* We need this special structure to handle asynchronous I/O.  */
> +struct async_waitlist
> +  {
> +    unsigned int counter;
> +    struct sigevent sigev;
> +    struct waitlist list[0];
> +  };
> +
> +
> +/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
> +   requests submitted with lio_listio finished.  The existing practice
> +   is to issue events for the individual requests as well.  This is
> +   what the new code does.  */
> +#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> +# define LIO_MODE(mode) ((mode) & 127)
> +# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
> +#else
> +# define LIO_MODE(mode) mode
> +# define NO_INDIVIDUAL_EVENT_P(mode) 0
> +#endif
> +
> +
> +static int
> +lio_listio_internal (int mode, struct aiocb *const list[], int nent,
> +		     struct sigevent *sig)
> +{
> +  struct sigevent defsigev;
> +  struct requestlist *requests[nent];
> +  int cnt;
> +  volatile unsigned int total = 0;
> +  int result = 0;
> +
> +  if (sig == NULL)
> +    {
> +      defsigev.sigev_notify = SIGEV_NONE;
> +      sig = &defsigev;
> +    }
> +
> +  /* Request the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  /* Now we can enqueue all requests.  Since we already acquired the
> +     mutex the enqueue function need not do this.  */
> +  for (cnt = 0; cnt < nent; ++cnt)
> +    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> +      {
> +	if (NO_INDIVIDUAL_EVENT_P (mode))
> +	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
> +
> +	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
> +					       (list[cnt]->aio_lio_opcode
> +						| LIO_OPCODE_BASE));
> +
> +	if (requests[cnt] != NULL)
> +	  /* Successfully enqueued.  */
> +	  ++total;
> +	else
> +	  /* Signal that we've seen an error.  `errno' and the error code
> +	     of the aiocb will tell more.  */
> +	  result = -1;
> +      }
> +    else
> +      requests[cnt] = NULL;
> +
> +  if (total == 0)
> +    {
> +      /* We don't have anything to do except signalling if we work
> +	 asynchronously.  */
> +
> +      /* Release the mutex.  We do this before raising a signal since the
> +	 signal handler might do a `siglongjmp' and then the mutex is
> +	 locked forever.  */
> +      pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +      if (LIO_MODE (mode) == LIO_NOWAIT)
> +	__aio_notify_only (sig);
> +
> +      return result;
> +    }
> +  else if (LIO_MODE (mode) == LIO_WAIT)
> +    {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> +      int oldstate;
> +#endif
> +      struct waitlist waitlist[nent];
> +
> +      total = 0;
> +      for (cnt = 0; cnt < nent; ++cnt)
> +	{
> +	  assert (requests[cnt] == NULL || list[cnt] != NULL);
> +
> +	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> +	    {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +	      waitlist[cnt].cond = &cond;
>  #endif
> +	      waitlist[cnt].result = &result;
> +	      waitlist[cnt].next = requests[cnt]->waiting;
> +	      waitlist[cnt].counterp = &total;
> +	      waitlist[cnt].sigevp = NULL;
> +	      requests[cnt]->waiting = &waitlist[cnt];
> +	      ++total;
> +	    }
> +	}
>  
> +#ifdef DONT_NEED_AIO_MISC_COND
> +      AIO_MISC_WAIT (result, total, NULL, 0);
> +#else
> +      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
> +	 points we must be careful.  We added entries to the waiting lists
> +	 which we must remove.  So defer cancellation for now.  */
> +      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
>  
> +      while (total > 0)
> +	pthread_cond_wait (&cond, &__aio_requests_mutex);
> +
> +      /* Now it's time to restore the cancellation state.  */
> +      pthread_setcancelstate (oldstate, NULL);
> +
> +      /* Release the conditional variable.  */
> +      if (pthread_cond_destroy (&cond) != 0)
> +	/* This must never happen.  */
> +	abort ();
> +#endif
> +
> +      /* If any of the I/O requests failed, return -1 and set errno.  */
> +      if (result != 0)
> +	{
> +	  __set_errno (result == EINTR ? EINTR : EIO);
> +	  result = -1;
> +	}
> +    }
> +  else
> +    {
> +      struct async_waitlist *waitlist;
> +
> +      waitlist = (struct async_waitlist *)
> +	malloc (sizeof (struct async_waitlist)
> +		+ (nent * sizeof (struct waitlist)));
> +
> +      if (waitlist == NULL)
> +	{
> +	  __set_errno (EAGAIN);
> +	  result = -1;
> +	}
> +      else
> +	{
> +	  total = 0;
> +
> +	  for (cnt = 0; cnt < nent; ++cnt)
> +	    {
> +	      assert (requests[cnt] == NULL || list[cnt] != NULL);
> +
> +	      if (requests[cnt] != NULL
> +		  && list[cnt]->aio_lio_opcode != LIO_NOP)
> +		{
> +#ifndef DONT_NEED_AIO_MISC_COND
> +		  waitlist->list[cnt].cond = NULL;
> +#endif
> +		  waitlist->list[cnt].result = NULL;
> +		  waitlist->list[cnt].next = requests[cnt]->waiting;
> +		  waitlist->list[cnt].counterp = &waitlist->counter;
> +		  waitlist->list[cnt].sigevp = &waitlist->sigev;
> +		  requests[cnt]->waiting = &waitlist->list[cnt];
> +		  ++total;
> +		}
> +	    }
> +
> +	  waitlist->counter = total;
> +	  waitlist->sigev = *sig;
> +	}
> +    }
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +  return result;
> +}
> +
> +
> +#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
>  int
> -lio_listio (int mode,
> -	    struct aiocb *const list[], int nent,
> -	    struct sigevent *sig)
> +attribute_compat_text_section
> +__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
> +		 struct sigevent *sig)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  /* Check arguments.  */
> +  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
>  }
> +compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
> +#endif
>  
> -stub_warning (lio_listio)
> +
> +int
> +__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
> +			  struct sigevent *sig)
> +{
> +    /* Check arguments.  */
> +  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  return lio_listio_internal (mode, list, nent, sig);
> +}
> +versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
Ok.

> diff --git a/rt/lio_listio64.c b/rt/lio_listio64.c
> index 35a571c685..111c883a2f 100644
> --- a/rt/lio_listio64.c
> +++ b/rt/lio_listio64.c
> @@ -1,2 +1,33 @@
> -#define BE_AIO64
> +/* Enqueue and list of read or write requests, 64bit offset version.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> +
> +   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 <aio.h>
> +#include <assert.h>
> +#include <errno.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +
> +#include <aio_misc.h>
> +
> +#define lio_listio lio_listio64
> +#define __lio_listio_21 __lio_listio64_21
> +#define __lio_listio_item_notify __lio_listio64_item_notify
> +#define aiocb aiocb64
> +#define LIO_OPCODE_BASE 128
>  #include <lio_listio.c>
> diff --git a/rt/timer_create.c b/rt/timer_create.c
> index 79d4d18317..2808f5b32b 100644
> --- a/rt/timer_create.c
> +++ b/rt/timer_create.c
> @@ -1,10 +1,11 @@
> -/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
>  
>     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.
> +   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
> @@ -12,17 +13,154 @@
>     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/>.  */
> +   License along with the GNU C Library; see the file COPYING.LIB.  If
> +   not, see <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> +#include <signal.h>
> +#include <pthread.h>
>  #include <time.h>
> +#include <unistd.h>
> +
> +#include "posix-timer.h"
> +
>  
>  /* Create new per-process timer using CLOCK.  */
>  int
>  timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  int retval = -1;
> +  struct timer_node *newtimer = NULL;
> +  struct thread_node *thread = NULL;
> +
> +  if (0
> +#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
> +      || clock_id == CLOCK_PROCESS_CPUTIME_ID
> +#endif
> +#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
> +      || clock_id == CLOCK_THREAD_CPUTIME_ID
> +#endif
> +      )
> +    {
> +      /* We don't allow timers for CPU clocks.  At least not in the
> +	 moment.  */
> +      __set_errno (ENOTSUP);
> +      return -1;
> +    }
> +
> +  if (clock_id != CLOCK_REALTIME)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  pthread_once (&__timer_init_once_control, __timer_init_once);
> +
> +  if (__timer_init_failed)
> +    {
> +      __set_errno (ENOMEM);
> +      return -1;
> +    }
> +
> +  pthread_mutex_lock (&__timer_mutex);
> +
> +  newtimer = __timer_alloc ();
> +  if (__glibc_unlikely (newtimer == NULL))
> +    {
> +      __set_errno (EAGAIN);
> +      goto unlock_bail;
> +    }
> +
> +  if (evp != NULL)
> +    newtimer->event = *evp;
> +  else
> +    {
> +      newtimer->event.sigev_notify = SIGEV_SIGNAL;
> +      newtimer->event.sigev_signo = SIGALRM;
> +      newtimer->event.sigev_value.sival_ptr = newtimer;
> +      newtimer->event.sigev_notify_function = 0;
> +    }
> +
> +  newtimer->event.sigev_notify_attributes = &newtimer->attr;
> +  newtimer->creator_pid = getpid ();
> +
> +  switch (__builtin_expect (newtimer->event.sigev_notify, SIGEV_SIGNAL))
> +    {
> +    case SIGEV_NONE:
> +    case SIGEV_SIGNAL:
> +      /* We have a global thread for delivering timed signals.
> +	 If it is not running, try to start it up.  */
> +      thread = &__timer_signal_thread_rclk;
> +      if (! thread->exists)
> +	{
> +	  if (__builtin_expect (__timer_thread_start (thread),
> +				1) < 0)
> +	    {
> +	      __set_errno (EAGAIN);
> +	      goto unlock_bail;
> +            }
> +        }
> +      break;
> +
> +    case SIGEV_THREAD:
> +      /* Copy over thread attributes or set up default ones.  */
> +      if (evp->sigev_notify_attributes)
> +	newtimer->attr = *(pthread_attr_t *) evp->sigev_notify_attributes;
> +      else
> +	pthread_attr_init (&newtimer->attr);
> +
> +      /* Ensure thread attributes call for deatched thread.  */
> +      pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
> +
> +      /* Try to find existing thread having the right attributes.  */
> +      thread = __timer_thread_find_matching (&newtimer->attr, clock_id);
> +
> +      /* If no existing thread has these attributes, try to allocate one.  */
> +      if (thread == NULL)
> +	thread = __timer_thread_alloc (&newtimer->attr, clock_id);
> +
> +      /* Out of luck; no threads are available.  */
> +      if (__glibc_unlikely (thread == NULL))
> +	{
> +	  __set_errno (EAGAIN);
> +	  goto unlock_bail;
> +	}
> +
> +      /* If the thread is not running already, try to start it.  */
> +      if (! thread->exists
> +	  && __builtin_expect (! __timer_thread_start (thread), 0))
> +	{
> +	  __set_errno (EAGAIN);
> +	  goto unlock_bail;
> +	}
> +      break;
> +
> +    default:
> +      __set_errno (EINVAL);
> +      goto unlock_bail;
> +    }
> +
> +  newtimer->clock = clock_id;
> +  newtimer->abstime = 0;
> +  newtimer->armed = 0;
> +  newtimer->thread = thread;
> +
> +  *timerid = timer_ptr2id (newtimer);
> +  retval = 0;
> +
> +  if (__builtin_expect (retval, 0) == -1)
> +    {
> +    unlock_bail:
> +      if (thread != NULL)
> +	__timer_thread_dealloc (thread);
> +      if (newtimer != NULL)
> +	{
> +	  timer_delref (newtimer);
> +	  __timer_dealloc (newtimer);
> +	}
> +    }
> +
> +  pthread_mutex_unlock (&__timer_mutex);
> +
> +  return retval;
>  }
> -stub_warning (timer_create)

Ok.

> diff --git a/rt/timer_delete.c b/rt/timer_delete.c
> index 71da429e8b..c6f6d9743d 100644
> --- a/rt/timer_delete.c
> +++ b/rt/timer_delete.c
> @@ -1,10 +1,11 @@
> -/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
>  
>     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.
> +   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
> @@ -12,17 +13,56 @@
>     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/>.  */
> +   License along with the GNU C Library; see the file COPYING.LIB.  If
> +   not, see <https://www.gnu.org/licenses/>.  */
>  
> +#include <assert.h>
>  #include <errno.h>
> +#include <pthread.h>
>  #include <time.h>
>  
> +#include "posix-timer.h"
> +
> +
>  /* Delete timer TIMERID.  */
>  int
>  timer_delete (timer_t timerid)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct timer_node *timer;
> +  int retval = -1;
> +
> +  pthread_mutex_lock (&__timer_mutex);
> +
> +  timer = timer_id2ptr (timerid);
> +  if (! timer_valid (timer))
> +    /* Invalid timer ID or the timer is not in use.  */
> +    __set_errno (EINVAL);
> +  else
> +    {
> +      if (timer->armed && timer->thread != NULL)
> +	{
> +	  struct thread_node *thread = timer->thread;
> +	  assert (thread != NULL);
> +
> +	  /* If thread is cancelled while waiting for handler to terminate,
> +	     the mutex is unlocked and timer_delete is aborted.  */
> +	  pthread_cleanup_push (__timer_mutex_cancel_handler, &__timer_mutex);
> +
> +	  /* If timer is currently being serviced, wait for it to finish.  */
> +	  while (thread->current_timer == timer)
> +	    pthread_cond_wait (&thread->cond, &__timer_mutex);
> +
> +	  pthread_cleanup_pop (0);
> +        }
> +
> +      /* Remove timer from whatever queue it may be on and deallocate it.  */
> +      timer->inuse = TIMER_DELETED;
> +      list_unlink_ip (&timer->links);
> +      timer_delref (timer);
> +      retval = 0;
> +    }
> +
> +  pthread_mutex_unlock (&__timer_mutex);
> +
> +  return retval;
>  }
> -stub_warning (timer_delete)

Ok.

> diff --git a/rt/timer_getoverr.c b/rt/timer_getoverr.c
> index 3680ba687f..c1952f80c6 100644
> --- a/rt/timer_getoverr.c
> +++ b/rt/timer_getoverr.c
> @@ -1,10 +1,11 @@
> -/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
>  
>     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.
> +   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
> @@ -12,17 +13,31 @@
>     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/>.  */
> +   License along with the GNU C Library; see the file COPYING.LIB.  If
> +   not, see <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> +#include <pthread.h>
>  #include <time.h>
>  
> +#include "posix-timer.h"
> +
> +
>  /* Get expiration overrun for timer TIMERID.  */
>  int
>  timer_getoverrun (timer_t timerid)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct timer_node *timer;
> +  int retval = -1;
> +
> +  pthread_mutex_lock (&__timer_mutex);
> +
> +  if (! timer_valid (timer = timer_id2ptr (timerid)))
> +    __set_errno (EINVAL);
> +  else
> +    retval = timer->overrun_count;
> +
> +  pthread_mutex_unlock (&__timer_mutex);
> +
> +  return retval;
>  }
> -stub_warning (timer_getoverrun)

Ok.

> diff --git a/rt/timer_gettime.c b/rt/timer_gettime.c
> index 7bd94386a4..dd3b4a6281 100644
> --- a/rt/timer_gettime.c
> +++ b/rt/timer_gettime.c
> @@ -1,10 +1,11 @@
> -/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
>  
>     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.
> +   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
> @@ -12,17 +13,62 @@
>     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/>.  */
> +   License along with the GNU C Library; see the file COPYING.LIB.  If
> +   not, see <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> +#include <pthread.h>
>  #include <time.h>
>  
> +#include "posix-timer.h"
> +
> +
>  /* Get current value of timer TIMERID and store it in VLAUE.  */
>  int
>  timer_gettime (timer_t timerid, struct itimerspec *value)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct timer_node *timer;
> +  struct timespec now, expiry;
> +  int retval = -1, armed = 0, valid;
> +  clock_t clock = 0;
> +
> +  pthread_mutex_lock (&__timer_mutex);
> +
> +  timer = timer_id2ptr (timerid);
> +  valid = timer_valid (timer);
> +
> +  if (valid) {
> +    armed = timer->armed;
> +    expiry = timer->expirytime;
> +    clock = timer->clock;
> +    value->it_interval = timer->value.it_interval;
> +  }
> +
> +  pthread_mutex_unlock (&__timer_mutex);
> +
> +  if (valid)
> +    {
> +      if (armed)
> +	{
> +	  __clock_gettime (clock, &now);
> +	  if (timespec_compare (&now, &expiry) < 0)
> +	    timespec_sub (&value->it_value, &expiry, &now);
> +	  else
> +	    {
> +	      value->it_value.tv_sec = 0;
> +	      value->it_value.tv_nsec = 0;
> +	    }
> +	}
> +      else
> +	{
> +	  value->it_value.tv_sec = 0;
> +	  value->it_value.tv_nsec = 0;
> +	}
> +
> +      retval = 0;
> +    }
> +  else
> +    __set_errno (EINVAL);
> +
> +  return retval;
>  }
> -stub_warning (timer_gettime)

Ok.

> diff --git a/rt/timer_settime.c b/rt/timer_settime.c
> index cde0e742fc..c05adf166f 100644
> --- a/rt/timer_settime.c
> +++ b/rt/timer_settime.c
> @@ -1,10 +1,11 @@
> -/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> +   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
>  
>     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.
> +   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
> @@ -12,18 +13,119 @@
>     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/>.  */
> +   License along with the GNU C Library; see the file COPYING.LIB.  If
> +   not, see <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> +#include <pthread.h>
>  #include <time.h>
>  
> +#include "posix-timer.h"
> +
> +
>  /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
>  int
>  timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
>  	       struct itimerspec *ovalue)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct timer_node *timer;
> +  struct thread_node *thread = NULL;
> +  struct timespec now;
> +  int have_now = 0, need_wakeup = 0;
> +  int retval = -1;
> +
> +  timer = timer_id2ptr (timerid);
> +  if (timer == NULL)
> +    {
> +      __set_errno (EINVAL);
> +      goto bail;
> +    }
> +
> +  if (! valid_nanoseconds (value->it_interval.tv_nsec)
> +      || ! valid_nanoseconds (value->it_value.tv_nsec))
> +    {
> +      __set_errno (EINVAL);
> +      goto bail;
> +    }
> +
> +  /* Will need to know current time since this is a relative timer;
> +     might as well make the system call outside of the lock now! */
> +
> +  if ((flags & TIMER_ABSTIME) == 0)
> +    {
> +      __clock_gettime (timer->clock, &now);
> +      have_now = 1;
> +    }
> +
> +  pthread_mutex_lock (&__timer_mutex);
> +  timer_addref (timer);
> +
> +  /* One final check of timer validity; this one is possible only
> +     until we have the mutex, because it accesses the inuse flag. */
> +
> +  if (! timer_valid(timer))
> +    {
> +      __set_errno (EINVAL);
> +      goto unlock_bail;
> +    }
> +
> +  if (ovalue != NULL)
> +    {
> +      ovalue->it_interval = timer->value.it_interval;
> +
> +      if (timer->armed)
> +	{
> +	  if (! have_now)
> +	    {
> +	      pthread_mutex_unlock (&__timer_mutex);
> +	      __clock_gettime (timer->clock, &now);
> +	      have_now = 1;
> +	      pthread_mutex_lock (&__timer_mutex);
> +	      timer_addref (timer);
> +	    }
> +
> +	  timespec_sub (&ovalue->it_value, &timer->expirytime, &now);
> +	}
> +      else
> +	{
> +	  ovalue->it_value.tv_sec = 0;
> +	  ovalue->it_value.tv_nsec = 0;
> +	}
> +    }
> +
> +  timer->value = *value;
> +
> +  list_unlink_ip (&timer->links);
> +  timer->armed = 0;
> +
> +  thread = timer->thread;
> +
> +  /* A value of { 0, 0 } causes the timer to be stopped. */
> +  if (value->it_value.tv_sec != 0
> +      || __builtin_expect (value->it_value.tv_nsec != 0, 1))
> +    {
> +      if ((flags & TIMER_ABSTIME) != 0)
> +	/* The user specified the expiration time.  */
> +	timer->expirytime = value->it_value;
> +      else
> +	timespec_add (&timer->expirytime, &now, &value->it_value);
> +
> +      /* Only need to wake up the thread if timer is inserted
> +	 at the head of the queue. */
> +      if (thread != NULL)
> +	need_wakeup = __timer_thread_queue_timer (thread, timer);
> +      timer->armed = 1;
> +    }
> +
> +  retval = 0;
> +
> +unlock_bail:
> +  timer_delref (timer);
> +  pthread_mutex_unlock (&__timer_mutex);
> +
> +bail:
> +  if (thread != NULL && need_wakeup)
> +    __timer_thread_wakeup (thread);
> +
> +  return retval;
>  }
> -stub_warning (timer_settime)

Ok.

> diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
> index 1307d822a0..e23524cffe 100644
> --- a/sysdeps/generic/aio_misc.h
> +++ b/sysdeps/generic/aio_misc.h
> @@ -1,5 +1,4 @@
> -/* Internal declarations for <aio.h> functions implementation.  Stub version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> +/* Copyright (C) 1997-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
> @@ -20,17 +19,19 @@
>  #define _AIO_MISC_H	1
>  
>  #include <aio.h>
> +#include <pthread.h>
>  
>  
>  /* Extend the operation enum.  */
>  enum
>  {
> -  LIO_DSYNC = LIO_READ + 1,
> +  LIO_DSYNC = LIO_NOP + 1,
>    LIO_SYNC,
>    LIO_READ64 = LIO_READ | 128,
>    LIO_WRITE64 = LIO_WRITE | 128
>  };
>  
> +
>  /* Union of the two request types.  */
>  typedef union
>    {
> @@ -39,9 +40,83 @@ typedef union
>    } aiocb_union;
>  
>  
> +/* Used to synchronize.  */
> +struct waitlist
> +  {
> +    struct waitlist *next;
> +
> +    /* The next two fields is used in synchronous `lio_listio' operations.  */
> +#ifndef DONT_NEED_AIO_MISC_COND
> +    pthread_cond_t *cond;
> +#endif
> +    int *result;
> +
> +    volatile unsigned int *counterp;
> +    /* The next field is used in asynchronous `lio_listio' operations.  */
> +    struct sigevent *sigevp;
> +  };
> +
> +
> +/* Status of a request.  */
> +enum
> +{
> +  no,
> +  queued,
> +  yes,
> +  allocated,
> +  done
> +};
> +
> +
> +/* Used to queue requests..  */
> +struct requestlist
> +  {
> +    int running;
> +
> +    struct requestlist *last_fd;
> +    struct requestlist *next_fd;
> +    struct requestlist *next_prio;
> +    struct requestlist *next_run;
> +
> +    /* Pointer to the actual data.  */
> +    aiocb_union *aiocbp;
> +
> +    /* List of waiting processes.  */
> +    struct waitlist *waiting;
> +  };
> +
> +
> +/* Lock for global I/O list of requests.  */
> +extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
> +
> +
> +/* Enqueue request.  */
> +extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
> +						  int operation)
> +  attribute_hidden;
> +
> +/* Find request entry for given AIO control block.  */
> +extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
> +
> +/* Find request entry for given file descriptor.  */
> +extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
> +
> +/* Remove request from the list.  */
> +extern void __aio_remove_request (struct requestlist *last,
> +				  struct requestlist *req, int all)
> +     attribute_hidden;
> +
> +/* Release the entry for the request.  */
> +extern void __aio_free_request (struct requestlist *req) attribute_hidden;
> +
> +/* Notify initiator of request and tell this everybody listening.  */
> +extern void __aio_notify (struct requestlist *req) attribute_hidden;
> +
> +/* Notify initiator of request.  */
> +extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
> +
>  /* Send the signal.  */
>  extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>       attribute_hidden;
>  
> -
>  #endif /* aio_misc.h */

Ok.

> diff --git a/sysdeps/pthread/timer_routines.c b/sysdeps/htl/timer_routines.c
> similarity index 100%
> rename from sysdeps/pthread/timer_routines.c
> rename to sysdeps/htl/timer_routines.c
> diff --git a/sysdeps/pthread/Versions b/sysdeps/pthread/Versions
> deleted file mode 100644
> index a71cffbed4..0000000000
> --- a/sysdeps/pthread/Versions
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -librt {
> -  GLIBC_2.4 {
> -    lio_listio; lio_listio64;
> -  }
> -}


Ok.

> diff --git a/sysdeps/pthread/aio_cancel.c b/sysdeps/pthread/aio_cancel.c
> deleted file mode 100644
> index 63fd88f36c..0000000000
> --- a/sysdeps/pthread/aio_cancel.c
> +++ /dev/null
> @@ -1,157 +0,0 @@
> -/* Cancel requests associated with given file descriptor.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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/>.  */
> -
> -
> -/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> -   implementation of aio_cancel and aio_cancel64 are identical and so
> -   we want to avoid code duplication by using aliases.  But gcc sees
> -   the different parameter lists and prints a warning.  We define here
> -   a function so that aio_cancel64 has no prototype.  */
> -#ifndef aio_cancel
> -#define aio_cancel64 XXX
> -#include <aio.h>
> -/* And undo the hack.  */
> -#undef aio_cancel64
> -#endif
> -
> -#include <assert.h>
> -#include <errno.h>
> -#include <fcntl.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_cancel (int fildes, struct aiocb *aiocbp)
> -{
> -  struct requestlist *req = NULL;
> -  int result = AIO_ALLDONE;
> -
> -  /* If fildes is invalid, error. */
> -  if (fcntl (fildes, F_GETFL) < 0)
> -    {
> -      __set_errno (EBADF);
> -      return -1;
> -    }
> -
> -  /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  /* We are asked to cancel a specific AIO request.  */
> -  if (aiocbp != NULL)
> -    {
> -      /* If the AIO request is not for this descriptor it has no value
> -	 to look for the request block.  */
> -      if (aiocbp->aio_fildes != fildes)
> -	{
> -	  pthread_mutex_unlock (&__aio_requests_mutex);
> -	  __set_errno (EINVAL);
> -	  return -1;
> -	}
> -      else if (aiocbp->__error_code == EINPROGRESS)
> -	{
> -	  struct requestlist *last = NULL;
> -
> -	  req = __aio_find_req_fd (fildes);
> -
> -	  if (req == NULL)
> -	    {
> -	    not_found:
> -	      pthread_mutex_unlock (&__aio_requests_mutex);
> -	      __set_errno (EINVAL);
> -	      return -1;
> -	    }
> -
> -	  while (req->aiocbp != (aiocb_union *) aiocbp)
> -	    {
> -	      last = req;
> -	      req = req->next_prio;
> -	      if (req == NULL)
> -		goto not_found;
> -	    }
> -
> -	  /* Don't remove the entry if a thread is already working on it.  */
> -	  if (req->running == allocated)
> -	    {
> -	      result = AIO_NOTCANCELED;
> -	      req = NULL;
> -	    }
> -	  else
> -	    {
> -	      /* We can remove the entry.  */
> -	      __aio_remove_request (last, req, 0);
> -
> -	      result = AIO_CANCELED;
> -
> -	      req->next_prio = NULL;
> -	    }
> -	}
> -    }
> -  else
> -    {
> -      /* Find the beginning of the list of all requests for this
> -	 desriptor.  */
> -      req = __aio_find_req_fd (fildes);
> -
> -      /* If any request is worked on by a thread it must be the first.
> -	 So either we can delete all requests or all but the first.  */
> -      if (req != NULL)
> -	{
> -	  if (req->running == allocated)
> -	    {
> -	      struct requestlist *old = req;
> -	      req = req->next_prio;
> -	      old->next_prio = NULL;
> -
> -	      result = AIO_NOTCANCELED;
> -
> -	      if (req != NULL)
> -		__aio_remove_request (old, req, 1);
> -	    }
> -	  else
> -	    {
> -	      result = AIO_CANCELED;
> -
> -	      /* We can remove the entry.  */
> -	      __aio_remove_request (NULL, req, 1);
> -	    }
> -	}
> -    }
> -
> -  /* Mark requests as canceled and send signal.  */
> -  while (req != NULL)
> -    {
> -      struct requestlist *old = req;
> -      assert (req->running == yes || req->running == queued);
> -      req->aiocbp->aiocb.__error_code = ECANCELED;
> -      req->aiocbp->aiocb.__return_value = -1;
> -      __aio_notify (req);
> -      req = req->next_prio;
> -      __aio_free_request (old);
> -    }
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -  return result;
> -}
> -
> -#ifndef aio_cancel
> -weak_alias (aio_cancel, aio_cancel64)
> -#endif

Ok.

> diff --git a/sysdeps/pthread/aio_error.c b/sysdeps/pthread/aio_error.c
> deleted file mode 100644
> index ed664ae0ef..0000000000
> --- a/sysdeps/pthread/aio_error.c
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -/* Return error status of asynchronous I/O request.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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/>.  */
> -
> -
> -/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> -   implementation of aio_error and aio_error64 are identical and so
> -   we want to avoid code duplication by using aliases.  But gcc sees
> -   the different parameter lists and prints a warning.  We define here
> -   a function so that aio_error64 has no prototype.  */
> -#define aio_error64 XXX
> -#include <aio.h>
> -/* And undo the hack.  */
> -#undef aio_error64
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_error (const struct aiocb *aiocbp)
> -{
> -  int ret;
> -
> -  /* Acquire the mutex to make sure all operations for this request are
> -     complete.  */
> -  pthread_mutex_lock(&__aio_requests_mutex);
> -  ret = aiocbp->__error_code;
> -  pthread_mutex_unlock(&__aio_requests_mutex);
> -
> -  return ret;
> -}
> -
> -weak_alias (aio_error, aio_error64)

Ok.

> diff --git a/sysdeps/pthread/aio_fsync.c b/sysdeps/pthread/aio_fsync.c
> deleted file mode 100644
> index 5a52e2fec0..0000000000
> --- a/sysdeps/pthread/aio_fsync.c
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -/* Synchronize I/O in given file descriptor.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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/>.  */
> -
> -
> -/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> -   implementation of aio_fsync and aio_fsync64 are identical and so
> -   we want to avoid code duplication by using aliases.  But gcc sees
> -   the different parameter lists and prints a warning.  We define here
> -   a function so that aio_fsync64 has no prototype.  */
> -#define aio_fsync64 XXX
> -#include <aio.h>
> -/* And undo the hack.  */
> -#undef aio_fsync64
> -#include <errno.h>
> -#include <fcntl.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_fsync (int op, struct aiocb *aiocbp)
> -{
> -  if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  /* Verify that this is an open file descriptor.  */
> -  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
> -    {
> -      __set_errno (EBADF);
> -      return -1;
> -    }
> -
> -  return (__aio_enqueue_request ((aiocb_union *) aiocbp,
> -				 op == O_SYNC ? LIO_SYNC : LIO_DSYNC) == NULL
> -	  ? -1 : 0);
> -}
> -
> -weak_alias (aio_fsync, aio_fsync64)

Ok.

> diff --git a/sysdeps/pthread/aio_misc.c b/sysdeps/pthread/aio_misc.c
> deleted file mode 100644
> index b95f07d9d3..0000000000
> --- a/sysdeps/pthread/aio_misc.c
> +++ /dev/null
> @@ -1,721 +0,0 @@
> -/* Handle general operations.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <limits.h>
> -#include <pthread.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -#include <sys/param.h>
> -#include <sys/stat.h>
> -#include <sys/time.h>
> -#include <aio_misc.h>
> -
> -#ifndef aio_create_helper_thread
> -# define aio_create_helper_thread __aio_create_helper_thread
> -
> -extern inline int
> -__aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
> -{
> -  pthread_attr_t attr;
> -
> -  /* Make sure the thread is created detached.  */
> -  pthread_attr_init (&attr);
> -  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> -
> -  int ret = pthread_create (threadp, &attr, tf, arg);
> -
> -  (void) pthread_attr_destroy (&attr);
> -  return ret;
> -}
> -#endif
> -
> -static void add_request_to_runlist (struct requestlist *newrequest);
> -
> -/* Pool of request list entries.  */
> -static struct requestlist **pool;
> -
> -/* Number of total and allocated pool entries.  */
> -static size_t pool_max_size;
> -static size_t pool_size;
> -
> -/* We implement a two dimensional array but allocate each row separately.
> -   The macro below determines how many entries should be used per row.
> -   It should better be a power of two.  */
> -#define ENTRIES_PER_ROW	32
> -
> -/* How many rows we allocate at once.  */
> -#define ROWS_STEP	8
> -
> -/* List of available entries.  */
> -static struct requestlist *freelist;
> -
> -/* List of request waiting to be processed.  */
> -static struct requestlist *runlist;
> -
> -/* Structure list of all currently processed requests.  */
> -static struct requestlist *requests;
> -
> -/* Number of threads currently running.  */
> -static int nthreads;
> -
> -/* Number of threads waiting for work to arrive. */
> -static int idle_thread_count;
> -
> -
> -/* These are the values used to optimize the use of AIO.  The user can
> -   overwrite them by using the `aio_init' function.  */
> -static struct aioinit optim =
> -{
> -  20,	/* int aio_threads;	Maximal number of threads.  */
> -  64,	/* int aio_num;		Number of expected simultaneous requests. */
> -  0,
> -  0,
> -  0,
> -  0,
> -  1,
> -  0
> -};
> -
> -
> -/* Since the list is global we need a mutex protecting it.  */
> -pthread_mutex_t __aio_requests_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
> -
> -/* When you add a request to the list and there are idle threads present,
> -   you signal this condition variable. When a thread finishes work, it waits
> -   on this condition variable for a time before it actually exits. */
> -pthread_cond_t __aio_new_request_notification = PTHREAD_COND_INITIALIZER;
> -
> -
> -/* Functions to handle request list pool.  */
> -static struct requestlist *
> -get_elem (void)
> -{
> -  struct requestlist *result;
> -
> -  if (freelist == NULL)
> -    {
> -      struct requestlist *new_row;
> -      int cnt;
> -
> -      assert (sizeof (struct aiocb) == sizeof (struct aiocb64));
> -
> -      if (pool_size + 1 >= pool_max_size)
> -	{
> -	  size_t new_max_size = pool_max_size + ROWS_STEP;
> -	  struct requestlist **new_tab;
> -
> -	  new_tab = (struct requestlist **)
> -	    realloc (pool, new_max_size * sizeof (struct requestlist *));
> -
> -	  if (new_tab == NULL)
> -	    return NULL;
> -
> -	  pool_max_size = new_max_size;
> -	  pool = new_tab;
> -	}
> -
> -      /* Allocate the new row.  */
> -      cnt = pool_size == 0 ? optim.aio_num : ENTRIES_PER_ROW;
> -      new_row = (struct requestlist *) calloc (cnt,
> -					       sizeof (struct requestlist));
> -      if (new_row == NULL)
> -	return NULL;
> -
> -      pool[pool_size++] = new_row;
> -
> -      /* Put all the new entries in the freelist.  */
> -      do
> -	{
> -	  new_row->next_prio = freelist;
> -	  freelist = new_row++;
> -	}
> -      while (--cnt > 0);
> -    }
> -
> -  result = freelist;
> -  freelist = freelist->next_prio;
> -
> -  return result;
> -}
> -
> -
> -void
> -__aio_free_request (struct requestlist *elem)
> -{
> -  elem->running = no;
> -  elem->next_prio = freelist;
> -  freelist = elem;
> -}
> -
> -
> -struct requestlist *
> -__aio_find_req (aiocb_union *elem)
> -{
> -  struct requestlist *runp = requests;
> -  int fildes = elem->aiocb.aio_fildes;
> -
> -  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
> -    runp = runp->next_fd;
> -
> -  if (runp != NULL)
> -    {
> -      if (runp->aiocbp->aiocb.aio_fildes != fildes)
> -	runp = NULL;
> -      else
> -	while (runp != NULL && runp->aiocbp != elem)
> -	  runp = runp->next_prio;
> -    }
> -
> -  return runp;
> -}
> -
> -
> -struct requestlist *
> -__aio_find_req_fd (int fildes)
> -{
> -  struct requestlist *runp = requests;
> -
> -  while (runp != NULL && runp->aiocbp->aiocb.aio_fildes < fildes)
> -    runp = runp->next_fd;
> -
> -  return (runp != NULL && runp->aiocbp->aiocb.aio_fildes == fildes
> -	  ? runp : NULL);
> -}
> -
> -
> -void
> -__aio_remove_request (struct requestlist *last, struct requestlist *req,
> -		      int all)
> -{
> -  assert (req->running == yes || req->running == queued
> -	  || req->running == done);
> -
> -  if (last != NULL)
> -    last->next_prio = all ? NULL : req->next_prio;
> -  else
> -    {
> -      if (all || req->next_prio == NULL)
> -	{
> -	  if (req->last_fd != NULL)
> -	    req->last_fd->next_fd = req->next_fd;
> -	  else
> -	    requests = req->next_fd;
> -	  if (req->next_fd != NULL)
> -	    req->next_fd->last_fd = req->last_fd;
> -	}
> -      else
> -	{
> -	  if (req->last_fd != NULL)
> -	    req->last_fd->next_fd = req->next_prio;
> -	  else
> -	    requests = req->next_prio;
> -
> -	  if (req->next_fd != NULL)
> -	    req->next_fd->last_fd = req->next_prio;
> -
> -	  req->next_prio->last_fd = req->last_fd;
> -	  req->next_prio->next_fd = req->next_fd;
> -
> -	  /* Mark this entry as runnable.  */
> -	  req->next_prio->running = yes;
> -	}
> -
> -      if (req->running == yes)
> -	{
> -	  struct requestlist *runp = runlist;
> -
> -	  last = NULL;
> -	  while (runp != NULL)
> -	    {
> -	      if (runp == req)
> -		{
> -		  if (last == NULL)
> -		    runlist = runp->next_run;
> -		  else
> -		    last->next_run = runp->next_run;
> -		  break;
> -		}
> -	      last = runp;
> -	      runp = runp->next_run;
> -	    }
> -	}
> -    }
> -}
> -
> -
> -/* The thread handler.  */
> -static void *handle_fildes_io (void *arg);
> -
> -
> -/* User optimization.  */
> -void
> -__aio_init (const struct aioinit *init)
> -{
> -  /* Get the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  /* Only allow writing new values if the table is not yet allocated.  */
> -  if (pool == NULL)
> -    {
> -      optim.aio_threads = init->aio_threads < 1 ? 1 : init->aio_threads;
> -      assert (powerof2 (ENTRIES_PER_ROW));
> -      optim.aio_num = (init->aio_num < ENTRIES_PER_ROW
> -		       ? ENTRIES_PER_ROW
> -		       : init->aio_num & ~(ENTRIES_PER_ROW - 1));
> -    }
> -
> -  if (init->aio_idle_time != 0)
> -    optim.aio_idle_time = init->aio_idle_time;
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -}
> -weak_alias (__aio_init, aio_init)
> -
> -
> -/* The main function of the async I/O handling.  It enqueues requests
> -   and if necessary starts and handles threads.  */
> -struct requestlist *
> -__aio_enqueue_request (aiocb_union *aiocbp, int operation)
> -{
> -  int result = 0;
> -  int policy, prio;
> -  struct sched_param param;
> -  struct requestlist *last, *runp, *newp;
> -  int running = no;
> -
> -  if (operation == LIO_SYNC || operation == LIO_DSYNC)
> -    aiocbp->aiocb.aio_reqprio = 0;
> -  else if (aiocbp->aiocb.aio_reqprio < 0
> -#ifdef AIO_PRIO_DELTA_MAX
> -	   || aiocbp->aiocb.aio_reqprio > AIO_PRIO_DELTA_MAX
> -#endif
> -	   )
> -    {
> -      /* Invalid priority value.  */
> -      __set_errno (EINVAL);
> -      aiocbp->aiocb.__error_code = EINVAL;
> -      aiocbp->aiocb.__return_value = -1;
> -      return NULL;
> -    }
> -
> -  /* Compute priority for this request.  */
> -  pthread_getschedparam (pthread_self (), &policy, &param);
> -  prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
> -
> -  /* Get the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  last = NULL;
> -  runp = requests;
> -  /* First look whether the current file descriptor is currently
> -     worked with.  */
> -  while (runp != NULL
> -	 && runp->aiocbp->aiocb.aio_fildes < aiocbp->aiocb.aio_fildes)
> -    {
> -      last = runp;
> -      runp = runp->next_fd;
> -    }
> -
> -  /* Get a new element for the waiting list.  */
> -  newp = get_elem ();
> -  if (newp == NULL)
> -    {
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> -      __set_errno (EAGAIN);
> -      return NULL;
> -    }
> -  newp->aiocbp = aiocbp;
> -  newp->waiting = NULL;
> -
> -  aiocbp->aiocb.__abs_prio = prio;
> -  aiocbp->aiocb.__policy = policy;
> -  aiocbp->aiocb.aio_lio_opcode = operation;
> -  aiocbp->aiocb.__error_code = EINPROGRESS;
> -  aiocbp->aiocb.__return_value = 0;
> -
> -  if (runp != NULL
> -      && runp->aiocbp->aiocb.aio_fildes == aiocbp->aiocb.aio_fildes)
> -    {
> -      /* The current file descriptor is worked on.  It makes no sense
> -	 to start another thread since this new thread would fight
> -	 with the running thread for the resources.  But we also cannot
> -	 say that the thread processing this desriptor shall immediately
> -	 after finishing the current job process this request if there
> -	 are other threads in the running queue which have a higher
> -	 priority.  */
> -
> -      /* Simply enqueue it after the running one according to the
> -	 priority.  */
> -      last = NULL;
> -      while (runp->next_prio != NULL
> -	     && runp->next_prio->aiocbp->aiocb.__abs_prio >= prio)
> -	{
> -	  last = runp;
> -	  runp = runp->next_prio;
> -	}
> -
> -      newp->next_prio = runp->next_prio;
> -      runp->next_prio = newp;
> -
> -      running = queued;
> -    }
> -  else
> -    {
> -      running = yes;
> -      /* Enqueue this request for a new descriptor.  */
> -      if (last == NULL)
> -	{
> -	  newp->last_fd = NULL;
> -	  newp->next_fd = requests;
> -	  if (requests != NULL)
> -	    requests->last_fd = newp;
> -	  requests = newp;
> -	}
> -      else
> -	{
> -	  newp->next_fd = last->next_fd;
> -	  newp->last_fd = last;
> -	  last->next_fd = newp;
> -	  if (newp->next_fd != NULL)
> -	    newp->next_fd->last_fd = newp;
> -	}
> -
> -      newp->next_prio = NULL;
> -      last = NULL;
> -    }
> -
> -  if (running == yes)
> -    {
> -      /* We try to create a new thread for this file descriptor.  The
> -	 function which gets called will handle all available requests
> -	 for this descriptor and when all are processed it will
> -	 terminate.
> -
> -	 If no new thread can be created or if the specified limit of
> -	 threads for AIO is reached we queue the request.  */
> -
> -      /* See if we need to and are able to create a thread.  */
> -      if (nthreads < optim.aio_threads && idle_thread_count == 0)
> -	{
> -	  pthread_t thid;
> -
> -	  running = newp->running = allocated;
> -
> -	  /* Now try to start a thread.  */
> -	  result = aio_create_helper_thread (&thid, handle_fildes_io, newp);
> -	  if (result == 0)
> -	    /* We managed to enqueue the request.  All errors which can
> -	       happen now can be recognized by calls to `aio_return' and
> -	       `aio_error'.  */
> -	    ++nthreads;
> -	  else
> -	    {
> -	      /* Reset the running flag.  The new request is not running.  */
> -	      running = newp->running = yes;
> -
> -	      if (nthreads == 0)
> -		{
> -		  /* We cannot create a thread in the moment and there is
> -		     also no thread running.  This is a problem.  `errno' is
> -		     set to EAGAIN if this is only a temporary problem.  */
> -		  __aio_remove_request (last, newp, 0);
> -		}
> -	      else
> -		result = 0;
> -	    }
> -	}
> -    }
> -
> -  /* Enqueue the request in the run queue if it is not yet running.  */
> -  if (running == yes && result == 0)
> -    {
> -      add_request_to_runlist (newp);
> -
> -      /* If there is a thread waiting for work, then let it know that we
> -	 have just given it something to do. */
> -      if (idle_thread_count > 0)
> -	pthread_cond_signal (&__aio_new_request_notification);
> -    }
> -
> -  if (result == 0)
> -    newp->running = running;
> -  else
> -    {
> -      /* Something went wrong.  */
> -      __aio_free_request (newp);
> -      aiocbp->aiocb.__error_code = result;
> -      __set_errno (result);
> -      newp = NULL;
> -    }
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -  return newp;
> -}
> -
> -
> -static void *
> -handle_fildes_io (void *arg)
> -{
> -  pthread_t self = pthread_self ();
> -  struct sched_param param;
> -  struct requestlist *runp = (struct requestlist *) arg;
> -  aiocb_union *aiocbp;
> -  int policy;
> -  int fildes;
> -
> -  pthread_getschedparam (self, &policy, &param);
> -
> -  do
> -    {
> -      /* If runp is NULL, then we were created to service the work queue
> -	 in general, not to handle any particular request. In that case we
> -	 skip the "do work" stuff on the first pass, and go directly to the
> -	 "get work off the work queue" part of this loop, which is near the
> -	 end. */
> -      if (runp == NULL)
> -	pthread_mutex_lock (&__aio_requests_mutex);
> -      else
> -	{
> -	  /* Hopefully this request is marked as running.  */
> -	  assert (runp->running == allocated);
> -
> -	  /* Update our variables.  */
> -	  aiocbp = runp->aiocbp;
> -	  fildes = aiocbp->aiocb.aio_fildes;
> -
> -	  /* Change the priority to the requested value (if necessary).  */
> -	  if (aiocbp->aiocb.__abs_prio != param.sched_priority
> -	      || aiocbp->aiocb.__policy != policy)
> -	    {
> -	      param.sched_priority = aiocbp->aiocb.__abs_prio;
> -	      policy = aiocbp->aiocb.__policy;
> -	      pthread_setschedparam (self, policy, &param);
> -	    }
> -
> -	  /* Process request pointed to by RUNP.  We must not be disturbed
> -	     by signals.  */
> -	  if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_READ)
> -	    {
> -	      if (sizeof (off_t) != sizeof (off64_t)
> -		  && aiocbp->aiocb.aio_lio_opcode & 128)
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__pread64 (fildes, (void *)
> -						 aiocbp->aiocb64.aio_buf,
> -						 aiocbp->aiocb64.aio_nbytes,
> -						 aiocbp->aiocb64.aio_offset));
> -	      else
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
> -						    (void *)
> -						    aiocbp->aiocb.aio_buf,
> -						    aiocbp->aiocb.aio_nbytes,
> -						    aiocbp->aiocb.aio_offset));
> -
> -	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
> -		/* The Linux kernel is different from others.  It returns
> -		   ESPIPE if using pread on a socket.  Other platforms
> -		   simply ignore the offset parameter and behave like
> -		   read.  */
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (read (fildes,
> -					    (void *) aiocbp->aiocb64.aio_buf,
> -					    aiocbp->aiocb64.aio_nbytes));
> -	    }
> -	  else if ((aiocbp->aiocb.aio_lio_opcode & 127) == LIO_WRITE)
> -	    {
> -	      if (sizeof (off_t) != sizeof (off64_t)
> -		  && aiocbp->aiocb.aio_lio_opcode & 128)
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__pwrite64 (fildes, (const void *)
> -						  aiocbp->aiocb64.aio_buf,
> -						  aiocbp->aiocb64.aio_nbytes,
> -						  aiocbp->aiocb64.aio_offset));
> -	      else
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
> -					      aiocbp->aiocb.aio_buf,
> -					      aiocbp->aiocb.aio_nbytes,
> -					      aiocbp->aiocb.aio_offset));
> -
> -	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
> -		/* The Linux kernel is different from others.  It returns
> -		   ESPIPE if using pwrite on a socket.  Other platforms
> -		   simply ignore the offset parameter and behave like
> -		   write.  */
> -		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (write (fildes,
> -					     (void *) aiocbp->aiocb64.aio_buf,
> -					     aiocbp->aiocb64.aio_nbytes));
> -	    }
> -	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_DSYNC)
> -	    aiocbp->aiocb.__return_value =
> -	      TEMP_FAILURE_RETRY (fdatasync (fildes));
> -	  else if (aiocbp->aiocb.aio_lio_opcode == LIO_SYNC)
> -	    aiocbp->aiocb.__return_value =
> -	      TEMP_FAILURE_RETRY (fsync (fildes));
> -	  else
> -	    {
> -	      /* This is an invalid opcode.  */
> -	      aiocbp->aiocb.__return_value = -1;
> -	      __set_errno (EINVAL);
> -	    }
> -
> -	  /* Get the mutex.  */
> -	  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -	  if (aiocbp->aiocb.__return_value == -1)
> -	    aiocbp->aiocb.__error_code = errno;
> -	  else
> -	    aiocbp->aiocb.__error_code = 0;
> -
> -	  /* Send the signal to notify about finished processing of the
> -	     request.  */
> -	  __aio_notify (runp);
> -
> -	  /* For debugging purposes we reset the running flag of the
> -	     finished request.  */
> -	  assert (runp->running == allocated);
> -	  runp->running = done;
> -
> -	  /* Now dequeue the current request.  */
> -	  __aio_remove_request (NULL, runp, 0);
> -	  if (runp->next_prio != NULL)
> -	    add_request_to_runlist (runp->next_prio);
> -
> -	  /* Free the old element.  */
> -	  __aio_free_request (runp);
> -	}
> -
> -      runp = runlist;
> -
> -      /* If the runlist is empty, then we sleep for a while, waiting for
> -	 something to arrive in it. */
> -      if (runp == NULL && optim.aio_idle_time >= 0)
> -	{
> -	  struct timespec now;
> -	  struct timespec wakeup_time;
> -
> -	  ++idle_thread_count;
> -	  __clock_gettime (CLOCK_REALTIME, &now);
> -	  wakeup_time.tv_sec = now.tv_sec + optim.aio_idle_time;
> -	  wakeup_time.tv_nsec = now.tv_nsec;
> -	  if (wakeup_time.tv_nsec >= 1000000000)
> -	    {
> -	      wakeup_time.tv_nsec -= 1000000000;
> -	      ++wakeup_time.tv_sec;
> -	    }
> -	  pthread_cond_timedwait (&__aio_new_request_notification,
> -				  &__aio_requests_mutex,
> -				  &wakeup_time);
> -	  --idle_thread_count;
> -	  runp = runlist;
> -	}
> -
> -      if (runp == NULL)
> -	--nthreads;
> -      else
> -	{
> -	  assert (runp->running == yes);
> -	  runp->running = allocated;
> -	  runlist = runp->next_run;
> -
> -	  /* If we have a request to process, and there's still another in
> -	     the run list, then we need to either wake up or create a new
> -	     thread to service the request that is still in the run list. */
> -	  if (runlist != NULL)
> -	    {
> -	      /* There are at least two items in the work queue to work on.
> -		 If there are other idle threads, then we should wake them
> -		 up for these other work elements; otherwise, we should try
> -		 to create a new thread. */
> -	      if (idle_thread_count > 0)
> -		pthread_cond_signal (&__aio_new_request_notification);
> -	      else if (nthreads < optim.aio_threads)
> -		{
> -		  pthread_t thid;
> -		  pthread_attr_t attr;
> -
> -		  /* Make sure the thread is created detached.  */
> -		  pthread_attr_init (&attr);
> -		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> -
> -		  /* Now try to start a thread. If we fail, no big deal,
> -		     because we know that there is at least one thread (us)
> -		     that is working on AIO operations. */
> -		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
> -		      == 0)
> -		    ++nthreads;
> -		}
> -	    }
> -	}
> -
> -      /* Release the mutex.  */
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> -    }
> -  while (runp != NULL);
> -
> -  return NULL;
> -}
> -
> -
> -/* Free allocated resources.  */
> -libc_freeres_fn (free_res)
> -{
> -  size_t row;
> -
> -  for (row = 0; row < pool_max_size; ++row)
> -    free (pool[row]);
> -
> -  free (pool);
> -}
> -
> -
> -/* Add newrequest to the runlist. The __abs_prio flag of newrequest must
> -   be correctly set to do this. Also, you had better set newrequest's
> -   "running" flag to "yes" before you release your lock or you'll throw an
> -   assertion. */
> -static void
> -add_request_to_runlist (struct requestlist *newrequest)
> -{
> -  int prio = newrequest->aiocbp->aiocb.__abs_prio;
> -  struct requestlist *runp;
> -
> -  if (runlist == NULL || runlist->aiocbp->aiocb.__abs_prio < prio)
> -    {
> -      newrequest->next_run = runlist;
> -      runlist = newrequest;
> -    }
> -  else
> -    {
> -      runp = runlist;
> -
> -      while (runp->next_run != NULL
> -	     && runp->next_run->aiocbp->aiocb.__abs_prio >= prio)
> -	runp = runp->next_run;
> -
> -      newrequest->next_run = runp->next_run;
> -      runp->next_run = newrequest;
> -    }
> -}
> diff --git a/sysdeps/pthread/aio_misc.h b/sysdeps/pthread/aio_misc.h
> deleted file mode 100644
> index e23524cffe..0000000000
> --- a/sysdeps/pthread/aio_misc.h
> +++ /dev/null
> @@ -1,122 +0,0 @@
> -/* Copyright (C) 1997-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/>.  */
> -
> -#ifndef _AIO_MISC_H
> -#define _AIO_MISC_H	1
> -
> -#include <aio.h>
> -#include <pthread.h>
> -
> -
> -/* Extend the operation enum.  */
> -enum
> -{
> -  LIO_DSYNC = LIO_NOP + 1,
> -  LIO_SYNC,
> -  LIO_READ64 = LIO_READ | 128,
> -  LIO_WRITE64 = LIO_WRITE | 128
> -};
> -
> -
> -/* Union of the two request types.  */
> -typedef union
> -  {
> -    struct aiocb aiocb;
> -    struct aiocb64 aiocb64;
> -  } aiocb_union;
> -
> -
> -/* Used to synchronize.  */
> -struct waitlist
> -  {
> -    struct waitlist *next;
> -
> -    /* The next two fields is used in synchronous `lio_listio' operations.  */
> -#ifndef DONT_NEED_AIO_MISC_COND
> -    pthread_cond_t *cond;
> -#endif
> -    int *result;
> -
> -    volatile unsigned int *counterp;
> -    /* The next field is used in asynchronous `lio_listio' operations.  */
> -    struct sigevent *sigevp;
> -  };
> -
> -
> -/* Status of a request.  */
> -enum
> -{
> -  no,
> -  queued,
> -  yes,
> -  allocated,
> -  done
> -};
> -
> -
> -/* Used to queue requests..  */
> -struct requestlist
> -  {
> -    int running;
> -
> -    struct requestlist *last_fd;
> -    struct requestlist *next_fd;
> -    struct requestlist *next_prio;
> -    struct requestlist *next_run;
> -
> -    /* Pointer to the actual data.  */
> -    aiocb_union *aiocbp;
> -
> -    /* List of waiting processes.  */
> -    struct waitlist *waiting;
> -  };
> -
> -
> -/* Lock for global I/O list of requests.  */
> -extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
> -
> -
> -/* Enqueue request.  */
> -extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
> -						  int operation)
> -  attribute_hidden;
> -
> -/* Find request entry for given AIO control block.  */
> -extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
> -
> -/* Find request entry for given file descriptor.  */
> -extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
> -
> -/* Remove request from the list.  */
> -extern void __aio_remove_request (struct requestlist *last,
> -				  struct requestlist *req, int all)
> -     attribute_hidden;
> -
> -/* Release the entry for the request.  */
> -extern void __aio_free_request (struct requestlist *req) attribute_hidden;
> -
> -/* Notify initiator of request and tell this everybody listening.  */
> -extern void __aio_notify (struct requestlist *req) attribute_hidden;
> -
> -/* Notify initiator of request.  */
> -extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
> -
> -/* Send the signal.  */
> -extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
> -     attribute_hidden;
> -
> -#endif /* aio_misc.h */
> diff --git a/sysdeps/pthread/aio_notify.c b/sysdeps/pthread/aio_notify.c
> deleted file mode 100644
> index a8d61503d8..0000000000
> --- a/sysdeps/pthread/aio_notify.c
> +++ /dev/null
> @@ -1,157 +0,0 @@
> -/* Notify initiator of AIO request.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <errno.h>
> -#include <pthread.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -#include <aio_misc.h>
> -#include <signal.h>
> -
> -#ifndef aio_start_notify_thread
> -# define aio_start_notify_thread() do { } while (0)
> -#endif
> -
> -struct notify_func
> -  {
> -    void (*func) (sigval_t);
> -    sigval_t value;
> -  };
> -
> -static void *
> -notify_func_wrapper (void *arg)
> -{
> -  aio_start_notify_thread ();
> -  struct notify_func *const n = arg;
> -  void (*func) (sigval_t) = n->func;
> -  sigval_t value = n->value;
> -  free (n);
> -  (*func) (value);
> -  return NULL;
> -}
> -
> -
> -int
> -__aio_notify_only (struct sigevent *sigev)
> -{
> -  int result = 0;
> -
> -  /* Send the signal to notify about finished processing of the request.  */
> -  if (__glibc_unlikely (sigev->sigev_notify == SIGEV_THREAD))
> -    {
> -      /* We have to start a thread.  */
> -      pthread_t tid;
> -      pthread_attr_t attr, *pattr;
> -
> -      pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
> -      if (pattr == NULL)
> -	{
> -	  pthread_attr_init (&attr);
> -	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> -	  pattr = &attr;
> -	}
> -
> -      /* SIGEV may be freed as soon as we return, so we cannot let the
> -	 notification thread use that pointer.  Even though a sigval_t is
> -	 only one word and the same size as a void *, we cannot just pass
> -	 the value through pthread_create as the argument and have the new
> -	 thread run the user's function directly, because on some machines
> -	 the calling convention for a union like sigval_t is different from
> -	 that for a pointer type like void *.  */
> -      struct notify_func *nf = malloc (sizeof *nf);
> -      if (nf == NULL)
> -	result = -1;
> -      else
> -	{
> -	  nf->func = sigev->sigev_notify_function;
> -	  nf->value = sigev->sigev_value;
> -	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
> -	    {
> -	      free (nf);
> -	      result = -1;
> -	    }
> -	}
> -    }
> -  else if (sigev->sigev_notify == SIGEV_SIGNAL)
> -    {
> -      /* We have to send a signal.  */
> -#if _POSIX_REALTIME_SIGNALS > 0
> -      /* Note that the standard gives us the option of using a plain
> -	 non-queuing signal here when SA_SIGINFO is not set for the signal.  */
> -      if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
> -	  < 0)
> -	result = -1;
> -#else
> -      /* There are no queued signals on this system at all.  */
> -      result = raise (sigev->sigev_signo);
> -#endif
> -    }
> -
> -  return result;
> -}
> -
> -
> -void
> -__aio_notify (struct requestlist *req)
> -{
> -  struct waitlist *waitlist;
> -  struct aiocb *aiocbp = &req->aiocbp->aiocb;
> -
> -  if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
> -    {
> -      /* XXX What shall we do if already an error is set by
> -	 read/write/fsync?  */
> -      aiocbp->__error_code = errno;
> -      aiocbp->__return_value = -1;
> -    }
> -
> -  /* Now also notify possibly waiting threads.  */
> -  waitlist = req->waiting;
> -  while (waitlist != NULL)
> -    {
> -      struct waitlist *next = waitlist->next;
> -
> -      if (waitlist->sigevp == NULL)
> -	{
> -	  if (waitlist->result != NULL && aiocbp->__return_value == -1)
> -	    *waitlist->result = -1;
> -
> -#ifdef DONT_NEED_AIO_MISC_COND
> -	  AIO_MISC_NOTIFY (waitlist);
> -#else
> -	  /* Decrement the counter.  */
> -	  --*waitlist->counterp;
> -
> -	  pthread_cond_signal (waitlist->cond);
> -#endif
> -	}
> -      else
> -	/* This is part of an asynchronous `lio_listio' operation.  If
> -	   this request is the last one, send the signal.  */
> -	if (--*waitlist->counterp == 0)
> -	  {
> -	    __aio_notify_only (waitlist->sigevp);
> -	    /* This is tricky.  See lio_listio.c for the reason why
> -	       this works.  */
> -	    free ((void *) waitlist->counterp);
> -	  }
> -
> -      waitlist = next;
> -    }
> -}
> diff --git a/sysdeps/pthread/aio_read.c b/sysdeps/pthread/aio_read.c
> deleted file mode 100644
> index 4698e48b1c..0000000000
> --- a/sysdeps/pthread/aio_read.c
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* Asynchronous read.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_read (struct aiocb *aiocbp)
> -{
> -  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
> -	  ? -1 : 0);
> -}
> diff --git a/sysdeps/pthread/aio_read64.c b/sysdeps/pthread/aio_read64.c
> deleted file mode 100644
> index 26b9b0b380..0000000000
> --- a/sysdeps/pthread/aio_read64.c
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* Asynchronous read, 64bit offset version.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_read64 (struct aiocb64 *aiocbp)
> -{
> -  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
> -	  ? -1 : 0);
> -}
> diff --git a/sysdeps/pthread/aio_suspend.c b/sysdeps/pthread/aio_suspend.c
> deleted file mode 100644
> index 6fd5b1bee2..0000000000
> --- a/sysdeps/pthread/aio_suspend.c
> +++ /dev/null
> @@ -1,263 +0,0 @@
> -/* Suspend until termination of a requests.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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/>.  */
> -
> -
> -/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> -   implementations of aio_suspend and aio_suspend64 are identical and so
> -   we want to avoid code duplication by using aliases.  But gcc sees
> -   the different parameter lists and prints a warning.  We define here
> -   a function so that aio_suspend64 has no prototype.  */
> -#define aio_suspend64 XXX
> -#include <aio.h>
> -/* And undo the hack.  */
> -#undef aio_suspend64
> -
> -#include <assert.h>
> -#include <errno.h>
> -#include <stdbool.h>
> -#include <stdlib.h>
> -#include <sys/time.h>
> -
> -#include <libc-lock.h>
> -#include <aio_misc.h>
> -
> -
> -struct clparam
> -{
> -  const struct aiocb *const *list;
> -  struct waitlist *waitlist;
> -  struct requestlist **requestlist;
> -#ifndef DONT_NEED_AIO_MISC_COND
> -  pthread_cond_t *cond;
> -#endif
> -  int nent;
> -};
> -
> -
> -static void
> -cleanup (void *arg)
> -{
> -#ifdef DONT_NEED_AIO_MISC_COND
> -  /* Acquire the mutex.  If pthread_cond_*wait is used this would
> -     happen implicitly.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -#endif
> -
> -  const struct clparam *param = (const struct clparam *) arg;
> -
> -  /* Now remove the entry in the waiting list for all requests
> -     which didn't terminate.  */
> -  int cnt = param->nent;
> -  while (cnt-- > 0)
> -    if (param->list[cnt] != NULL
> -	&& param->list[cnt]->__error_code == EINPROGRESS)
> -      {
> -	struct waitlist **listp;
> -
> -	assert (param->requestlist[cnt] != NULL);
> -
> -	/* There is the chance that we cannot find our entry anymore. This
> -	   could happen if the request terminated and restarted again.  */
> -	listp = &param->requestlist[cnt]->waiting;
> -	while (*listp != NULL && *listp != &param->waitlist[cnt])
> -	  listp = &(*listp)->next;
> -
> -	if (*listp != NULL)
> -	  *listp = (*listp)->next;
> -      }
> -
> -#ifndef DONT_NEED_AIO_MISC_COND
> -  /* Release the conditional variable.  */
> -  (void) pthread_cond_destroy (param->cond);
> -#endif
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -}
> -
> -#ifdef DONT_NEED_AIO_MISC_COND
> -static int
> -__attribute__ ((noinline))
> -do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
> -{
> -  int result = 0;
> -
> -  AIO_MISC_WAIT (result, *cntr, timeout, 1);
> -
> -  return result;
> -}
> -#endif
> -
> -int
> -__aio_suspend_time64 (const struct aiocb *const list[], int nent,
> -		      const struct __timespec64 *timeout)
> -{
> -  if (__glibc_unlikely (nent < 0))
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  struct waitlist waitlist[nent];
> -  struct requestlist *requestlist[nent];
> -#ifndef DONT_NEED_AIO_MISC_COND
> -  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> -#endif
> -  int cnt;
> -  bool any = false;
> -  int result = 0;
> -  unsigned int cntr = 1;
> -
> -  /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  /* There is not yet a finished request.  Signal the request that
> -     we are working for it.  */
> -  for (cnt = 0; cnt < nent; ++cnt)
> -    if (list[cnt] != NULL)
> -      {
> -	if (list[cnt]->__error_code == EINPROGRESS)
> -	  {
> -	    requestlist[cnt] = __aio_find_req ((aiocb_union *) list[cnt]);
> -
> -	    if (requestlist[cnt] != NULL)
> -	      {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -		waitlist[cnt].cond = &cond;
> -#endif
> -		waitlist[cnt].result = NULL;
> -		waitlist[cnt].next = requestlist[cnt]->waiting;
> -		waitlist[cnt].counterp = &cntr;
> -		waitlist[cnt].sigevp = NULL;
> -		requestlist[cnt]->waiting = &waitlist[cnt];
> -		any = true;
> -	      }
> -	    else
> -	      /* We will never suspend.  */
> -	      break;
> -	  }
> -	else
> -	  /* We will never suspend.  */
> -	  break;
> -      }
> -
> -  struct __timespec64 ts;
> -  if (timeout != NULL)
> -    {
> -      __clock_gettime64 (CLOCK_MONOTONIC, &ts);
> -      ts.tv_sec += timeout->tv_sec;
> -      ts.tv_nsec += timeout->tv_nsec;
> -      if (ts.tv_nsec >= 1000000000)
> -	{
> -	  ts.tv_nsec -= 1000000000;
> -	  ts.tv_sec++;
> -	}
> -    }
> -
> -  /* Only if none of the entries is NULL or finished to be wait.  */
> -  if (cnt == nent && any)
> -    {
> -      struct clparam clparam =
> -	{
> -	  .list = list,
> -	  .waitlist = waitlist,
> -	  .requestlist = requestlist,
> -#ifndef DONT_NEED_AIO_MISC_COND
> -	  .cond = &cond,
> -#endif
> -	  .nent = nent
> -	};
> -
> -      pthread_cleanup_push (cleanup, &clparam);
> -
> -#ifdef DONT_NEED_AIO_MISC_COND
> -      result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
> -#else
> -      struct timespec ts32 = valid_timespec64_to_timespec (ts);
> -      result = pthread_cond_timedwait (&cond, &__aio_requests_mutex,
> -				       timeout == NULL ? NULL : &ts32);
> -#endif
> -
> -      pthread_cleanup_pop (0);
> -    }
> -
> -  /* Now remove the entry in the waiting list for all requests
> -     which didn't terminate.  */
> -  while (cnt-- > 0)
> -    if (list[cnt] != NULL && list[cnt]->__error_code == EINPROGRESS)
> -      {
> -	struct waitlist **listp;
> -
> -	assert (requestlist[cnt] != NULL);
> -
> -	/* There is the chance that we cannot find our entry anymore. This
> -	   could happen if the request terminated and restarted again.  */
> -	listp = &requestlist[cnt]->waiting;
> -	while (*listp != NULL && *listp != &waitlist[cnt])
> -	  listp = &(*listp)->next;
> -
> -	if (*listp != NULL)
> -	  *listp = (*listp)->next;
> -      }
> -
> -#ifndef DONT_NEED_AIO_MISC_COND
> -  /* Release the conditional variable.  */
> -  if (__glibc_unlikely (pthread_cond_destroy (&cond) != 0))
> -    /* This must never happen.  */
> -    abort ();
> -#endif
> -
> -  if (result != 0)
> -    {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -      /* An error occurred.  Possibly it's ETIMEDOUT.  We have to translate
> -	 the timeout error report of `pthread_cond_timedwait' to the
> -	 form expected from `aio_suspend'.  */
> -      if (result == ETIMEDOUT)
> -	__set_errno (EAGAIN);
> -      else
> -#endif
> -	__set_errno (result);
> -
> -      result = -1;
> -    }
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -  return result;
> -}
> -
> -#if __TIMESIZE != 64
> -librt_hidden_def (__aio_suspend_time64)
> -
> -int
> -__aio_suspend (const struct aiocb *const list[], int nent,
> -               const struct timespec *timeout)
> -{
> -  struct __timespec64 ts64;
> -
> -  if (timeout != NULL)
> -    ts64 = valid_timespec_to_timespec64 (*timeout);
> -
> -  return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
> -}
> -#endif
> -weak_alias (__aio_suspend, aio_suspend)
> -weak_alias (aio_suspend, aio_suspend64)
> diff --git a/sysdeps/pthread/aio_write.c b/sysdeps/pthread/aio_write.c
> deleted file mode 100644
> index ea55f0dbbc..0000000000
> --- a/sysdeps/pthread/aio_write.c
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* Asynchronous write.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_write (struct aiocb *aiocbp)
> -{
> -  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
> -	  ? -1 : 0);
> -}
> diff --git a/sysdeps/pthread/aio_write64.c b/sysdeps/pthread/aio_write64.c
> deleted file mode 100644
> index bd6dd316be..0000000000
> --- a/sysdeps/pthread/aio_write64.c
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* Asynchronous write, 64bit offset version.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -
> -#include <aio_misc.h>
> -
> -
> -int
> -aio_write64 (struct aiocb64 *aiocbp)
> -{
> -  return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
> -	  ? -1 : 0);
> -}
> diff --git a/sysdeps/pthread/lio_listio.c b/sysdeps/pthread/lio_listio.c
> deleted file mode 100644
> index 2cab3c2254..0000000000
> --- a/sysdeps/pthread/lio_listio.c
> +++ /dev/null
> @@ -1,248 +0,0 @@
> -/* Enqueue and list of read or write requests.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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/>.  */
> -
> -#ifndef lio_listio
> -#include <aio.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -
> -#include <aio_misc.h>
> -
> -#define LIO_OPCODE_BASE 0
> -#endif
> -
> -#include <shlib-compat.h>
> -
> -
> -/* We need this special structure to handle asynchronous I/O.  */
> -struct async_waitlist
> -  {
> -    unsigned int counter;
> -    struct sigevent sigev;
> -    struct waitlist list[0];
> -  };
> -
> -
> -/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
> -   requests submitted with lio_listio finished.  The existing practice
> -   is to issue events for the individual requests as well.  This is
> -   what the new code does.  */
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> -# define LIO_MODE(mode) ((mode) & 127)
> -# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
> -#else
> -# define LIO_MODE(mode) mode
> -# define NO_INDIVIDUAL_EVENT_P(mode) 0
> -#endif
> -
> -
> -static int
> -lio_listio_internal (int mode, struct aiocb *const list[], int nent,
> -		     struct sigevent *sig)
> -{
> -  struct sigevent defsigev;
> -  struct requestlist *requests[nent];
> -  int cnt;
> -  volatile unsigned int total = 0;
> -  int result = 0;
> -
> -  if (sig == NULL)
> -    {
> -      defsigev.sigev_notify = SIGEV_NONE;
> -      sig = &defsigev;
> -    }
> -
> -  /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  /* Now we can enqueue all requests.  Since we already acquired the
> -     mutex the enqueue function need not do this.  */
> -  for (cnt = 0; cnt < nent; ++cnt)
> -    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> -      {
> -	if (NO_INDIVIDUAL_EVENT_P (mode))
> -	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
> -
> -	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
> -					       (list[cnt]->aio_lio_opcode
> -						| LIO_OPCODE_BASE));
> -
> -	if (requests[cnt] != NULL)
> -	  /* Successfully enqueued.  */
> -	  ++total;
> -	else
> -	  /* Signal that we've seen an error.  `errno' and the error code
> -	     of the aiocb will tell more.  */
> -	  result = -1;
> -      }
> -    else
> -      requests[cnt] = NULL;
> -
> -  if (total == 0)
> -    {
> -      /* We don't have anything to do except signalling if we work
> -	 asynchronously.  */
> -
> -      /* Release the mutex.  We do this before raising a signal since the
> -	 signal handler might do a `siglongjmp' and then the mutex is
> -	 locked forever.  */
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -      if (LIO_MODE (mode) == LIO_NOWAIT)
> -	__aio_notify_only (sig);
> -
> -      return result;
> -    }
> -  else if (LIO_MODE (mode) == LIO_WAIT)
> -    {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> -      int oldstate;
> -#endif
> -      struct waitlist waitlist[nent];
> -
> -      total = 0;
> -      for (cnt = 0; cnt < nent; ++cnt)
> -	{
> -	  assert (requests[cnt] == NULL || list[cnt] != NULL);
> -
> -	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> -	    {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -	      waitlist[cnt].cond = &cond;
> -#endif
> -	      waitlist[cnt].result = &result;
> -	      waitlist[cnt].next = requests[cnt]->waiting;
> -	      waitlist[cnt].counterp = &total;
> -	      waitlist[cnt].sigevp = NULL;
> -	      requests[cnt]->waiting = &waitlist[cnt];
> -	      ++total;
> -	    }
> -	}
> -
> -#ifdef DONT_NEED_AIO_MISC_COND
> -      AIO_MISC_WAIT (result, total, NULL, 0);
> -#else
> -      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
> -	 points we must be careful.  We added entries to the waiting lists
> -	 which we must remove.  So defer cancellation for now.  */
> -      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
> -
> -      while (total > 0)
> -	pthread_cond_wait (&cond, &__aio_requests_mutex);
> -
> -      /* Now it's time to restore the cancellation state.  */
> -      pthread_setcancelstate (oldstate, NULL);
> -
> -      /* Release the conditional variable.  */
> -      if (pthread_cond_destroy (&cond) != 0)
> -	/* This must never happen.  */
> -	abort ();
> -#endif
> -
> -      /* If any of the I/O requests failed, return -1 and set errno.  */
> -      if (result != 0)
> -	{
> -	  __set_errno (result == EINTR ? EINTR : EIO);
> -	  result = -1;
> -	}
> -    }
> -  else
> -    {
> -      struct async_waitlist *waitlist;
> -
> -      waitlist = (struct async_waitlist *)
> -	malloc (sizeof (struct async_waitlist)
> -		+ (nent * sizeof (struct waitlist)));
> -
> -      if (waitlist == NULL)
> -	{
> -	  __set_errno (EAGAIN);
> -	  result = -1;
> -	}
> -      else
> -	{
> -	  total = 0;
> -
> -	  for (cnt = 0; cnt < nent; ++cnt)
> -	    {
> -	      assert (requests[cnt] == NULL || list[cnt] != NULL);
> -
> -	      if (requests[cnt] != NULL
> -		  && list[cnt]->aio_lio_opcode != LIO_NOP)
> -		{
> -#ifndef DONT_NEED_AIO_MISC_COND
> -		  waitlist->list[cnt].cond = NULL;
> -#endif
> -		  waitlist->list[cnt].result = NULL;
> -		  waitlist->list[cnt].next = requests[cnt]->waiting;
> -		  waitlist->list[cnt].counterp = &waitlist->counter;
> -		  waitlist->list[cnt].sigevp = &waitlist->sigev;
> -		  requests[cnt]->waiting = &waitlist->list[cnt];
> -		  ++total;
> -		}
> -	    }
> -
> -	  waitlist->counter = total;
> -	  waitlist->sigev = *sig;
> -	}
> -    }
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -  return result;
> -}
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> -int
> -attribute_compat_text_section
> -__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
> -		 struct sigevent *sig)
> -{
> -  /* Check arguments.  */
> -  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
> -}
> -compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
> -#endif
> -
> -
> -int
> -__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
> -			  struct sigevent *sig)
> -{
> -    /* Check arguments.  */
> -  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  return lio_listio_internal (mode, list, nent, sig);
> -}
> -versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
> diff --git a/sysdeps/pthread/lio_listio64.c b/sysdeps/pthread/lio_listio64.c
> deleted file mode 100644
> index 111c883a2f..0000000000
> --- a/sysdeps/pthread/lio_listio64.c
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* Enqueue and list of read or write requests, 64bit offset version.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> -
> -   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 <aio.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -
> -#include <aio_misc.h>
> -
> -#define lio_listio lio_listio64
> -#define __lio_listio_21 __lio_listio64_21
> -#define __lio_listio_item_notify __lio_listio64_item_notify
> -#define aiocb aiocb64
> -#define LIO_OPCODE_BASE 128
> -#include <lio_listio.c>
> diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
> deleted file mode 100644
> index 2808f5b32b..0000000000
> --- a/sysdeps/pthread/timer_create.c
> +++ /dev/null
> @@ -1,166 +0,0 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
> -
> -   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 <errno.h>
> -#include <signal.h>
> -#include <pthread.h>
> -#include <time.h>
> -#include <unistd.h>
> -
> -#include "posix-timer.h"
> -
> -
> -/* Create new per-process timer using CLOCK.  */
> -int
> -timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
> -{
> -  int retval = -1;
> -  struct timer_node *newtimer = NULL;
> -  struct thread_node *thread = NULL;
> -
> -  if (0
> -#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
> -      || clock_id == CLOCK_PROCESS_CPUTIME_ID
> -#endif
> -#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
> -      || clock_id == CLOCK_THREAD_CPUTIME_ID
> -#endif
> -      )
> -    {
> -      /* We don't allow timers for CPU clocks.  At least not in the
> -	 moment.  */
> -      __set_errno (ENOTSUP);
> -      return -1;
> -    }
> -
> -  if (clock_id != CLOCK_REALTIME)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  pthread_once (&__timer_init_once_control, __timer_init_once);
> -
> -  if (__timer_init_failed)
> -    {
> -      __set_errno (ENOMEM);
> -      return -1;
> -    }
> -
> -  pthread_mutex_lock (&__timer_mutex);
> -
> -  newtimer = __timer_alloc ();
> -  if (__glibc_unlikely (newtimer == NULL))
> -    {
> -      __set_errno (EAGAIN);
> -      goto unlock_bail;
> -    }
> -
> -  if (evp != NULL)
> -    newtimer->event = *evp;
> -  else
> -    {
> -      newtimer->event.sigev_notify = SIGEV_SIGNAL;
> -      newtimer->event.sigev_signo = SIGALRM;
> -      newtimer->event.sigev_value.sival_ptr = newtimer;
> -      newtimer->event.sigev_notify_function = 0;
> -    }
> -
> -  newtimer->event.sigev_notify_attributes = &newtimer->attr;
> -  newtimer->creator_pid = getpid ();
> -
> -  switch (__builtin_expect (newtimer->event.sigev_notify, SIGEV_SIGNAL))
> -    {
> -    case SIGEV_NONE:
> -    case SIGEV_SIGNAL:
> -      /* We have a global thread for delivering timed signals.
> -	 If it is not running, try to start it up.  */
> -      thread = &__timer_signal_thread_rclk;
> -      if (! thread->exists)
> -	{
> -	  if (__builtin_expect (__timer_thread_start (thread),
> -				1) < 0)
> -	    {
> -	      __set_errno (EAGAIN);
> -	      goto unlock_bail;
> -            }
> -        }
> -      break;
> -
> -    case SIGEV_THREAD:
> -      /* Copy over thread attributes or set up default ones.  */
> -      if (evp->sigev_notify_attributes)
> -	newtimer->attr = *(pthread_attr_t *) evp->sigev_notify_attributes;
> -      else
> -	pthread_attr_init (&newtimer->attr);
> -
> -      /* Ensure thread attributes call for deatched thread.  */
> -      pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
> -
> -      /* Try to find existing thread having the right attributes.  */
> -      thread = __timer_thread_find_matching (&newtimer->attr, clock_id);
> -
> -      /* If no existing thread has these attributes, try to allocate one.  */
> -      if (thread == NULL)
> -	thread = __timer_thread_alloc (&newtimer->attr, clock_id);
> -
> -      /* Out of luck; no threads are available.  */
> -      if (__glibc_unlikely (thread == NULL))
> -	{
> -	  __set_errno (EAGAIN);
> -	  goto unlock_bail;
> -	}
> -
> -      /* If the thread is not running already, try to start it.  */
> -      if (! thread->exists
> -	  && __builtin_expect (! __timer_thread_start (thread), 0))
> -	{
> -	  __set_errno (EAGAIN);
> -	  goto unlock_bail;
> -	}
> -      break;
> -
> -    default:
> -      __set_errno (EINVAL);
> -      goto unlock_bail;
> -    }
> -
> -  newtimer->clock = clock_id;
> -  newtimer->abstime = 0;
> -  newtimer->armed = 0;
> -  newtimer->thread = thread;
> -
> -  *timerid = timer_ptr2id (newtimer);
> -  retval = 0;
> -
> -  if (__builtin_expect (retval, 0) == -1)
> -    {
> -    unlock_bail:
> -      if (thread != NULL)
> -	__timer_thread_dealloc (thread);
> -      if (newtimer != NULL)
> -	{
> -	  timer_delref (newtimer);
> -	  __timer_dealloc (newtimer);
> -	}
> -    }
> -
> -  pthread_mutex_unlock (&__timer_mutex);
> -
> -  return retval;
> -}
> diff --git a/sysdeps/pthread/timer_delete.c b/sysdeps/pthread/timer_delete.c
> deleted file mode 100644
> index c6f6d9743d..0000000000
> --- a/sysdeps/pthread/timer_delete.c
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
> -
> -   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 <assert.h>
> -#include <errno.h>
> -#include <pthread.h>
> -#include <time.h>
> -
> -#include "posix-timer.h"
> -
> -
> -/* Delete timer TIMERID.  */
> -int
> -timer_delete (timer_t timerid)
> -{
> -  struct timer_node *timer;
> -  int retval = -1;
> -
> -  pthread_mutex_lock (&__timer_mutex);
> -
> -  timer = timer_id2ptr (timerid);
> -  if (! timer_valid (timer))
> -    /* Invalid timer ID or the timer is not in use.  */
> -    __set_errno (EINVAL);
> -  else
> -    {
> -      if (timer->armed && timer->thread != NULL)
> -	{
> -	  struct thread_node *thread = timer->thread;
> -	  assert (thread != NULL);
> -
> -	  /* If thread is cancelled while waiting for handler to terminate,
> -	     the mutex is unlocked and timer_delete is aborted.  */
> -	  pthread_cleanup_push (__timer_mutex_cancel_handler, &__timer_mutex);
> -
> -	  /* If timer is currently being serviced, wait for it to finish.  */
> -	  while (thread->current_timer == timer)
> -	    pthread_cond_wait (&thread->cond, &__timer_mutex);
> -
> -	  pthread_cleanup_pop (0);
> -        }
> -
> -      /* Remove timer from whatever queue it may be on and deallocate it.  */
> -      timer->inuse = TIMER_DELETED;
> -      list_unlink_ip (&timer->links);
> -      timer_delref (timer);
> -      retval = 0;
> -    }
> -
> -  pthread_mutex_unlock (&__timer_mutex);
> -
> -  return retval;
> -}
> diff --git a/sysdeps/pthread/timer_getoverr.c b/sysdeps/pthread/timer_getoverr.c
> deleted file mode 100644
> index c1952f80c6..0000000000
> --- a/sysdeps/pthread/timer_getoverr.c
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
> -
> -   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 <errno.h>
> -#include <pthread.h>
> -#include <time.h>
> -
> -#include "posix-timer.h"
> -
> -
> -/* Get expiration overrun for timer TIMERID.  */
> -int
> -timer_getoverrun (timer_t timerid)
> -{
> -  struct timer_node *timer;
> -  int retval = -1;
> -
> -  pthread_mutex_lock (&__timer_mutex);
> -
> -  if (! timer_valid (timer = timer_id2ptr (timerid)))
> -    __set_errno (EINVAL);
> -  else
> -    retval = timer->overrun_count;
> -
> -  pthread_mutex_unlock (&__timer_mutex);
> -
> -  return retval;
> -}
> diff --git a/sysdeps/pthread/timer_gettime.c b/sysdeps/pthread/timer_gettime.c
> deleted file mode 100644
> index dd3b4a6281..0000000000
> --- a/sysdeps/pthread/timer_gettime.c
> +++ /dev/null
> @@ -1,74 +0,0 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
> -
> -   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 <errno.h>
> -#include <pthread.h>
> -#include <time.h>
> -
> -#include "posix-timer.h"
> -
> -
> -/* Get current value of timer TIMERID and store it in VLAUE.  */
> -int
> -timer_gettime (timer_t timerid, struct itimerspec *value)
> -{
> -  struct timer_node *timer;
> -  struct timespec now, expiry;
> -  int retval = -1, armed = 0, valid;
> -  clock_t clock = 0;
> -
> -  pthread_mutex_lock (&__timer_mutex);
> -
> -  timer = timer_id2ptr (timerid);
> -  valid = timer_valid (timer);
> -
> -  if (valid) {
> -    armed = timer->armed;
> -    expiry = timer->expirytime;
> -    clock = timer->clock;
> -    value->it_interval = timer->value.it_interval;
> -  }
> -
> -  pthread_mutex_unlock (&__timer_mutex);
> -
> -  if (valid)
> -    {
> -      if (armed)
> -	{
> -	  __clock_gettime (clock, &now);
> -	  if (timespec_compare (&now, &expiry) < 0)
> -	    timespec_sub (&value->it_value, &expiry, &now);
> -	  else
> -	    {
> -	      value->it_value.tv_sec = 0;
> -	      value->it_value.tv_nsec = 0;
> -	    }
> -	}
> -      else
> -	{
> -	  value->it_value.tv_sec = 0;
> -	  value->it_value.tv_nsec = 0;
> -	}
> -
> -      retval = 0;
> -    }
> -  else
> -    __set_errno (EINVAL);
> -
> -  return retval;
> -}
> diff --git a/sysdeps/pthread/timer_settime.c b/sysdeps/pthread/timer_settime.c
> deleted file mode 100644
> index c05adf166f..0000000000
> --- a/sysdeps/pthread/timer_settime.c
> +++ /dev/null
> @@ -1,131 +0,0 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -   Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
> -
> -   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 <errno.h>
> -#include <pthread.h>
> -#include <time.h>
> -
> -#include "posix-timer.h"
> -
> -
> -/* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
> -int
> -timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
> -	       struct itimerspec *ovalue)
> -{
> -  struct timer_node *timer;
> -  struct thread_node *thread = NULL;
> -  struct timespec now;
> -  int have_now = 0, need_wakeup = 0;
> -  int retval = -1;
> -
> -  timer = timer_id2ptr (timerid);
> -  if (timer == NULL)
> -    {
> -      __set_errno (EINVAL);
> -      goto bail;
> -    }
> -
> -  if (! valid_nanoseconds (value->it_interval.tv_nsec)
> -      || ! valid_nanoseconds (value->it_value.tv_nsec))
> -    {
> -      __set_errno (EINVAL);
> -      goto bail;
> -    }
> -
> -  /* Will need to know current time since this is a relative timer;
> -     might as well make the system call outside of the lock now! */
> -
> -  if ((flags & TIMER_ABSTIME) == 0)
> -    {
> -      __clock_gettime (timer->clock, &now);
> -      have_now = 1;
> -    }
> -
> -  pthread_mutex_lock (&__timer_mutex);
> -  timer_addref (timer);
> -
> -  /* One final check of timer validity; this one is possible only
> -     until we have the mutex, because it accesses the inuse flag. */
> -
> -  if (! timer_valid(timer))
> -    {
> -      __set_errno (EINVAL);
> -      goto unlock_bail;
> -    }
> -
> -  if (ovalue != NULL)
> -    {
> -      ovalue->it_interval = timer->value.it_interval;
> -
> -      if (timer->armed)
> -	{
> -	  if (! have_now)
> -	    {
> -	      pthread_mutex_unlock (&__timer_mutex);
> -	      __clock_gettime (timer->clock, &now);
> -	      have_now = 1;
> -	      pthread_mutex_lock (&__timer_mutex);
> -	      timer_addref (timer);
> -	    }
> -
> -	  timespec_sub (&ovalue->it_value, &timer->expirytime, &now);
> -	}
> -      else
> -	{
> -	  ovalue->it_value.tv_sec = 0;
> -	  ovalue->it_value.tv_nsec = 0;
> -	}
> -    }
> -
> -  timer->value = *value;
> -
> -  list_unlink_ip (&timer->links);
> -  timer->armed = 0;
> -
> -  thread = timer->thread;
> -
> -  /* A value of { 0, 0 } causes the timer to be stopped. */
> -  if (value->it_value.tv_sec != 0
> -      || __builtin_expect (value->it_value.tv_nsec != 0, 1))
> -    {
> -      if ((flags & TIMER_ABSTIME) != 0)
> -	/* The user specified the expiration time.  */
> -	timer->expirytime = value->it_value;
> -      else
> -	timespec_add (&timer->expirytime, &now, &value->it_value);
> -
> -      /* Only need to wake up the thread if timer is inserted
> -	 at the head of the queue. */
> -      if (thread != NULL)
> -	need_wakeup = __timer_thread_queue_timer (thread, timer);
> -      timer->armed = 1;
> -    }
> -
> -  retval = 0;
> -
> -unlock_bail:
> -  timer_delref (timer);
> -  pthread_mutex_unlock (&__timer_mutex);
> -
> -bail:
> -  if (thread != NULL && need_wakeup)
> -    __timer_thread_wakeup (thread);
> -
> -  return retval;
> -}


Ok.


> diff --git a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> index 0d6da82919..9f69b080ed 100644
> --- a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> +++ b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> @@ -10,7 +10,7 @@ extern __typeof (aio_cancel) __old_aio_cancel;
>  
>  #define aio_cancel	__new_aio_cancel
>  
> -#include <sysdeps/pthread/aio_cancel.c>
> +#include <rt/aio_cancel.c>
>  
>  #undef aio_cancel
>  strong_alias (__new_aio_cancel, __new_aio_cancel64);


Ok.

> @@ -23,7 +23,7 @@ versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
>  #define aio_cancel	__old_aio_cancel
>  #define ECANCELED	125
>  
> -#include <sysdeps/pthread/aio_cancel.c>
> +#include <rt/aio_cancel.c>
>  
>  #undef aio_cancel
>  strong_alias (__old_aio_cancel, __old_aio_cancel64);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> index 0d6da82919..9f69b080ed 100644
> --- a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> +++ b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> @@ -10,7 +10,7 @@ extern __typeof (aio_cancel) __old_aio_cancel;
>  
>  #define aio_cancel	__new_aio_cancel
>  
> -#include <sysdeps/pthread/aio_cancel.c>
> +#include <rt/aio_cancel.c>
>  
>  #undef aio_cancel
>  strong_alias (__new_aio_cancel, __new_aio_cancel64);

Ok.

> @@ -23,7 +23,7 @@ versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
>  #define aio_cancel	__old_aio_cancel
>  #define ECANCELED	125
>  
> -#include <sysdeps/pthread/aio_cancel.c>
> +#include <rt/aio_cancel.c>
>  
>  #undef aio_cancel
>  strong_alias (__old_aio_cancel, __old_aio_cancel64);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
> index d10fc4320b..8310b484d0 100644
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
> +++ b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
> @@ -1,6 +1,6 @@
>  #define aio_read64 __renamed_aio_read64
>  
> -#include "../../../../pthread/aio_read.c"
> +#include <rt/aio_read.c>
>  
>  #undef aio_read64
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
> index b0fb469cb2..60d242f88f 100644
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
> +++ b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
> @@ -1,6 +1,6 @@
>  #define aio_write64 __renamed_aio_write64
>  
> -#include "../../../../pthread/aio_write.c"
> +#include <rt/aio_write.c>
>  
>  #undef aio_write64
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
> index 25ee5a3507..be9fe7a9c7 100644
> --- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
> +++ b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
> @@ -1,6 +1,6 @@
>  #define lio_listio64 __renamed_lio_listio64
>  
> -#include "../../../../pthread/lio_listio.c"
> +#include <rt/lio_listio.c>
>  
>  #undef lio_listio64
>  
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory
  2021-06-17 18:57 ` [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
@ 2021-06-22  0:57   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-22  0:57 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> This mirrors the situation on Hurd.  These directories are on
> the include search part, so #include <pthreadP.h> works after this
> change on both Hurd and npt

Nice change, is is really awkward to keep using nptl/pthreadP or keep
adding some extra hacks to include it outside nptl.

LGTM, thanks.

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


> ---
>  nptl_db/thread_dbP.h                      | 2 +-
>  sysdeps/nptl/aio_misc.h                   | 2 +-
>  sysdeps/nptl/dl-tls_init_tp.c             | 2 +-
>  sysdeps/nptl/fork.c                       | 2 +-
>  sysdeps/nptl/gai_misc.h                   | 2 +-
>  sysdeps/nptl/jmp-unwind.c                 | 2 +-
>  sysdeps/nptl/libc-lockP.h                 | 2 +-
>  sysdeps/nptl/libc_start_call_main.h       | 2 +-
>  {nptl => sysdeps/nptl}/pthreadP.h         | 2 +-
>  sysdeps/nptl/pthread_early_init.h         | 2 +-
>  sysdeps/nptl/setxid.h                     | 2 +-
>  sysdeps/posix/spawni.c                    | 2 +-
>  sysdeps/unix/sysv/linux/dl-execstack.c    | 2 +-
>  sysdeps/unix/sysv/linux/mq_notify.c       | 2 +-
>  sysdeps/unix/sysv/linux/s390/jmp-unwind.c | 2 +-
>  sysdeps/unix/sysv/linux/sigprocmask.c     | 2 +-
>  sysdeps/unix/sysv/linux/spawni.c          | 2 +-
>  sysdeps/unix/sysv/linux/timer_create.c    | 2 +-
>  sysdeps/unix/sysv/linux/timer_routines.c  | 2 +-
>  sysdeps/unix/sysv/linux/tls-internal.h    | 2 +-
>  sysdeps/unix/sysv/linux/x86/longjmp.c     | 2 +-
>  21 files changed, 21 insertions(+), 21 deletions(-)
>  rename {nptl => sysdeps/nptl}/pthreadP.h (99%)
> 
> diff --git a/nptl_db/thread_dbP.h b/nptl_db/thread_dbP.h
> index 712fa3aeb6..7e7d1d5535 100644
> --- a/nptl_db/thread_dbP.h
> +++ b/nptl_db/thread_dbP.h
> @@ -27,7 +27,7 @@
>  #include <assert.h>
>  #include "proc_service.h"
>  #include "thread_db.h"
> -#include "../nptl/pthreadP.h"  	/* This is for *_BITMASK only.  */
> +#include <pthreadP.h>  	/* This is for *_BITMASK only.  */
>  #include <list.h>
>  #include <gnu/lib-names.h>
>  #include <libc-diag.h>

Ok.

> diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
> index 3e9b8929b2..a5c439fab5 100644
> --- a/sysdeps/nptl/aio_misc.h
> +++ b/sysdeps/nptl/aio_misc.h
> @@ -21,7 +21,7 @@
>     correct aio_suspend and lio_listio implementations.  */
>  
>  #include <assert.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <futex-internal.h>
>  
>  #define DONT_NEED_AIO_MISC_COND	1

Ok.

> diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
> index b7b3bb1cdb..c3349dd14c 100644
> --- a/sysdeps/nptl/dl-tls_init_tp.c
> +++ b/sysdeps/nptl/dl-tls_init_tp.c
> @@ -19,7 +19,7 @@
>  #include <kernel-features.h>
>  #include <ldsodefs.h>
>  #include <list.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <tls.h>
>  
>  #ifndef __ASSUME_SET_ROBUST_LIST

Ok.

> diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
> index 062b01265a..39ab797612 100644
> --- a/sysdeps/nptl/fork.c
> +++ b/sysdeps/nptl/fork.c
> @@ -27,7 +27,7 @@
>  #include <ldsodefs.h>
>  #include <stdio-lock.h>
>  #include <atomic.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <register-atfork.h>
>  #include <arch-fork.h>
>  #include <futex-internal.h>

Ok.

> diff --git a/sysdeps/nptl/gai_misc.h b/sysdeps/nptl/gai_misc.h
> index 82948fdf96..36bf27523d 100644
> --- a/sysdeps/nptl/gai_misc.h
> +++ b/sysdeps/nptl/gai_misc.h
> @@ -22,7 +22,7 @@
>  
>  #include <assert.h>
>  #include <signal.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <futex-internal.h>
>  
>  #define DONT_NEED_GAI_MISC_COND	1

Ok.

> diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
> index 96c4862c74..5254c16b81 100644
> --- a/sysdeps/nptl/jmp-unwind.c
> +++ b/sysdeps/nptl/jmp-unwind.c
> @@ -19,7 +19,7 @@
>  #include <setjmp.h>
>  #include <stddef.h>
>  #include <libc-lock.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  
>  void
>  _longjmp_unwind (jmp_buf env, int val)

Ok.

> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index ec7b02bbdd..ef88a3e533 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -36,7 +36,7 @@
>  #if IS_IN (libpthread)
>  /* This gets us the declarations of the __pthread_* internal names,
>     and hidden_proto for them.  */
> -# include <nptl/pthreadP.h>
> +# include <pthreadP.h>
>  #endif
>  
>  /* Mutex type.  */

Ok.

> diff --git a/sysdeps/nptl/libc_start_call_main.h b/sysdeps/nptl/libc_start_call_main.h
> index b56bf34325..06d72c1e38 100644
> --- a/sysdeps/nptl/libc_start_call_main.h
> +++ b/sysdeps/nptl/libc_start_call_main.h
> @@ -17,7 +17,7 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <atomic.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  
>  _Noreturn static void
>  __libc_start_call_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),

Ok.

> diff --git a/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
> similarity index 99%
> rename from nptl/pthreadP.h
> rename to sysdeps/nptl/pthreadP.h
> index 675d1de753..ca96ff073b 100644
> --- a/nptl/pthreadP.h
> +++ b/sysdeps/nptl/pthreadP.h
> @@ -25,7 +25,7 @@
>  #include <setjmp.h>
>  #include <stdbool.h>
>  #include <sys/syscall.h>
> -#include "descr.h"
> +#include <nptl/descr.h>
>  #include <tls.h>
>  #include <lowlevellock.h>
>  #include <stackinfo.h>

Ok.

> diff --git a/sysdeps/nptl/pthread_early_init.h b/sysdeps/nptl/pthread_early_init.h
> index 5b49ce39c2..89774c1477 100644
> --- a/sysdeps/nptl/pthread_early_init.h
> +++ b/sysdeps/nptl/pthread_early_init.h
> @@ -20,7 +20,7 @@
>  #define _PTHREAD_EARLY_INIT_H 1
>  
>  #include <nptl/nptl-stack.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <pthread_mutex_conf.h>
>  #include <sys/resource.h>
>  

Ok.

> diff --git a/sysdeps/nptl/setxid.h b/sysdeps/nptl/setxid.h
> index 8b49d11550..e90367bf02 100644
> --- a/sysdeps/nptl/setxid.h
> +++ b/sysdeps/nptl/setxid.h
> @@ -15,7 +15,7 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <sys/single_threaded.h>
>  #include <sysdep.h>
>  

Ok.

> diff --git a/sysdeps/posix/spawni.c b/sysdeps/posix/spawni.c
> index a649788668..fe3b5bb7f6 100644
> --- a/sysdeps/posix/spawni.c
> +++ b/sysdeps/posix/spawni.c
> @@ -28,7 +28,7 @@
>  #include <not-cancel.h>
>  #include <local-setxid.h>
>  #include <shlib-compat.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <dl-sysdep.h>
>  #include <libc-pointer-arith.h>
>  #include <ldsodefs.h>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/dl-execstack.c b/sysdeps/unix/sysv/linux/dl-execstack.c
> index e2449d1890..6598c90357 100644
> --- a/sysdeps/unix/sysv/linux/dl-execstack.c
> +++ b/sysdeps/unix/sysv/linux/dl-execstack.c
> @@ -20,7 +20,7 @@
>  #include <ldsodefs.h>
>  #include <libintl.h>
>  #include <list.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <stackinfo.h>
>  #include <stdbool.h>
>  #include <sys/mman.h>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
> index 6f46d29d1d..e22850a910 100644
> --- a/sysdeps/unix/sysv/linux/mq_notify.c
> +++ b/sysdeps/unix/sysv/linux/mq_notify.c
> @@ -28,7 +28,7 @@
>  #include <unistd.h>
>  #include <sys/socket.h>
>  #include <not-cancel.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  
>  
>  /* Defined in the kernel headers: */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> index 8e0399a3e9..5fbca71f5b 100644
> --- a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> +++ b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
> @@ -19,7 +19,7 @@
>  #include <setjmp.h>
>  #include <stddef.h>
>  #include <libc-lock.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  
>  void
>  _longjmp_unwind (jmp_buf env, int val)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
> index 9dfd8076d1..eeec05d037 100644
> --- a/sysdeps/unix/sysv/linux/sigprocmask.c
> +++ b/sysdeps/unix/sysv/linux/sigprocmask.c
> @@ -16,7 +16,7 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <signal.h>
> -#include <nptl/pthreadP.h>              /* SIGCANCEL, SIGSETXID */
> +#include <pthreadP.h>              /* SIGCANCEL, SIGSETXID */
>  
>  /* Get and/or change the set of blocked signals.  */
>  int

Ok.

> diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
> index 501f8fbccd..3b435e6c86 100644
> --- a/sysdeps/unix/sysv/linux/spawni.c
> +++ b/sysdeps/unix/sysv/linux/spawni.c
> @@ -27,7 +27,7 @@
>  #include <not-cancel.h>
>  #include <local-setxid.h>
>  #include <shlib-compat.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <dl-sysdep.h>
>  #include <libc-pointer-arith.h>
>  #include <ldsodefs.h>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
> index 37de98fde4..1ea0086487 100644
> --- a/sysdeps/unix/sysv/linux/timer_create.c
> +++ b/sysdeps/unix/sysv/linux/timer_create.c
> @@ -24,7 +24,7 @@
>  #include <time.h>
>  #include <sysdep.h>
>  #include <internaltypes.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include "kernel-posix-timers.h"
>  #include "kernel-posix-cpu-timers.h"
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
> index 60e60e0098..4098da8a5f 100644
> --- a/sysdeps/unix/sysv/linux/timer_routines.c
> +++ b/sysdeps/unix/sysv/linux/timer_routines.c
> @@ -21,7 +21,7 @@
>  #include <signal.h>
>  #include <stdbool.h>
>  #include <sysdep-cancel.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include "kernel-posix-timers.h"
>  
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/tls-internal.h b/sysdeps/unix/sysv/linux/tls-internal.h
> index 40798a5dcc..17128136dd 100644
> --- a/sysdeps/unix/sysv/linux/tls-internal.h
> +++ b/sysdeps/unix/sysv/linux/tls-internal.h
> @@ -20,7 +20,7 @@
>  #define _TLS_INTERNAL_H 1
>  
>  #include <stdlib.h>
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  
>  static inline struct tls_internal_t *
>  __glibc_tls_internal (void)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86/longjmp.c b/sysdeps/unix/sysv/linux/x86/longjmp.c
> index 1cc8b8dfad..25e2af7685 100644
> --- a/sysdeps/unix/sysv/linux/x86/longjmp.c
> +++ b/sysdeps/unix/sysv/linux/x86/longjmp.c
> @@ -18,7 +18,7 @@
>  
>  #include <sysdeps/x86/longjmp.c>
>  
> -#include <nptl/pthreadP.h>
> +#include <pthreadP.h>
>  #include <jmp_buf-ssp.h>
>  
>  #ifdef __x86_64__
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 09/34] Add hidden prototypes for fsync, fdatasync
  2021-06-17 18:57 ` [PATCH 09/34] Add hidden prototypes for fsync, fdatasync Florian Weimer
@ 2021-06-22  0:58   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-22  0:58 UTC (permalink / raw)
  To: libc-alpha, Florian Weimer

LGTM, thanks.

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

On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> ---
>  include/unistd.h                    | 2 ++
>  misc/fdatasync.c                    | 1 +
>  misc/fsync.c                        | 2 +-
>  sysdeps/mach/hurd/fdatasync.c       | 1 +
>  sysdeps/mach/hurd/fsync.c           | 1 +
>  sysdeps/unix/sysv/linux/fdatasync.c | 1 +
>  sysdeps/unix/sysv/linux/fsync.c     | 1 +
>  7 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/include/unistd.h b/include/unistd.h
> index 8ed8b1ea4b..34872d8b41 100644
> --- a/include/unistd.h
> +++ b/include/unistd.h
> @@ -25,6 +25,8 @@ libc_hidden_proto (seteuid)
>  libc_hidden_proto (setegid)
>  libc_hidden_proto (tcgetpgrp)
>  libc_hidden_proto (readlinkat)
> +libc_hidden_proto (fsync)
> +libc_hidden_proto (fdatasync)
>  
>  /* Now define the internal interfaces.  */

Ok.

>  extern int __access (const char *__name, int __type);
> diff --git a/misc/fdatasync.c b/misc/fdatasync.c
> index 28474812ca..c776978bba 100644
> --- a/misc/fdatasync.c
> +++ b/misc/fdatasync.c
> @@ -25,3 +25,4 @@ fdatasync (int fildes)
>  {
>    return fsync (fildes);
>  }
> +libc_hidden_def (fdatasync)

Ok.

> diff --git a/misc/fsync.c b/misc/fsync.c
> index e1c37c6016..1961dd0cb2 100644
> --- a/misc/fsync.c
> +++ b/misc/fsync.c
> @@ -25,6 +25,6 @@ fsync (int fd)
>    __set_errno (ENOSYS);
>    return -1;
>  }
> -
> +libc_hidden_def (fsync)
>  
>  stub_warning (fsync)


Ok.

> diff --git a/sysdeps/mach/hurd/fdatasync.c b/sysdeps/mach/hurd/fdatasync.c
> index 0be8072e7f..68df551016 100644
> --- a/sysdeps/mach/hurd/fdatasync.c
> +++ b/sysdeps/mach/hurd/fdatasync.c
> @@ -41,3 +41,4 @@ fdatasync (int fd)
>      }
>    return 0;
>  }
> +libc_hidden_def (fdatasync)

Ok.

> diff --git a/sysdeps/mach/hurd/fsync.c b/sysdeps/mach/hurd/fsync.c
> index ef04ee97f9..c1d560f293 100644
> --- a/sysdeps/mach/hurd/fsync.c
> +++ b/sysdeps/mach/hurd/fsync.c
> @@ -41,3 +41,4 @@ fsync (int fd)
>      }
>    return 0;
>  }
> +libc_hidden_def (fsync)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/fdatasync.c b/sysdeps/unix/sysv/linux/fdatasync.c
> index 84c07f212e..12fb3c13e5 100644
> --- a/sysdeps/unix/sysv/linux/fdatasync.c
> +++ b/sysdeps/unix/sysv/linux/fdatasync.c
> @@ -27,3 +27,4 @@ fdatasync (int fd)
>  {
>    return SYSCALL_CANCEL (fdatasync, fd);
>  }
> +libc_hidden_def (fdatasync)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/fsync.c b/sysdeps/unix/sysv/linux/fsync.c
> index 234bb0049f..e4b5c8c342 100644
> --- a/sysdeps/unix/sysv/linux/fsync.c
> +++ b/sysdeps/unix/sysv/linux/fsync.c
> @@ -26,3 +26,4 @@ fsync (int fd)
>  {
>    return SYSCALL_CANCEL (fsync, fd);
>  }
> +libc_hidden_def (fsync)
> 

Ok.


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 10/34] Linux: Move aio_init from librt into libc
  2021-06-17 18:57 ` [PATCH 10/34] Linux: Move aio_init from librt into libc Florian Weimer
@ 2021-06-23 13:22   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 13:22 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> This commit also moves the aio_misc and aio_sigquue helper,
> so GLIBC_PRIVATE exports need to be added.
> 
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, only a small nit below.

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

> ---
>  nptl/pthread_getschedparam.c                  |   1 +
>  rt/Makefile                                   |   6 +-
>  rt/Versions                                   |  23 ++++
>  rt/aio_misc.c                                 | 107 ++++++++++++------
>  rt/aio_notify.c                               |  21 +++-
>  rt/aio_sigqueue.c                             |   2 +-
>  sysdeps/generic/aio_misc.h                    |  43 +++++--
>  sysdeps/nptl/aio_misc.h                       |   4 +-
>  sysdeps/nptl/pthreadP.h                       |   1 +
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |   2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |   1 -
>  sysdeps/unix/sysv/linux/aio_misc.h            |  10 +-
>  sysdeps/unix/sysv/linux/aio_sigqueue.c        |   3 +-
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |   2 +
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |   1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |   2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |   1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |   2 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |   1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |   2 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |   1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |   2 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |   1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |   2 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |   1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |   2 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |   1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |   2 +
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |   1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |   2 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |   1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |   2 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |   1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |   2 +
>  .../sysv/linux/microblaze/be/librt.abilist    |   1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |   2 +
>  .../sysv/linux/microblaze/le/librt.abilist    |   1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |   2 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |   1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |   2 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |   2 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |   1 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |   2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |   1 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |   2 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |   1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |   2 +
>  .../linux/powerpc/powerpc32/librt.abilist     |   1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |   2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |   2 +
>  .../linux/powerpc/powerpc64/be/librt.abilist  |   1 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |   2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |   1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |   2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |   1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |   2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |   1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |   2 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |   1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |   2 +
>  .../sysv/linux/s390/s390-64/librt.abilist     |   1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |   2 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |   1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |   2 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |   1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |   2 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |   1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |   2 +
>  .../sysv/linux/sparc/sparc64/librt.abilist    |   1 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |   2 +
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |   1 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |   2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |   1 -
>  73 files changed, 222 insertions(+), 93 deletions(-)
> 
> diff --git a/nptl/pthread_getschedparam.c b/nptl/pthread_getschedparam.c
> index a69ed8d8c3..94316cf897 100644
> --- a/nptl/pthread_getschedparam.c
> +++ b/nptl/pthread_getschedparam.c
> @@ -70,4 +70,5 @@ __pthread_getschedparam (pthread_t threadid, int *policy,
>  
>    return result;
>  }
> +libc_hidden_def (__pthread_getschedparam)
>  strong_alias (__pthread_getschedparam, pthread_getschedparam)

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index 329db09c32..ada87c845e 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -32,12 +32,9 @@ librt-routines = \
>    aio_cancel \
>    aio_error \
>    aio_fsync \
> -  aio_misc \
> -  aio_notify \
>    aio_read \
>    aio_read64 \
>    aio_return \
> -  aio_sigqueue \
>    aio_suspend \
>    aio_write \
>    aio_write64 \
> @@ -60,6 +57,9 @@ librt-routines = \
>    timer_settime \
>  
>  $(librt-routines-var) += \
> +  aio_misc \
> +  aio_notify \
> +  aio_sigqueue \
>  
>  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 26c6d1ac63..2e991a9d93 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -1,12 +1,33 @@
>  libc {
> +  GLIBC_2.1 {
> +%if PTHREAD_IN_LIBC
> +    aio_init;
> +%endif
> +  }
>    GLIBC_2.2 {
>      shm_open;
>      shm_unlink;
>    }
>    GLIBC_2.34 {
> +%if PTHREAD_IN_LIBC
> +    aio_init;
> +%endif
>      shm_open;
>      shm_unlink;
>    }
> +%if PTHREAD_IN_LIBC
> +  GLIBC_PRIVATE {
> +    __aio_enqueue_request;
> +    __aio_find_req;
> +    __aio_find_req_fd;
> +    __aio_free_request;
> +    __aio_notify;
> +    __aio_notify_only;
> +    __aio_remove_request;
> +    __aio_requests_mutex;
> +    __aio_sigqueue;
> +  }
> +%endif
>  }
>  librt {
>    GLIBC_2.1 {
> @@ -16,7 +37,9 @@ librt {
>      aio_error64;
>      aio_fsync;
>      aio_fsync64;
> +%if !PTHREAD_IN_LIBC
>      aio_init;
> +%endif
>      aio_read;
>      aio_read64;
>      aio_return;

Ok.

> diff --git a/rt/aio_misc.c b/rt/aio_misc.c
> index b95f07d9d3..d9be8ac33d 100644
> --- a/rt/aio_misc.c
> +++ b/rt/aio_misc.c
> @@ -21,7 +21,7 @@
>  #include <assert.h>
>  #include <errno.h>
>  #include <limits.h>
> -#include <pthread.h>
> +#include <pthreadP.h>
>  #include <stdlib.h>
>  #include <unistd.h>
>  #include <sys/param.h>
> @@ -29,6 +29,20 @@
>  #include <sys/time.h>
>  #include <aio_misc.h>
>  
> +#if !PTHREAD_IN_LIBC
> +/* The available function names differ outside of libc.  (In libc, we
> +   need to use hidden aliases to avoid the PLT.)  */
> +# define __pread __libc_pread
> +# define __pthread_attr_destroy pthread_attr_destroy
> +# define __pthread_attr_init pthread_attr_init
> +# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
> +# define __pthread_cond_signal pthread_cond_signal
> +# define __pthread_cond_timedwait pthread_cond_timedwait
> +# define __pthread_getschedparam pthread_getschedparam
> +# define __pthread_setschedparam pthread_setschedparam
> +# define __pwrite __libc_pwrite
> +#endif
> +
>  #ifndef aio_create_helper_thread
>  # define aio_create_helper_thread __aio_create_helper_thread
>  

Ok.

> @@ -38,12 +52,12 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
>    pthread_attr_t attr;
>  
>    /* Make sure the thread is created detached.  */
> -  pthread_attr_init (&attr);
> -  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +  __pthread_attr_init (&attr);
> +  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
>  
> -  int ret = pthread_create (threadp, &attr, tf, arg);
> +  int ret = __pthread_create (threadp, &attr, tf, arg);
>  
> -  (void) pthread_attr_destroy (&attr);
> +  (void) __pthread_attr_destroy (&attr);
>    return ret;
>  }
>  #endif
> @@ -271,7 +285,7 @@ void
>  __aio_init (const struct aioinit *init)
>  {
>    /* Get the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>    /* Only allow writing new values if the table is not yet allocated.  */
>    if (pool == NULL)
> @@ -287,9 +301,8 @@ __aio_init (const struct aioinit *init)
>      optim.aio_idle_time = init->aio_idle_time;
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  }
> -weak_alias (__aio_init, aio_init)
>  
>  
>  /* The main function of the async I/O handling.  It enqueues requests


Ok.

> @@ -319,11 +332,11 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
>      }
>  
>    /* Compute priority for this request.  */
> -  pthread_getschedparam (pthread_self (), &policy, &param);
> +  __pthread_getschedparam (__pthread_self (), &policy, &param);
>    prio = param.sched_priority - aiocbp->aiocb.aio_reqprio;
>  
>    /* Get the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>    last = NULL;
>    runp = requests;
> @@ -340,7 +353,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
>    newp = get_elem ();
>    if (newp == NULL)
>      {
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> +      __pthread_mutex_unlock (&__aio_requests_mutex);
>        __set_errno (EAGAIN);
>        return NULL;
>      }
> @@ -454,7 +467,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
>        /* If there is a thread waiting for work, then let it know that we
>  	 have just given it something to do. */
>        if (idle_thread_count > 0)
> -	pthread_cond_signal (&__aio_new_request_notification);
> +	__pthread_cond_signal (&__aio_new_request_notification);
>      }
>  
>    if (result == 0)
> @@ -469,7 +482,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
>      }
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  
>    return newp;
>  }


Ok.

> @@ -478,14 +491,14 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
>  static void *
>  handle_fildes_io (void *arg)
>  {
> -  pthread_t self = pthread_self ();
> +  pthread_t self = __pthread_self ();
>    struct sched_param param;
>    struct requestlist *runp = (struct requestlist *) arg;
>    aiocb_union *aiocbp;
>    int policy;
>    int fildes;
>  
> -  pthread_getschedparam (self, &policy, &param);
> +  __pthread_getschedparam (self, &policy, &param);
>  
>    do
>      {
> @@ -495,7 +508,7 @@ handle_fildes_io (void *arg)
>  	 "get work off the work queue" part of this loop, which is near the
>  	 end. */
>        if (runp == NULL)
> -	pthread_mutex_lock (&__aio_requests_mutex);
> +	__pthread_mutex_lock (&__aio_requests_mutex);
>        else
>  	{
>  	  /* Hopefully this request is marked as running.  */
> @@ -511,7 +524,7 @@ handle_fildes_io (void *arg)
>  	    {
>  	      param.sched_priority = aiocbp->aiocb.__abs_prio;
>  	      policy = aiocbp->aiocb.__policy;
> -	      pthread_setschedparam (self, policy, &param);
> +	      __pthread_setschedparam (self, policy, &param);
>  	    }
>  
>  	  /* Process request pointed to by RUNP.  We must not be disturbed
> @@ -527,11 +540,11 @@ handle_fildes_io (void *arg)
>  						 aiocbp->aiocb64.aio_offset));
>  	      else
>  		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__libc_pread (fildes,
> -						    (void *)
> -						    aiocbp->aiocb.aio_buf,
> -						    aiocbp->aiocb.aio_nbytes,
> -						    aiocbp->aiocb.aio_offset));
> +		  TEMP_FAILURE_RETRY (__pread (fildes,
> +					       (void *)
> +					       aiocbp->aiocb.aio_buf,
> +					       aiocbp->aiocb.aio_nbytes,
> +					       aiocbp->aiocb.aio_offset));
>  
>  	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
>  		/* The Linux kernel is different from others.  It returns

Ok.

> @@ -554,10 +567,10 @@ handle_fildes_io (void *arg)
>  						  aiocbp->aiocb64.aio_offset));
>  	      else
>  		aiocbp->aiocb.__return_value =
> -		  TEMP_FAILURE_RETRY (__libc_pwrite (fildes, (const void *)
> -					      aiocbp->aiocb.aio_buf,
> -					      aiocbp->aiocb.aio_nbytes,
> -					      aiocbp->aiocb.aio_offset));
> +		  TEMP_FAILURE_RETRY (__pwrite (fildes, (const void *)
> +						aiocbp->aiocb.aio_buf,
> +						aiocbp->aiocb.aio_nbytes,
> +						aiocbp->aiocb.aio_offset));
>  
>  	      if (aiocbp->aiocb.__return_value == -1 && errno == ESPIPE)
>  		/* The Linux kernel is different from others.  It returns
> @@ -583,7 +596,7 @@ handle_fildes_io (void *arg)
>  	    }
>  
>  	  /* Get the mutex.  */
> -	  pthread_mutex_lock (&__aio_requests_mutex);
> +	  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>  	  if (aiocbp->aiocb.__return_value == -1)
>  	    aiocbp->aiocb.__error_code = errno;
> @@ -626,9 +639,9 @@ handle_fildes_io (void *arg)
>  	      wakeup_time.tv_nsec -= 1000000000;
>  	      ++wakeup_time.tv_sec;
>  	    }
> -	  pthread_cond_timedwait (&__aio_new_request_notification,
> -				  &__aio_requests_mutex,
> -				  &wakeup_time);
> +	  __pthread_cond_timedwait (&__aio_new_request_notification,
> +				    &__aio_requests_mutex,
> +				    &wakeup_time);
>  	  --idle_thread_count;
>  	  runp = runlist;
>  	}
> @@ -651,20 +664,21 @@ handle_fildes_io (void *arg)
>  		 up for these other work elements; otherwise, we should try
>  		 to create a new thread. */
>  	      if (idle_thread_count > 0)
> -		pthread_cond_signal (&__aio_new_request_notification);
> +		__pthread_cond_signal (&__aio_new_request_notification);
>  	      else if (nthreads < optim.aio_threads)
>  		{
>  		  pthread_t thid;
>  		  pthread_attr_t attr;
>  
>  		  /* Make sure the thread is created detached.  */
> -		  pthread_attr_init (&attr);
> -		  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +		  __pthread_attr_init (&attr);
> +		  __pthread_attr_setdetachstate (&attr,
> +						 PTHREAD_CREATE_DETACHED);
>  
>  		  /* Now try to start a thread. If we fail, no big deal,
>  		     because we know that there is at least one thread (us)
>  		     that is working on AIO operations. */
> -		  if (pthread_create (&thid, &attr, handle_fildes_io, NULL)
> +		  if (__pthread_create (&thid, &attr, handle_fildes_io, NULL)
>  		      == 0)
>  		    ++nthreads;
>  		}
> @@ -672,7 +686,7 @@ handle_fildes_io (void *arg)
>  	}
>  
>        /* Release the mutex.  */
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> +      __pthread_mutex_unlock (&__aio_requests_mutex);
>      }
>    while (runp != NULL);
>  
> @@ -719,3 +733,26 @@ add_request_to_runlist (struct requestlist *newrequest)
>        runp->next_run = newrequest;
>      }
>  }
> +

Ok.

> +#if PTHREAD_IN_LIBC
> +libc_hidden_data_def (__aio_requests_mutex)
> +libc_hidden_def (__aio_enqueue_request)
> +libc_hidden_def (__aio_find_req)
> +libc_hidden_def (__aio_find_req_fd)
> +libc_hidden_def (__aio_free_request)
> +libc_hidden_def (__aio_remove_request)
> +
> +versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
> +# endif
> +
> +#else /* !PTHREAD_IN_LIBC */
> +librt_hidden_data_def (__aio_requests_mutex)
> +librt_hidden_def (__aio_enqueue_request)
> +librt_hidden_def (__aio_find_req)
> +librt_hidden_def (__aio_find_req_fd)
> +librt_hidden_def (__aio_free_request)
> +librt_hidden_def (__aio_remove_request)
> +weak_alias (__aio_init, aio_init)
> +#endif /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/rt/aio_notify.c b/rt/aio_notify.c
> index a8d61503d8..432000e34b 100644
> --- a/rt/aio_notify.c
> +++ b/rt/aio_notify.c
> @@ -18,12 +18,17 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> -#include <pthread.h>
> +#include <pthreadP.h>
>  #include <stdlib.h>
>  #include <unistd.h>
>  #include <aio_misc.h>
>  #include <signal.h>
>  
> +#if !PTHREAD_IN_LIBC
> +# define __pthread_attr_init pthread_attr_init
> +# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
> +#endif
> +
>  #ifndef aio_start_notify_thread
>  # define aio_start_notify_thread() do { } while (0)
>  #endif
> @@ -62,8 +67,8 @@ __aio_notify_only (struct sigevent *sigev)
>        pattr = (pthread_attr_t *) sigev->sigev_notify_attributes;
>        if (pattr == NULL)
>  	{
> -	  pthread_attr_init (&attr);
> -	  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +	  __pthread_attr_init (&attr);
> +	  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
>  	  pattr = &attr;
>  	}
>  
> @@ -81,7 +86,7 @@ __aio_notify_only (struct sigevent *sigev)
>  	{
>  	  nf->func = sigev->sigev_notify_function;
>  	  nf->value = sigev->sigev_value;
> -	  if (pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
> +	  if (__pthread_create (&tid, pattr, notify_func_wrapper, nf) < 0)
>  	    {
>  	      free (nf);
>  	      result = -1;
> @@ -155,3 +160,11 @@ __aio_notify (struct requestlist *req)
>        waitlist = next;
>      }
>  }
> +
> +#if PTHREAD_IN_LIBC
> +libc_hidden_def (__aio_notify)
> +libc_hidden_def (__aio_notify_only)
> +#else
> +librt_hidden_def (__aio_notify)
> +librt_hidden_def (__aio_notify_only)
> +#endif

Ok.

> diff --git a/rt/aio_sigqueue.c b/rt/aio_sigqueue.c
> index 2f7da00ad3..0ad95ae04c 100644
> --- a/rt/aio_sigqueue.c
> +++ b/rt/aio_sigqueue.c
> @@ -28,5 +28,5 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>    __set_errno (ENOSYS);
>    return -1;
>  }
> -
> +librt_hidden_def (__aio_sigqueue)
>  stub_warning (__aio_sigqueue)

Ok.

> diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
> index e23524cffe..d9bff36e50 100644
> --- a/sysdeps/generic/aio_misc.h
> +++ b/sysdeps/generic/aio_misc.h
> @@ -87,36 +87,55 @@ struct requestlist
>  
>  
>  /* Lock for global I/O list of requests.  */
> -extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
> +extern pthread_mutex_t __aio_requests_mutex;
>  
>  
>  /* Enqueue request.  */
>  extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
> -						  int operation)
> -  attribute_hidden;
> +						  int operation);
>  
>  /* Find request entry for given AIO control block.  */
> -extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
> +extern struct requestlist *__aio_find_req (aiocb_union *elem);
>  
>  /* Find request entry for given file descriptor.  */
> -extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
> +extern struct requestlist *__aio_find_req_fd (int fildes);
>  
>  /* Remove request from the list.  */
>  extern void __aio_remove_request (struct requestlist *last,
> -				  struct requestlist *req, int all)
> -     attribute_hidden;
> +				  struct requestlist *req, int all);
>  
>  /* Release the entry for the request.  */
> -extern void __aio_free_request (struct requestlist *req) attribute_hidden;
> +extern void __aio_free_request (struct requestlist *req);
>  
>  /* Notify initiator of request and tell this everybody listening.  */
> -extern void __aio_notify (struct requestlist *req) attribute_hidden;
> +extern void __aio_notify (struct requestlist *req);
>  
>  /* Notify initiator of request.  */
> -extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
> +extern int __aio_notify_only (struct sigevent *sigev);
>  
>  /* Send the signal.  */
> -extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
> -     attribute_hidden;
> +extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
> +
> +#if PTHREAD_IN_LIBC
> +libc_hidden_proto (__aio_enqueue_request)
> +libc_hidden_proto (__aio_find_req)
> +libc_hidden_proto (__aio_find_req_fd)
> +libc_hidden_proto (__aio_free_request)
> +libc_hidden_proto (__aio_notify)
> +libc_hidden_proto (__aio_notify_only)
> +libc_hidden_proto (__aio_remove_request)
> +libc_hidden_proto (__aio_requests_mutex)
> +libc_hidden_proto (__aio_sigqueue)
> +#else
> +librt_hidden_proto (__aio_enqueue_request)
> +librt_hidden_proto (__aio_find_req)
> +librt_hidden_proto (__aio_find_req_fd)
> +librt_hidden_proto (__aio_free_request)
> +librt_hidden_proto (__aio_notify)
> +librt_hidden_proto (__aio_notify_only)
> +librt_hidden_proto (__aio_remove_request)
> +librt_hidden_proto (__aio_requests_mutex)
> +librt_hidden_proto (__aio_sigqueue)
> +#endif
>  
>  #endif /* aio_misc.h */
> diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
> index a5c439fab5..d85f9c2fef 100644
> --- a/sysdeps/nptl/aio_misc.h
> +++ b/sysdeps/nptl/aio_misc.h
> @@ -39,7 +39,7 @@
>  									      \
>      if (oldval != 0)							      \
>        {									      \
> -	pthread_mutex_unlock (&__aio_requests_mutex);			      \
> +	__pthread_mutex_unlock (&__aio_requests_mutex);			      \
>  									      \
>  	int status;							      \
>  	do								      \
> @@ -67,7 +67,7 @@
>  	else								      \
>  	  assert (status == 0 || status == EAGAIN);			      \
>  									      \
> -	pthread_mutex_lock (&__aio_requests_mutex);			      \
> +	__pthread_mutex_lock (&__aio_requests_mutex);			      \
>        }									      \
>    } while (0)
>  

Ok.

> diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
> index ca96ff073b..374657a2fd 100644
> --- a/sysdeps/nptl/pthreadP.h
> +++ b/sysdeps/nptl/pthreadP.h
> @@ -337,6 +337,7 @@ libc_hidden_proto (__pthread_get_minstack)
>  /* Namespace save aliases.  */
>  extern int __pthread_getschedparam (pthread_t thread_id, int *policy,
>  				    struct sched_param *param);
> +libc_hidden_proto (__pthread_getschedparam)
>  extern int __pthread_setschedparam (pthread_t thread_id, int policy,
>  				    const struct sched_param *param);
>  extern int __pthread_mutex_init (pthread_mutex_t *__mutex,

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 42e240e284..1bc4ffccce 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -589,6 +589,7 @@ GLIBC_2.17 addseverity F
>  GLIBC_2.17 adjtime F
>  GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
> +GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2348,6 +2349,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index c41e0e675b..66dc3e4457 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
> -GLIBC_2.17 aio_init F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aio_misc.h b/sysdeps/unix/sysv/linux/aio_misc.h
> index a661cee203..79907544dc 100644
> --- a/sysdeps/unix/sysv/linux/aio_misc.h
> +++ b/sysdeps/unix/sysv/linux/aio_misc.h
> @@ -42,11 +42,11 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
>    pthread_attr_t attr;
>  
>    /* Make sure the thread is created detached.  */
> -  pthread_attr_init (&attr);
> -  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +  __pthread_attr_init (&attr);
> +  __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
>  
>    /* The helper thread needs only very little resources.  */
> -  (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
> +  (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));

I think there is no need the extra cast here.

>  
>    /* Block all signals in the helper thread.  To do this thoroughly we
>       temporarily have to block all signals here.  */
> @@ -56,13 +56,13 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
>    INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, &oss,
>  			 __NSIG_BYTES);
>  
> -  int ret = pthread_create (threadp, &attr, tf, arg);
> +  int ret = __pthread_create (threadp, &attr, tf, arg);
>  
>    /* Restore the signal mask.  */
>    INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &oss, NULL,
>  			 __NSIG_BYTES);
>  
> -  (void) pthread_attr_destroy (&attr);
> +  (void) __pthread_attr_destroy (&attr);
>    return ret;
>  }
>  #endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> index 398d7a2f1f..bd0da6e763 100644
> --- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
> +++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> @@ -39,8 +39,9 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>    info.si_signo = sig;
>    info.si_code = SI_ASYNCIO;
>    info.si_pid = caller_pid;
> -  info.si_uid = getuid ();
> +  info.si_uid = __getuid ();
>    info.si_value = val;
>  
>    return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
>  }
> +libc_hidden_def (__aio_sigqueue)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index fad54555dc..5f3bebef8c 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1502,6 +1502,7 @@ GLIBC_2.1 _sys_siglist D 0x200
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 adjtime F
>  GLIBC_2.1 adjtimex F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2441,6 +2442,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index c4985067f7..94f5ca8b6f 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 907716ec39..24d3a3673c 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -550,6 +550,7 @@ GLIBC_2.32 addmntent F
>  GLIBC_2.32 addseverity F
>  GLIBC_2.32 adjtime F
>  GLIBC_2.32 adjtimex F
> +GLIBC_2.32 aio_init F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
>  GLIBC_2.32 alphasort F
> @@ -2107,6 +2108,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 7ee0b6d324..e53772e428 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.32 aio_error F
>  GLIBC_2.32 aio_error64 F
>  GLIBC_2.32 aio_fsync F
>  GLIBC_2.32 aio_fsync64 F
> -GLIBC_2.32 aio_init F
>  GLIBC_2.32 aio_read F
>  GLIBC_2.32 aio_read64 F
>  GLIBC_2.32 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 50f987a429..582aa645c0 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -278,6 +278,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -981,6 +982,7 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 278da67f77..3aa50aa219 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
> -GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index bf9038af84..400eae9ab0 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -275,6 +275,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -978,6 +979,7 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 278da67f77..3aa50aa219 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
> -GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index afb91f6f43..4cd189d5db 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -564,6 +564,7 @@ GLIBC_2.29 addmntent F
>  GLIBC_2.29 addseverity F
>  GLIBC_2.29 adjtime F
>  GLIBC_2.29 adjtimex F
> +GLIBC_2.29 aio_init F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
>  GLIBC_2.29 alphasort F
> @@ -2367,6 +2368,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 60400954a3..640230cfc0 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.29 aio_error F
>  GLIBC_2.29 aio_error64 F
>  GLIBC_2.29 aio_fsync F
>  GLIBC_2.29 aio_fsync64 F
> -GLIBC_2.29 aio_init F
>  GLIBC_2.29 aio_read F
>  GLIBC_2.29 aio_read64 F
>  GLIBC_2.29 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 125f8a269a..ede6bee0cd 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -3,6 +3,7 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2321,6 +2322,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 517753bdd1..17063aaaf9 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1475,6 +1475,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2505,6 +2506,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 23d0928360..4991b80dd1 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -3,6 +3,7 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2281,6 +2282,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index fa7f54dd55..2c97c02f21 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index dd5fb50b18..c1d7edf1f9 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -279,6 +279,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -969,6 +970,7 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 278da67f77..3aa50aa219 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
> -GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index cb1d553361..725280a9db 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1473,6 +1473,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2448,6 +2449,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 6a20a6fdf2..fe9a9c2f09 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -591,6 +591,7 @@ GLIBC_2.18 addseverity F
>  GLIBC_2.18 adjtime F
>  GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
> +GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2418,6 +2419,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index a14deaabdb..679050b4b7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
> -GLIBC_2.18 aio_init F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 4c21cbb64d..8db8d27e29 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -591,6 +591,7 @@ GLIBC_2.18 addseverity F
>  GLIBC_2.18 adjtime F
>  GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
> +GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2415,6 +2416,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index a14deaabdb..679050b4b7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
> -GLIBC_2.18 aio_init F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index f83ba2f780..b6cd21ace7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1651,6 +1651,7 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2413,6 +2414,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 2c212d29d0..617d124234 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
> -GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 347bbddb94..65d0dcbe04 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1649,6 +1649,7 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2411,6 +2412,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 26b7ab529b..a2b2e09a63 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1650,6 +1650,7 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2419,6 +2420,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 2c212d29d0..617d124234 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
> -GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index e667b0e553..78b96a7119 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1646,6 +1646,7 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x200
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2337,6 +2338,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 2c7d661e56..40749a395c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
> -GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 89a1cc7da6..98943b6041 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -633,6 +633,7 @@ GLIBC_2.21 addseverity F
>  GLIBC_2.21 adjtime F
>  GLIBC_2.21 adjtimex F
>  GLIBC_2.21 advance F
> +GLIBC_2.21 aio_init F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
>  GLIBC_2.21 alphasort F
> @@ -2457,6 +2458,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index f600881b44..de354a6bb8 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.21 aio_error F
>  GLIBC_2.21 aio_error64 F
>  GLIBC_2.21 aio_fsync F
>  GLIBC_2.21 aio_fsync64 F
> -GLIBC_2.21 aio_init F
>  GLIBC_2.21 aio_read F
>  GLIBC_2.21 aio_read64 F
>  GLIBC_2.21 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index f364c5219e..f5d5c03eb3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1480,6 +1480,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2475,6 +2476,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index f5bcc78afe..6e99869e4c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1480,6 +1480,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2508,6 +2509,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 6032716053..205768e241 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -633,6 +633,7 @@ GLIBC_2.3 addseverity F
>  GLIBC_2.3 adjtime F
>  GLIBC_2.3 adjtimex F
>  GLIBC_2.3 advance F
> +GLIBC_2.3 aio_init F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
>  GLIBC_2.3 alphasort64 F
> @@ -2245,6 +2246,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index b3c7afb461..3607639c50 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.3 aio_error F
>  GLIBC_2.3 aio_error64 F
>  GLIBC_2.3 aio_fsync F
>  GLIBC_2.3 aio_fsync64 F
> -GLIBC_2.3 aio_init F
>  GLIBC_2.3 aio_read F
>  GLIBC_2.3 aio_read64 F
>  GLIBC_2.3 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 8c5494e1dc..fccca7ccc6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -677,6 +677,7 @@ GLIBC_2.17 addseverity F
>  GLIBC_2.17 adjtime F
>  GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
> +GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2544,6 +2545,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index c41e0e675b..66dc3e4457 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
> -GLIBC_2.17 aio_init F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index d7db279c1e..1de14d1195 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -544,6 +544,7 @@ GLIBC_2.33 addmntent F
>  GLIBC_2.33 addseverity F
>  GLIBC_2.33 adjtime F
>  GLIBC_2.33 adjtimex F
> +GLIBC_2.33 aio_init F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
>  GLIBC_2.33 alphasort F
> @@ -2109,6 +2110,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index c03b8a741e..c588e04ae0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.33 aio_error F
>  GLIBC_2.33 aio_error64 F
>  GLIBC_2.33 aio_fsync F
>  GLIBC_2.33 aio_fsync64 F
> -GLIBC_2.33 aio_init F
>  GLIBC_2.33 aio_read F
>  GLIBC_2.33 aio_read64 F
>  GLIBC_2.33 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index ef03dc0f9e..fd243b77de 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -570,6 +570,7 @@ GLIBC_2.27 addmntent F
>  GLIBC_2.27 addseverity F
>  GLIBC_2.27 adjtime F
>  GLIBC_2.27 adjtimex F
> +GLIBC_2.27 aio_init F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
>  GLIBC_2.27 alphasort F
> @@ -2309,6 +2310,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 3cc7884927..4be13a5327 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.27 aio_error F
>  GLIBC_2.27 aio_error64 F
>  GLIBC_2.27 aio_fsync F
>  GLIBC_2.27 aio_fsync64 F
> -GLIBC_2.27 aio_init F
>  GLIBC_2.27 aio_read F
>  GLIBC_2.27 aio_read64 F
>  GLIBC_2.27 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 9118cb68ec..5a9ccc644b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1472,6 +1472,7 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2473,6 +2474,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 66c01bd7e7..4b336dcbae 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -570,6 +570,7 @@ GLIBC_2.2 addseverity F
>  GLIBC_2.2 adjtime F
>  GLIBC_2.2 adjtimex F
>  GLIBC_2.2 advance F
> +GLIBC_2.2 aio_init F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
>  GLIBC_2.2 alphasort64 F
> @@ -2282,6 +2283,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 80735b140b..97673a21d4 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
> -GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index c40eb412c2..702fc7cd1c 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2328,6 +2329,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 1412d33835..cca5fe2265 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2325,6 +2326,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 6ac4f0597e..0114c42067 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 7b55d34753..937efaaba4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1474,6 +1474,7 @@ GLIBC_2.1 _sys_errlist D 0x1fc
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2466,6 +2467,7 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 100bd4fb76..e4e4569d81 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index cfd5f38864..47f96b1480 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -7,6 +7,7 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2302,6 +2303,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index c4985067f7..94f5ca8b6f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
> -GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 17be05f14f..4ff62311e9 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -559,6 +559,7 @@ GLIBC_2.2.5 addseverity F
>  GLIBC_2.2.5 adjtime F
>  GLIBC_2.2.5 adjtimex F
>  GLIBC_2.2.5 advance F
> +GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
>  GLIBC_2.2.5 alphasort64 F
> @@ -2260,6 +2261,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index a3da4f8e6e..bac8c74b5f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.2.5 aio_error F
>  GLIBC_2.2.5 aio_error64 F
>  GLIBC_2.2.5 aio_fsync F
>  GLIBC_2.2.5 aio_fsync64 F
> -GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 aio_read F
>  GLIBC_2.2.5 aio_read64 F
>  GLIBC_2.2.5 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index a9db18906b..e34873201d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -592,6 +592,7 @@ GLIBC_2.16 addseverity F
>  GLIBC_2.16 adjtime F
>  GLIBC_2.16 adjtimex F
>  GLIBC_2.16 advance F
> +GLIBC_2.16 aio_init F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
>  GLIBC_2.16 alphasort F
> @@ -2363,6 +2364,7 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index a0069d137b..2e432fe7d6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.16 aio_error F
>  GLIBC_2.16 aio_error64 F
>  GLIBC_2.16 aio_fsync F
>  GLIBC_2.16 aio_fsync64 F
> -GLIBC_2.16 aio_init F
>  GLIBC_2.16 aio_read F
>  GLIBC_2.16 aio_read64 F
>  GLIBC_2.16 aio_return F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 into libc
  2021-06-17 18:57 ` [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
@ 2021-06-23 17:26   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 17:26 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> 
> A version placeholder symbol is needed on alpha and sparc because
> of the additional symbols formerly at version GLIBC_2.3.

LGTM, thanks.

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

> ---
>  rt/Makefile                                   |  5 +++-
>  rt/Versions                                   |  6 ++++
>  rt/aio_cancel.c                               | 28 ++++++++++++------
>  rt/librt-compat.c                             | 29 +++++++++++++++++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 +++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/alpha/Versions        | 13 +++++++--
>  sysdeps/unix/sysv/linux/alpha/aio_cancel.c    | 22 +++++++-------
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++++
>  sysdeps/unix/sysv/linux/alpha/librt-compat.c  | 24 +++++++++++++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  5 +---
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 +++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 +++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 +++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 +++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 +++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 +++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 +++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 --
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 +++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 +++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 +++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 +++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 +++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 +++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 +++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 +++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 +++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 +++
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 +++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 +++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 --
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 +++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 +++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 +++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 +++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 +++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 +++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 +++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/sparc/Versions        | 11 ++++---
>  sysdeps/unix/sysv/linux/sparc/aio_cancel.c    | 22 +++++++-------
>  sysdeps/unix/sysv/linux/sparc/librt-compat.c  | 24 +++++++++++++++
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  6 ++++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  5 +---
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  5 +---
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 +++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 +++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
>  72 files changed, 284 insertions(+), 103 deletions(-)
>  create mode 100644 rt/librt-compat.c
>  create mode 100644 sysdeps/unix/sysv/linux/alpha/librt-compat.c
>  create mode 100644 sysdeps/unix/sysv/linux/sparc/librt-compat.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index ada87c845e..5534b4c9b3 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,7 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_cancel \
>    aio_error \
>    aio_fsync \
>    aio_read \
> @@ -38,6 +37,7 @@ librt-routines = \
>    aio_suspend \
>    aio_write \
>    aio_write64 \
> +  librt-compat \
>    lio_listio \
>    lio_listio64 \
>    mq_close \
> @@ -56,7 +56,10 @@ librt-routines = \
>    timer_gettime \
>    timer_settime \
>  
> +librt-shared-only-routines = librt-compat
> +
>  $(librt-routines-var) += \
> +  aio_cancel \
>    aio_misc \
>    aio_notify \
>    aio_sigqueue \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 2e991a9d93..402a1188e7 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -2,6 +2,8 @@ libc {
>    GLIBC_2.1 {
>  %if PTHREAD_IN_LIBC
>      aio_init;
> +    aio_cancel;
> +    aio_cancel64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -10,6 +12,8 @@ libc {
>    }
>    GLIBC_2.34 {
>  %if PTHREAD_IN_LIBC
> +    aio_cancel;
> +    aio_cancel64;
>      aio_init;
>  %endif
>      shm_open;
> @@ -31,8 +35,10 @@ libc {
>  }
>  librt {
>    GLIBC_2.1 {
> +%if !PTHREAD_IN_LIBC
>      aio_cancel;
>      aio_cancel64;
> +%endif
>      aio_error;
>      aio_error64;
>      aio_fsync;

Ok.

> diff --git a/rt/aio_cancel.c b/rt/aio_cancel.c
> index 63fd88f36c..5934205199 100644
> --- a/rt/aio_cancel.c
> +++ b/rt/aio_cancel.c
> @@ -35,23 +35,24 @@
>  #include <fcntl.h>
>  
>  #include <aio_misc.h>
> +#include <pthreadP.h>
>  
>  
>  int
> -aio_cancel (int fildes, struct aiocb *aiocbp)
> +__aio_cancel (int fildes, struct aiocb *aiocbp)
>  {
>    struct requestlist *req = NULL;
>    int result = AIO_ALLDONE;
>  
>    /* If fildes is invalid, error. */
> -  if (fcntl (fildes, F_GETFL) < 0)
> +  if (__fcntl (fildes, F_GETFL) < 0)
>      {
>        __set_errno (EBADF);
>        return -1;
>      }
>  
>    /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>    /* We are asked to cancel a specific AIO request.  */
>    if (aiocbp != NULL)
> @@ -60,7 +61,7 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
>  	 to look for the request block.  */
>        if (aiocbp->aio_fildes != fildes)
>  	{
> -	  pthread_mutex_unlock (&__aio_requests_mutex);
> +	  __pthread_mutex_unlock (&__aio_requests_mutex);
>  	  __set_errno (EINVAL);
>  	  return -1;
>  	}
> @@ -73,7 +74,7 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
>  	  if (req == NULL)
>  	    {
>  	    not_found:
> -	      pthread_mutex_unlock (&__aio_requests_mutex);
> +	      __pthread_mutex_unlock (&__aio_requests_mutex);
>  	      __set_errno (EINVAL);
>  	      return -1;
>  	    }
> @@ -147,11 +148,20 @@ aio_cancel (int fildes, struct aiocb *aiocbp)
>      }
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  
>    return result;
>  }
> -
> -#ifndef aio_cancel
> -weak_alias (aio_cancel, aio_cancel64)
> +#if PTHREAD_IN_LIBC
> +# ifndef __aio_cancel
> +versioned_symbol (libc, __aio_cancel, aio_cancel, GLIBC_2_34);
> +versioned_symbol (libc, __aio_cancel, aio_cancel64, GLIBC_2_34);
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_cancel, aio_cancel, GLIBC_2_1);
> +compat_symbol (librt, __aio_cancel, aio_cancel64, GLIBC_2_1);
> +#  endif
> +# endif /* __aio_cancel */
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_cancel, aio_cancel)
> +weak_alias (__aio_cancel, aio_cancel64)
>  #endif

Ok.

> diff --git a/rt/librt-compat.c b/rt/librt-compat.c
> new file mode 100644
> index 0000000000..7e5f1db940
> --- /dev/null
> +++ b/rt/librt-compat.c
> @@ -0,0 +1,29 @@
> +/* Placeholder definitions to pull in removed symbol versions.
> +   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/>.  */
> +
> +#if PTHREAD_IN_LIBC
> +# include <shlib-compat.h>
> +# include <sys/cdefs.h>
> +
> +void
> +attribute_compat_text_section
> +__attribute_used__
> +__librt_version_placeholder_1 (void)
> +{
> +}
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 1bc4ffccce..b0ead487fe 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -589,6 +589,8 @@ GLIBC_2.17 addseverity F
>  GLIBC_2.17 adjtime F
>  GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
> +GLIBC_2.17 aio_cancel F
> +GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2349,6 +2351,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 66dc3e4457..0f3a79e3a4 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_cancel F
> -GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index b113cb60e4..db6116a890 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -62,7 +62,12 @@ libc {
>      wordexp;
>    }
>    GLIBC_2.3 {
> -    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
> +    _sys_errlist;
> +    _sys_nerr;
> +    aio_cancel64;
> +    aio_cancel;
> +    sys_errlist;
> +    sys_nerr;
>    }
>    GLIBC_2.3.3 {
>      # Changed PTHREAD_STACK_MIN.
> @@ -81,6 +86,9 @@ libc {
>    GLIBC_2.27 {
>      getrlimit; setrlimit; getrlimit64; setrlimit64;
>    }
> +  GLIBC_2.34 {
> +    aio_cancel64;
> +  }
>    GLIBC_PRIVATE {
>      __libc_alpha_cache_shape;
>    }
> @@ -92,8 +100,7 @@ ld {
>  }
>  librt {
>    GLIBC_2.3 {
> -    # AIO functions.
> -    aio_cancel; aio_cancel64;
> +    __librt_version_placeholder;
>    }
>    GLIBC_2.3.3 {
>      # Changed timer_t.

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> index 9f69b080ed..6e4352a9a4 100644
> --- a/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> +++ b/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
> @@ -8,26 +8,28 @@
>  extern __typeof (aio_cancel) __new_aio_cancel;
>  extern __typeof (aio_cancel) __old_aio_cancel;
>  
> -#define aio_cancel	__new_aio_cancel
> +#define __aio_cancel	__new_aio_cancel
>  
>  #include <rt/aio_cancel.c>
>  
> -#undef aio_cancel
> -strong_alias (__new_aio_cancel, __new_aio_cancel64);
> -versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
> -versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
> +#undef __aio_cancel
> +versioned_symbol (libc, __new_aio_cancel, aio_cancel, GLIBC_2_34);
> +versioned_symbol (libc, __new_aio_cancel, aio_cancel64, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
> +compat_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
> +compat_symbol (librt, __new_aio_cancel, aio_cancel64, GLIBC_2_3);
> +#endif
>  
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
>  
>  #undef ECANCELED
> -#define aio_cancel	__old_aio_cancel
> +#define __aio_cancel	__old_aio_cancel
>  #define ECANCELED	125
>  
>  #include <rt/aio_cancel.c>
>  
> -#undef aio_cancel
> -strong_alias (__old_aio_cancel, __old_aio_cancel64);
> +#undef __aio_cancel
>  compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
> -compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
> +compat_symbol (librt, __old_aio_cancel, aio_cancel64, GLIBC_2_1);
>  
>  #endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 5f3bebef8c..0d621c3185 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1502,6 +1502,8 @@ GLIBC_2.1 _sys_siglist D 0x200
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 adjtime F
>  GLIBC_2.1 adjtimex F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2202,6 +2204,8 @@ GLIBC_2.3 __uselocale F
>  GLIBC_2.3 __wcsftime_l F
>  GLIBC_2.3 _sys_errlist D 0x420
>  GLIBC_2.3 _sys_nerr D 0x4
> +GLIBC_2.3 aio_cancel F
> +GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 duplocale F
>  GLIBC_2.3 fgetxattr F
>  GLIBC_2.3 flistxattr F
> @@ -2442,6 +2446,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F


Ok.


> diff --git a/sysdeps/unix/sysv/linux/alpha/librt-compat.c b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
> new file mode 100644
> index 0000000000..96e92e1637
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/alpha/librt-compat.c
> @@ -0,0 +1,24 @@
> +/* Placeholder definitions to pull in removed symbol versions.  alpha 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>
> +
> +#if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_3);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 94f5ca8b6f..c7e49f9a98 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> @@ -19,8 +17,7 @@ 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.3 aio_cancel F
> -GLIBC_2.3 aio_cancel64 F
> +GLIBC_2.3 __librt_version_placeholder F
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 24d3a3673c..ce4d40c70f 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -550,6 +550,8 @@ GLIBC_2.32 addmntent F
>  GLIBC_2.32 addseverity F
>  GLIBC_2.32 adjtime F
>  GLIBC_2.32 adjtimex F
> +GLIBC_2.32 aio_cancel F
> +GLIBC_2.32 aio_cancel64 F
>  GLIBC_2.32 aio_init F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
> @@ -2108,6 +2110,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index e53772e428..ca2aac8d45 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_cancel F
> -GLIBC_2.32 aio_cancel64 F
>  GLIBC_2.32 aio_error F
>  GLIBC_2.32 aio_error64 F
>  GLIBC_2.32 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 582aa645c0..85526095ec 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -278,6 +278,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -982,6 +984,8 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_cancel F
> +GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 3aa50aa219..f13a5f43f2 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_cancel F
> -GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 400eae9ab0..d721446d49 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -275,6 +275,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -979,6 +981,8 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_cancel F
> +GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 3aa50aa219..f13a5f43f2 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_cancel F
> -GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 4cd189d5db..912b71d360 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -564,6 +564,8 @@ GLIBC_2.29 addmntent F
>  GLIBC_2.29 addseverity F
>  GLIBC_2.29 adjtime F
>  GLIBC_2.29 adjtimex F
> +GLIBC_2.29 aio_cancel F
> +GLIBC_2.29 aio_cancel64 F
>  GLIBC_2.29 aio_init F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
> @@ -2368,6 +2370,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 640230cfc0..3834cf1838 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_cancel F
> -GLIBC_2.29 aio_cancel64 F
>  GLIBC_2.29 aio_error F
>  GLIBC_2.29 aio_error64 F
>  GLIBC_2.29 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index ede6bee0cd..b1392524cd 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -3,6 +3,8 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2322,6 +2324,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 17063aaaf9..89c0531bff 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1475,6 +1475,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2506,6 +2508,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 4991b80dd1..69454c38aa 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -3,6 +3,8 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2282,6 +2284,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 2c97c02f21..cfe45b0383 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index c1d7edf1f9..aab8d3a3dc 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -279,6 +279,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -970,6 +972,8 @@ GLIBC_2.4 addseverity F
>  GLIBC_2.4 adjtime F
>  GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
> +GLIBC_2.4 aio_cancel F
> +GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 3aa50aa219..f13a5f43f2 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_cancel F
> -GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 725280a9db..8308c4e15b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1473,6 +1473,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2449,6 +2451,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index fe9a9c2f09..ed3bbb44ac 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -591,6 +591,8 @@ GLIBC_2.18 addseverity F
>  GLIBC_2.18 adjtime F
>  GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
> +GLIBC_2.18 aio_cancel F
> +GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2419,6 +2421,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 679050b4b7..276c6eab44 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_cancel F
> -GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 8db8d27e29..909b471383 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -591,6 +591,8 @@ GLIBC_2.18 addseverity F
>  GLIBC_2.18 adjtime F
>  GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
> +GLIBC_2.18 aio_cancel F
> +GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2416,6 +2418,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 679050b4b7..276c6eab44 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_cancel F
> -GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index b6cd21ace7..c5569a40ad 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1651,6 +1651,8 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_cancel F
> +GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2414,6 +2416,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 617d124234..d8544013dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_cancel F
> -GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 65d0dcbe04..56163ef271 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1649,6 +1649,8 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_cancel F
> +GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2412,6 +2414,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index a2b2e09a63..da4a1dc99e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1650,6 +1650,8 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x100
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_cancel F
> +GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2420,6 +2422,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 617d124234..d8544013dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_cancel F
> -GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 78b96a7119..1843d27812 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1646,6 +1646,8 @@ GLIBC_2.2 _sys_nerr D 0x4
>  GLIBC_2.2 _sys_siglist D 0x200
>  GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
> +GLIBC_2.2 aio_cancel F
> +GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2338,6 +2340,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 40749a395c..c9e82563c1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_cancel F
> -GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 98943b6041..c0f6dcf1e3 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -633,6 +633,8 @@ GLIBC_2.21 addseverity F
>  GLIBC_2.21 adjtime F
>  GLIBC_2.21 adjtimex F
>  GLIBC_2.21 advance F
> +GLIBC_2.21 aio_cancel F
> +GLIBC_2.21 aio_cancel64 F
>  GLIBC_2.21 aio_init F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
> @@ -2458,6 +2460,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index de354a6bb8..1edad5b4cb 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_cancel F
> -GLIBC_2.21 aio_cancel64 F
>  GLIBC_2.21 aio_error F
>  GLIBC_2.21 aio_error64 F
>  GLIBC_2.21 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index f5d5c03eb3..130ab63a59 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1480,6 +1480,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2476,6 +2478,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 6e99869e4c..1b83ce1f6e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1480,6 +1480,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2509,6 +2511,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 205768e241..a24bd98fbe 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -633,6 +633,8 @@ GLIBC_2.3 addseverity F
>  GLIBC_2.3 adjtime F
>  GLIBC_2.3 adjtimex F
>  GLIBC_2.3 advance F
> +GLIBC_2.3 aio_cancel F
> +GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 aio_init F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
> @@ -2246,6 +2248,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 3607639c50..1943e645ed 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_cancel F
> -GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 aio_error F
>  GLIBC_2.3 aio_error64 F
>  GLIBC_2.3 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index fccca7ccc6..bd0b3dd94f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -677,6 +677,8 @@ GLIBC_2.17 addseverity F
>  GLIBC_2.17 adjtime F
>  GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
> +GLIBC_2.17 aio_cancel F
> +GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2545,6 +2547,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 66dc3e4457..0f3a79e3a4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_cancel F
> -GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 1de14d1195..b1d1dac1b6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -544,6 +544,8 @@ GLIBC_2.33 addmntent F
>  GLIBC_2.33 addseverity F
>  GLIBC_2.33 adjtime F
>  GLIBC_2.33 adjtimex F
> +GLIBC_2.33 aio_cancel F
> +GLIBC_2.33 aio_cancel64 F
>  GLIBC_2.33 aio_init F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
> @@ -2110,6 +2112,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index c588e04ae0..3a0bb5db43 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_cancel F
> -GLIBC_2.33 aio_cancel64 F
>  GLIBC_2.33 aio_error F
>  GLIBC_2.33 aio_error64 F
>  GLIBC_2.33 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index fd243b77de..2acb65c58c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -570,6 +570,8 @@ GLIBC_2.27 addmntent F
>  GLIBC_2.27 addseverity F
>  GLIBC_2.27 adjtime F
>  GLIBC_2.27 adjtimex F
> +GLIBC_2.27 aio_cancel F
> +GLIBC_2.27 aio_cancel64 F
>  GLIBC_2.27 aio_init F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
> @@ -2310,6 +2312,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 4be13a5327..7f78e1b461 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_cancel F
> -GLIBC_2.27 aio_cancel64 F
>  GLIBC_2.27 aio_error F
>  GLIBC_2.27 aio_error64 F
>  GLIBC_2.27 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 5a9ccc644b..36b5ff2685 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1472,6 +1472,8 @@ GLIBC_2.1 _sys_errlist D 0x1f4
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2474,6 +2476,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 4b336dcbae..ed2a90f013 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -570,6 +570,8 @@ GLIBC_2.2 addseverity F
>  GLIBC_2.2 adjtime F
>  GLIBC_2.2 adjtimex F
>  GLIBC_2.2 advance F
> +GLIBC_2.2 aio_cancel F
> +GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
> @@ -2283,6 +2285,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 97673a21d4..7948f84cec 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_cancel F
> -GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 702fc7cd1c..b8eb5d98d7 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2329,6 +2331,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index cca5fe2265..5f4efe2398 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2326,6 +2328,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 0114c42067..172d23f5c9 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F


Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions
> index f1027603a4..f127bdf0b8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/Versions
> @@ -6,7 +6,12 @@ libc {
>      _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
>    }
>    GLIBC_2.3 {
> -    _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
> +    _sys_errlist;
> +    _sys_nerr;
> +    aio_cancel64;
> +    aio_cancel;
> +    sys_errlist;
> +    sys_nerr;
>    }
>    GLIBC_2.3.3 {
>      # Changed PTHREAD_STACK_MIN.
> @@ -29,10 +34,8 @@ libc {
>      __vdso_clock_gettime;
>    }
>  }
> -
>  librt {
>    GLIBC_2.3 {
> -    # AIO functions.
> -    aio_cancel; aio_cancel64;
> +    __librt_version_placeholder;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> index 9f69b080ed..6e4352a9a4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> +++ b/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
> @@ -8,26 +8,28 @@
>  extern __typeof (aio_cancel) __new_aio_cancel;
>  extern __typeof (aio_cancel) __old_aio_cancel;
>  
> -#define aio_cancel	__new_aio_cancel
> +#define __aio_cancel	__new_aio_cancel
>  
>  #include <rt/aio_cancel.c>
>  
> -#undef aio_cancel
> -strong_alias (__new_aio_cancel, __new_aio_cancel64);
> -versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
> -versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
> +#undef __aio_cancel
> +versioned_symbol (libc, __new_aio_cancel, aio_cancel, GLIBC_2_34);
> +versioned_symbol (libc, __new_aio_cancel, aio_cancel64, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
> +compat_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
> +compat_symbol (librt, __new_aio_cancel, aio_cancel64, GLIBC_2_3);
> +#endif
>  
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
>  
>  #undef ECANCELED
> -#define aio_cancel	__old_aio_cancel
> +#define __aio_cancel	__old_aio_cancel
>  #define ECANCELED	125
>  
>  #include <rt/aio_cancel.c>
>  
> -#undef aio_cancel
> -strong_alias (__old_aio_cancel, __old_aio_cancel64);
> +#undef __aio_cancel
>  compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
> -compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
> +compat_symbol (librt, __old_aio_cancel, aio_cancel64, GLIBC_2_1);
>  
>  #endif


Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/librt-compat.c b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
> new file mode 100644
> index 0000000000..a3862ba127
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/sparc/librt-compat.c
> @@ -0,0 +1,24 @@
> +/* Placeholder definitions to pull in removed symbol versions.  sparc 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>
> +
> +#if SHLIB_COMPAT (librt, GLIBC_2_3, GLIBC_2_34)
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_3);
> +#endif


Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 937efaaba4..82439ec5c4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1474,6 +1474,8 @@ GLIBC_2.1 _sys_errlist D 0x1fc
>  GLIBC_2.1 _sys_nerr D 0x4
>  GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2165,6 +2167,8 @@ GLIBC_2.3 __uselocale F
>  GLIBC_2.3 __wcsftime_l F
>  GLIBC_2.3 _sys_errlist D 0x200
>  GLIBC_2.3 _sys_nerr D 0x4
> +GLIBC_2.3 aio_cancel F
> +GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 duplocale F
>  GLIBC_2.3 fgetxattr F
>  GLIBC_2.3 flistxattr F
> @@ -2467,6 +2471,8 @@ GLIBC_2.34 __wait3_time64 F
>  GLIBC_2.34 __wait4_time64 F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index e4e4569d81..61cc93c180 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> @@ -19,8 +17,7 @@ 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.3 aio_cancel F
> -GLIBC_2.3 aio_cancel64 F
> +GLIBC_2.3 __librt_version_placeholder F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 47f96b1480..8868399fce 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -7,6 +7,8 @@ GLIBC_2.0 dlclose F
>  GLIBC_2.0 dlerror F
>  GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
> +GLIBC_2.1 aio_cancel F
> +GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2091,6 +2093,8 @@ GLIBC_2.3 __uselocale F
>  GLIBC_2.3 __wcsftime_l F
>  GLIBC_2.3 _sys_errlist D 0x400
>  GLIBC_2.3 _sys_nerr D 0x4
> +GLIBC_2.3 aio_cancel F
> +GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 duplocale F
>  GLIBC_2.3 fgetxattr F
>  GLIBC_2.3 flistxattr F
> @@ -2303,6 +2307,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 94f5ca8b6f..c7e49f9a98 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_cancel F
> -GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
> @@ -19,8 +17,7 @@ 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.3 aio_cancel F
> -GLIBC_2.3 aio_cancel64 F
> +GLIBC_2.3 __librt_version_placeholder F
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.3 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 4ff62311e9..9ee8856769 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -559,6 +559,8 @@ GLIBC_2.2.5 addseverity F
>  GLIBC_2.2.5 adjtime F
>  GLIBC_2.2.5 adjtimex F
>  GLIBC_2.2.5 advance F
> +GLIBC_2.2.5 aio_cancel F
> +GLIBC_2.2.5 aio_cancel64 F
>  GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
> @@ -2261,6 +2263,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index bac8c74b5f..1853412bcc 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_cancel F
> -GLIBC_2.2.5 aio_cancel64 F
>  GLIBC_2.2.5 aio_error F
>  GLIBC_2.2.5 aio_error64 F
>  GLIBC_2.2.5 aio_fsync F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index e34873201d..beac8c71ba 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -592,6 +592,8 @@ GLIBC_2.16 addseverity F
>  GLIBC_2.16 adjtime F
>  GLIBC_2.16 adjtimex F
>  GLIBC_2.16 advance F
> +GLIBC_2.16 aio_cancel F
> +GLIBC_2.16 aio_cancel64 F
>  GLIBC_2.16 aio_init F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
> @@ -2364,6 +2366,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
> +GLIBC_2.34 aio_cancel F
> +GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 2e432fe7d6..310b1bf338 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_cancel F
> -GLIBC_2.16 aio_cancel64 F
>  GLIBC_2.16 aio_error F
>  GLIBC_2.16 aio_error64 F
>  GLIBC_2.16 aio_fsync F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 12/34] Linux: Move aio_error, aio_error64 into libc
  2021-06-17 18:57 ` [PATCH 12/34] Linux: Move aio_error, aio_error64 " Florian Weimer
@ 2021-06-23 17:43   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 17:43 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks. Just a small nit below.

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

> ---
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  6 +++++-
>  rt/aio_error.c                                | 21 ++++++++++++++-----
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 --
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 --
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 --
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  2 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 --
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
>  65 files changed, 150 insertions(+), 67 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 5534b4c9b3..1b36886dd6 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,7 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_error \
>    aio_fsync \
>    aio_read \
>    aio_read64 \
> @@ -60,6 +59,7 @@ librt-shared-only-routines = librt-compat
>  
>  $(librt-routines-var) += \
>    aio_cancel \
> +  aio_error \
>    aio_misc \
>    aio_notify \
>    aio_sigqueue \

Ok

> diff --git a/rt/Versions b/rt/Versions
> index 402a1188e7..aae1d3c47d 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -4,6 +4,8 @@ libc {
>      aio_init;
>      aio_cancel;
>      aio_cancel64;
> +    aio_error;
> +    aio_error64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -15,6 +17,8 @@ libc {
>      aio_cancel;
>      aio_cancel64;
>      aio_init;
> +    aio_error;
> +    aio_error64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -38,9 +42,9 @@ librt {
>  %if !PTHREAD_IN_LIBC
>      aio_cancel;
>      aio_cancel64;
> -%endif
>      aio_error;
>      aio_error64;
> +%endif
>      aio_fsync;
>      aio_fsync64;
>  %if !PTHREAD_IN_LIBC

Ok

> diff --git a/rt/aio_error.c b/rt/aio_error.c
> index ed664ae0ef..ae5a1f8cc5 100644
> --- a/rt/aio_error.c
> +++ b/rt/aio_error.c
> @@ -29,20 +29,31 @@
>  #undef aio_error64
>  
>  #include <aio_misc.h>
> -
> +#include <pthreadP.h>
> +#include <shlib-compat.h>
>  
>  int
> -aio_error (const struct aiocb *aiocbp)
> +__aio_error (const struct aiocb *aiocbp)
>  {
>    int ret;
>  
>    /* Acquire the mutex to make sure all operations for this request are
>       complete.  */
> -  pthread_mutex_lock(&__aio_requests_mutex);
> +  __pthread_mutex_lock(&__aio_requests_mutex);
>    ret = aiocbp->__error_code;
> -  pthread_mutex_unlock(&__aio_requests_mutex);
> +  __pthread_mutex_unlock(&__aio_requests_mutex);
>  
>    return ret;
>  }
>  

Space before '('.

> -weak_alias (aio_error, aio_error64)
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_error, aio_error, GLIBC_2_34);
> +versioned_symbol (libc, __aio_error, aio_error64, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_error, aio_error, GLIBC_2_1);
> +compat_symbol (librt, __aio_error, aio_error64, GLIBC_2_1);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_error, aio_error)
> +weak_alias (__aio_error, aio_error64)
> +#endif /* !PTHREAD_IN_LIBC */

Ok

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index b0ead487fe..e19168ddc5 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -591,6 +591,8 @@ GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
>  GLIBC_2.17 aio_cancel F
>  GLIBC_2.17 aio_cancel64 F
> +GLIBC_2.17 aio_error F
> +GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2353,6 +2355,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 0f3a79e3a4..39e753fdde 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_error F
> -GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 0d621c3185..4efbbef2dc 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1504,6 +1504,8 @@ GLIBC_2.1 adjtime F
>  GLIBC_2.1 adjtimex F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2448,6 +2450,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index c7e49f9a98..09ba914d65 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index ce4d40c70f..60fec8ba00 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -552,6 +552,8 @@ GLIBC_2.32 adjtime F
>  GLIBC_2.32 adjtimex F
>  GLIBC_2.32 aio_cancel F
>  GLIBC_2.32 aio_cancel64 F
> +GLIBC_2.32 aio_error F
> +GLIBC_2.32 aio_error64 F
>  GLIBC_2.32 aio_init F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
> @@ -2112,6 +2114,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index ca2aac8d45..678bd29799 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_error F
> -GLIBC_2.32 aio_error64 F
>  GLIBC_2.32 aio_fsync F
>  GLIBC_2.32 aio_fsync64 F
>  GLIBC_2.32 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 85526095ec..1810ff85ca 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -280,6 +280,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -986,6 +988,8 @@ GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
>  GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
> +GLIBC_2.4 aio_error F
> +GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index f13a5f43f2..07178bcea0 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_error F
> -GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index d721446d49..5f6c562a90 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -277,6 +277,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -983,6 +985,8 @@ GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
>  GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
> +GLIBC_2.4 aio_error F
> +GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index f13a5f43f2..07178bcea0 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_error F
> -GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 912b71d360..b8e78b1016 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -566,6 +566,8 @@ GLIBC_2.29 adjtime F
>  GLIBC_2.29 adjtimex F
>  GLIBC_2.29 aio_cancel F
>  GLIBC_2.29 aio_cancel64 F
> +GLIBC_2.29 aio_error F
> +GLIBC_2.29 aio_error64 F
>  GLIBC_2.29 aio_init F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
> @@ -2372,6 +2374,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 3834cf1838..e39a91e633 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_error F
> -GLIBC_2.29 aio_error64 F
>  GLIBC_2.29 aio_fsync F
>  GLIBC_2.29 aio_fsync64 F
>  GLIBC_2.29 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index b1392524cd..34516ba43e 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -5,6 +5,8 @@ GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2326,6 +2328,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 89c0531bff..f4035eed4a 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1477,6 +1477,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2510,6 +2512,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 69454c38aa..3f6a281098 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -5,6 +5,8 @@ GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2286,6 +2288,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index cfe45b0383..68b34cf0f6 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index aab8d3a3dc..3c017951e3 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -281,6 +281,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -974,6 +976,8 @@ GLIBC_2.4 adjtimex F
>  GLIBC_2.4 advance F
>  GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
> +GLIBC_2.4 aio_error F
> +GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index f13a5f43f2..07178bcea0 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_error F
> -GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 8308c4e15b..6922e2ae69 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1475,6 +1475,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2453,6 +2455,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index ed3bbb44ac..315c73587e 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -593,6 +593,8 @@ GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
>  GLIBC_2.18 aio_cancel F
>  GLIBC_2.18 aio_cancel64 F
> +GLIBC_2.18 aio_error F
> +GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2423,6 +2425,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 276c6eab44..e9e0c0a91f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_error F
> -GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 909b471383..ce2a4eca6d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -593,6 +593,8 @@ GLIBC_2.18 adjtimex F
>  GLIBC_2.18 advance F
>  GLIBC_2.18 aio_cancel F
>  GLIBC_2.18 aio_cancel64 F
> +GLIBC_2.18 aio_error F
> +GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2420,6 +2422,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 276c6eab44..e9e0c0a91f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_error F
> -GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index c5569a40ad..83ea40ad7f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1653,6 +1653,8 @@ GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
>  GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
> +GLIBC_2.2 aio_error F
> +GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2418,6 +2420,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index d8544013dd..f84f4e8cf2 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_error F
> -GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 56163ef271..e3a34b81a5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1651,6 +1651,8 @@ GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
>  GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
> +GLIBC_2.2 aio_error F
> +GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2416,6 +2418,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index da4a1dc99e..a60151e94c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1652,6 +1652,8 @@ GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
>  GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
> +GLIBC_2.2 aio_error F
> +GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2424,6 +2426,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index d8544013dd..f84f4e8cf2 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_error F
> -GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 1843d27812..d9d5dfc258 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1648,6 +1648,8 @@ GLIBC_2.2 _test_and_set F
>  GLIBC_2.2 addseverity F
>  GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
> +GLIBC_2.2 aio_error F
> +GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2342,6 +2344,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index c9e82563c1..fbd1bb1039 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_error F
> -GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index c0f6dcf1e3..11b8d3d035 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -635,6 +635,8 @@ GLIBC_2.21 adjtimex F
>  GLIBC_2.21 advance F
>  GLIBC_2.21 aio_cancel F
>  GLIBC_2.21 aio_cancel64 F
> +GLIBC_2.21 aio_error F
> +GLIBC_2.21 aio_error64 F
>  GLIBC_2.21 aio_init F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
> @@ -2462,6 +2464,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 1edad5b4cb..5da84ad590 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_error F
> -GLIBC_2.21 aio_error64 F
>  GLIBC_2.21 aio_fsync F
>  GLIBC_2.21 aio_fsync64 F
>  GLIBC_2.21 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 130ab63a59..53bfeff0c8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1482,6 +1482,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2480,6 +2482,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 1b83ce1f6e..354a8c5e1e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1482,6 +1482,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2513,6 +2515,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index a24bd98fbe..3c82273e63 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -635,6 +635,8 @@ GLIBC_2.3 adjtimex F
>  GLIBC_2.3 advance F
>  GLIBC_2.3 aio_cancel F
>  GLIBC_2.3 aio_cancel64 F
> +GLIBC_2.3 aio_error F
> +GLIBC_2.3 aio_error64 F
>  GLIBC_2.3 aio_init F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
> @@ -2250,6 +2252,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 1943e645ed..66926097e0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_error F
> -GLIBC_2.3 aio_error64 F
>  GLIBC_2.3 aio_fsync F
>  GLIBC_2.3 aio_fsync64 F
>  GLIBC_2.3 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index bd0b3dd94f..0d9d8ed602 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -679,6 +679,8 @@ GLIBC_2.17 adjtimex F
>  GLIBC_2.17 advance F
>  GLIBC_2.17 aio_cancel F
>  GLIBC_2.17 aio_cancel64 F
> +GLIBC_2.17 aio_error F
> +GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2549,6 +2551,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 0f3a79e3a4..39e753fdde 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_error F
> -GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index b1d1dac1b6..4ff01efcca 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -546,6 +546,8 @@ GLIBC_2.33 adjtime F
>  GLIBC_2.33 adjtimex F
>  GLIBC_2.33 aio_cancel F
>  GLIBC_2.33 aio_cancel64 F
> +GLIBC_2.33 aio_error F
> +GLIBC_2.33 aio_error64 F
>  GLIBC_2.33 aio_init F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
> @@ -2114,6 +2116,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 3a0bb5db43..be604bb966 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_error F
> -GLIBC_2.33 aio_error64 F
>  GLIBC_2.33 aio_fsync F
>  GLIBC_2.33 aio_fsync64 F
>  GLIBC_2.33 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 2acb65c58c..cdcc2fe800 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -572,6 +572,8 @@ GLIBC_2.27 adjtime F
>  GLIBC_2.27 adjtimex F
>  GLIBC_2.27 aio_cancel F
>  GLIBC_2.27 aio_cancel64 F
> +GLIBC_2.27 aio_error F
> +GLIBC_2.27 aio_error64 F
>  GLIBC_2.27 aio_init F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
> @@ -2314,6 +2316,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 7f78e1b461..541ef4aa42 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_error F
> -GLIBC_2.27 aio_error64 F
>  GLIBC_2.27 aio_fsync F
>  GLIBC_2.27 aio_fsync64 F
>  GLIBC_2.27 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 36b5ff2685..3372cb7340 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1474,6 +1474,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2478,6 +2480,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index ed2a90f013..a7e74a0d44 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -572,6 +572,8 @@ GLIBC_2.2 adjtimex F
>  GLIBC_2.2 advance F
>  GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
> +GLIBC_2.2 aio_error F
> +GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
> @@ -2287,6 +2289,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 7948f84cec..40a823f6de 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_error F
> -GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index b8eb5d98d7..c856450c1f 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2333,6 +2335,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 5f4efe2398..459119e6de 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2330,6 +2332,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 172d23f5c9..07dbd9a87b 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 82439ec5c4..c78e328a0f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1476,6 +1476,8 @@ GLIBC_2.1 _sys_siglist D 0x100
>  GLIBC_2.1 addseverity F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2473,6 +2475,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 61cc93c180..e6990a5c82 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 8868399fce..3b4ef5f093 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -9,6 +9,8 @@ GLIBC_2.0 dlopen F
>  GLIBC_2.0 dlsym F
>  GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
> +GLIBC_2.1 aio_error F
> +GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2309,6 +2311,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index c7e49f9a98..09ba914d65 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_error F
> -GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 9ee8856769..1d6e7030fc 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -561,6 +561,8 @@ GLIBC_2.2.5 adjtimex F
>  GLIBC_2.2.5 advance F
>  GLIBC_2.2.5 aio_cancel F
>  GLIBC_2.2.5 aio_cancel64 F
> +GLIBC_2.2.5 aio_error F
> +GLIBC_2.2.5 aio_error64 F
>  GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
> @@ -2265,6 +2267,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 1853412bcc..ef23d67e9d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_error F
> -GLIBC_2.2.5 aio_error64 F
>  GLIBC_2.2.5 aio_fsync F
>  GLIBC_2.2.5 aio_fsync64 F
>  GLIBC_2.2.5 aio_read F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index beac8c71ba..1480d7ada7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -594,6 +594,8 @@ GLIBC_2.16 adjtimex F
>  GLIBC_2.16 advance F
>  GLIBC_2.16 aio_cancel F
>  GLIBC_2.16 aio_cancel64 F
> +GLIBC_2.16 aio_error F
> +GLIBC_2.16 aio_error64 F
>  GLIBC_2.16 aio_init F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
> @@ -2368,6 +2370,8 @@ GLIBC_2.34 _pthread_cleanup_pop F
>  GLIBC_2.34 _pthread_cleanup_push F
>  GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
> +GLIBC_2.34 aio_error F
> +GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 310b1bf338..629dd4fd75 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_error F
> -GLIBC_2.16 aio_error64 F
>  GLIBC_2.16 aio_fsync F
>  GLIBC_2.16 aio_fsync64 F
>  GLIBC_2.16 aio_read F
> 


Ok

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 into libc
  2021-06-17 18:57 ` [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
@ 2021-06-23 17:46   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 17:46 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:57, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  rt/Makefile                                    |  2 +-
>  rt/Versions                                    |  6 ++++--
>  rt/aio_fsync.c                                 | 18 ++++++++++++++----
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/arc/libc.abilist       |  4 ++++
>  sysdeps/unix/sysv/linux/arc/librt.abilist      |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/csky/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/i386/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist     |  2 --
>  .../unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
>  .../sysv/linux/m68k/coldfire/librt.abilist     |  2 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist  |  2 --
>  .../unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
>  .../sysv/linux/microblaze/be/librt.abilist     |  2 --
>  .../unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
>  .../sysv/linux/microblaze/le/librt.abilist     |  2 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/mips/mips32/librt.abilist  |  2 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist  |  4 ++++
>  .../sysv/linux/mips/mips64/n32/libc.abilist    |  4 ++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist   |  2 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist    |  4 ++++
>  .../sysv/linux/mips/mips64/n64/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/nios2/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist    |  2 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist   |  4 ++++
>  .../sysv/linux/powerpc/powerpc32/librt.abilist |  2 --
>  .../linux/powerpc/powerpc32/nofpu/libc.abilist |  4 ++++
>  .../linux/powerpc/powerpc64/be/libc.abilist    |  4 ++++
>  .../linux/powerpc/powerpc64/be/librt.abilist   |  2 --
>  .../linux/powerpc/powerpc64/le/libc.abilist    |  4 ++++
>  .../linux/powerpc/powerpc64/le/librt.abilist   |  2 --
>  .../unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist   |  2 --
>  .../unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist   |  2 --
>  .../unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
>  .../unix/sysv/linux/s390/s390-32/librt.abilist |  2 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
>  .../unix/sysv/linux/s390/s390-64/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist    |  2 --
>  .../unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
>  .../sysv/linux/sparc/sparc32/librt.abilist     |  2 --
>  .../unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
>  .../sysv/linux/sparc/sparc64/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist |  4 ++++
>  .../unix/sysv/linux/x86_64/64/librt.abilist    |  2 --
>  .../unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist   |  2 --
>  65 files changed, 147 insertions(+), 67 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 1b36886dd6..ca8c818a25 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,7 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_fsync \
>    aio_read \
>    aio_read64 \
>    aio_return \
> @@ -60,6 +59,7 @@ librt-shared-only-routines = librt-compat
>  $(librt-routines-var) += \
>    aio_cancel \
>    aio_error \
> +  aio_fsync \
>    aio_misc \
>    aio_notify \
>    aio_sigqueue \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index aae1d3c47d..1a0aa77fd0 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -6,6 +6,8 @@ libc {
>      aio_cancel64;
>      aio_error;
>      aio_error64;
> +    aio_fsync;
> +    aio_fsync64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -19,6 +21,8 @@ libc {
>      aio_init;
>      aio_error;
>      aio_error64;
> +    aio_fsync;
> +    aio_fsync64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -44,10 +48,8 @@ librt {
>      aio_cancel64;
>      aio_error;
>      aio_error64;
> -%endif
>      aio_fsync;
>      aio_fsync64;
> -%if !PTHREAD_IN_LIBC
>      aio_init;
>  %endif
>      aio_read;

Ok.

> diff --git a/rt/aio_fsync.c b/rt/aio_fsync.c
> index 5a52e2fec0..73b906a1e2 100644
> --- a/rt/aio_fsync.c
> +++ b/rt/aio_fsync.c
> @@ -31,10 +31,10 @@
>  #include <fcntl.h>
>  
>  #include <aio_misc.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -aio_fsync (int op, struct aiocb *aiocbp)
> +__aio_fsync (int op, struct aiocb *aiocbp)
>  {
>    if (op != O_DSYNC && __builtin_expect (op != O_SYNC, 0))
>      {
> @@ -43,7 +43,7 @@ aio_fsync (int op, struct aiocb *aiocbp)
>      }
>  
>    /* Verify that this is an open file descriptor.  */
> -  if (__glibc_unlikely (fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
> +  if (__glibc_unlikely (__fcntl (aiocbp->aio_fildes, F_GETFL) == -1))
>      {
>        __set_errno (EBADF);
>        return -1;
> @@ -54,4 +54,14 @@ aio_fsync (int op, struct aiocb *aiocbp)
>  	  ? -1 : 0);
>  }
>  
> -weak_alias (aio_fsync, aio_fsync64)
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_fsync, aio_fsync, GLIBC_2_34);
> +versioned_symbol (libc, __aio_fsync, aio_fsync64, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_fsync, aio_fsync, GLIBC_2_1);
> +compat_symbol (librt, __aio_fsync, aio_fsync64, GLIBC_2_1);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_fsync, aio_fsync)
> +weak_alias (__aio_fsync, aio_fsync64)
> +#endif /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index e19168ddc5..cf141fdf08 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -593,6 +593,8 @@ GLIBC_2.17 aio_cancel F
>  GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
> +GLIBC_2.17 aio_fsync F
> +GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2357,6 +2359,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 39e753fdde..1519e07346 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_fsync F
> -GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 4efbbef2dc..8d58f3ea87 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1506,6 +1506,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2452,6 +2454,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 09ba914d65..f4dd36f97b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 60fec8ba00..7579936aca 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -554,6 +554,8 @@ GLIBC_2.32 aio_cancel F
>  GLIBC_2.32 aio_cancel64 F
>  GLIBC_2.32 aio_error F
>  GLIBC_2.32 aio_error64 F
> +GLIBC_2.32 aio_fsync F
> +GLIBC_2.32 aio_fsync64 F
>  GLIBC_2.32 aio_init F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
> @@ -2116,6 +2118,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 678bd29799..15b9acf33c 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_fsync F
> -GLIBC_2.32 aio_fsync64 F
>  GLIBC_2.32 aio_read F
>  GLIBC_2.32 aio_read64 F
>  GLIBC_2.32 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 1810ff85ca..566d18d20a 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -282,6 +282,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -990,6 +992,8 @@ GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
> +GLIBC_2.4 aio_fsync F
> +GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 07178bcea0..1fa78d6811 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_fsync F
> -GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 5f6c562a90..40da72fe92 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -279,6 +279,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -987,6 +989,8 @@ GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
> +GLIBC_2.4 aio_fsync F
> +GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 07178bcea0..1fa78d6811 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_fsync F
> -GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index b8e78b1016..b0e1eab37e 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -568,6 +568,8 @@ GLIBC_2.29 aio_cancel F
>  GLIBC_2.29 aio_cancel64 F
>  GLIBC_2.29 aio_error F
>  GLIBC_2.29 aio_error64 F
> +GLIBC_2.29 aio_fsync F
> +GLIBC_2.29 aio_fsync64 F
>  GLIBC_2.29 aio_init F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
> @@ -2376,6 +2378,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index e39a91e633..9c3edc9f2f 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_fsync F
> -GLIBC_2.29 aio_fsync64 F
>  GLIBC_2.29 aio_read F
>  GLIBC_2.29 aio_read64 F
>  GLIBC_2.29 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 34516ba43e..463b498665 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -7,6 +7,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2330,6 +2332,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index f4035eed4a..2015282000 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1479,6 +1479,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2514,6 +2516,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 3f6a281098..f83ba75cac 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -7,6 +7,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2290,6 +2292,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 68b34cf0f6..38dd6dfb53 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 3c017951e3..a0ca9ddc48 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -283,6 +283,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> @@ -978,6 +980,8 @@ GLIBC_2.4 aio_cancel F
>  GLIBC_2.4 aio_cancel64 F
>  GLIBC_2.4 aio_error F
>  GLIBC_2.4 aio_error64 F
> +GLIBC_2.4 aio_fsync F
> +GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 07178bcea0..1fa78d6811 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_fsync F
> -GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 6922e2ae69..bef73ca536 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1477,6 +1477,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2457,6 +2459,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 315c73587e..1f2c7f0fd9 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -595,6 +595,8 @@ GLIBC_2.18 aio_cancel F
>  GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
> +GLIBC_2.18 aio_fsync F
> +GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2427,6 +2429,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index e9e0c0a91f..87eeccd69c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_fsync F
> -GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index ce2a4eca6d..191db5f985 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -595,6 +595,8 @@ GLIBC_2.18 aio_cancel F
>  GLIBC_2.18 aio_cancel64 F
>  GLIBC_2.18 aio_error F
>  GLIBC_2.18 aio_error64 F
> +GLIBC_2.18 aio_fsync F
> +GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
> @@ -2424,6 +2426,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index e9e0c0a91f..87eeccd69c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_fsync F
> -GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 83ea40ad7f..5eb630a9f5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1655,6 +1655,8 @@ GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
> +GLIBC_2.2 aio_fsync F
> +GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2422,6 +2424,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index f84f4e8cf2..9e2c283942 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_fsync F
> -GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index e3a34b81a5..a1b8e02ca4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1653,6 +1653,8 @@ GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
> +GLIBC_2.2 aio_fsync F
> +GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2420,6 +2422,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index a60151e94c..dd33f448b7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1654,6 +1654,8 @@ GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
> +GLIBC_2.2 aio_fsync F
> +GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2428,6 +2430,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index f84f4e8cf2..9e2c283942 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_fsync F
> -GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index d9d5dfc258..efda95dd32 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1650,6 +1650,8 @@ GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
> +GLIBC_2.2 aio_fsync F
> +GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
> @@ -2346,6 +2348,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index fbd1bb1039..848a39faae 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_fsync F
> -GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 11b8d3d035..e2739a9145 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -637,6 +637,8 @@ GLIBC_2.21 aio_cancel F
>  GLIBC_2.21 aio_cancel64 F
>  GLIBC_2.21 aio_error F
>  GLIBC_2.21 aio_error64 F
> +GLIBC_2.21 aio_fsync F
> +GLIBC_2.21 aio_fsync64 F
>  GLIBC_2.21 aio_init F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
> @@ -2466,6 +2468,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 5da84ad590..24472cb04f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_fsync F
> -GLIBC_2.21 aio_fsync64 F
>  GLIBC_2.21 aio_read F
>  GLIBC_2.21 aio_read64 F
>  GLIBC_2.21 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 53bfeff0c8..6c816268cd 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2484,6 +2486,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 354a8c5e1e..03dadcef85 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2517,6 +2519,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 3c82273e63..c355eb4607 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -637,6 +637,8 @@ GLIBC_2.3 aio_cancel F
>  GLIBC_2.3 aio_cancel64 F
>  GLIBC_2.3 aio_error F
>  GLIBC_2.3 aio_error64 F
> +GLIBC_2.3 aio_fsync F
> +GLIBC_2.3 aio_fsync64 F
>  GLIBC_2.3 aio_init F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
> @@ -2254,6 +2256,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 66926097e0..951344a6ef 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_fsync F
> -GLIBC_2.3 aio_fsync64 F
>  GLIBC_2.3 aio_read F
>  GLIBC_2.3 aio_read64 F
>  GLIBC_2.3 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 0d9d8ed602..abe39f4a96 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -681,6 +681,8 @@ GLIBC_2.17 aio_cancel F
>  GLIBC_2.17 aio_cancel64 F
>  GLIBC_2.17 aio_error F
>  GLIBC_2.17 aio_error64 F
> +GLIBC_2.17 aio_fsync F
> +GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
> @@ -2553,6 +2555,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 39e753fdde..1519e07346 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_fsync F
> -GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 4ff01efcca..585c9b7cf7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -548,6 +548,8 @@ GLIBC_2.33 aio_cancel F
>  GLIBC_2.33 aio_cancel64 F
>  GLIBC_2.33 aio_error F
>  GLIBC_2.33 aio_error64 F
> +GLIBC_2.33 aio_fsync F
> +GLIBC_2.33 aio_fsync64 F
>  GLIBC_2.33 aio_init F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
> @@ -2118,6 +2120,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index be604bb966..8e30efa6a1 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_fsync F
> -GLIBC_2.33 aio_fsync64 F
>  GLIBC_2.33 aio_read F
>  GLIBC_2.33 aio_read64 F
>  GLIBC_2.33 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index cdcc2fe800..d8aa40cb34 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -574,6 +574,8 @@ GLIBC_2.27 aio_cancel F
>  GLIBC_2.27 aio_cancel64 F
>  GLIBC_2.27 aio_error F
>  GLIBC_2.27 aio_error64 F
> +GLIBC_2.27 aio_fsync F
> +GLIBC_2.27 aio_fsync64 F
>  GLIBC_2.27 aio_init F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
> @@ -2318,6 +2320,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 541ef4aa42..7145c7d249 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_fsync F
> -GLIBC_2.27 aio_fsync64 F
>  GLIBC_2.27 aio_read F
>  GLIBC_2.27 aio_read64 F
>  GLIBC_2.27 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 3372cb7340..52a7d18745 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1476,6 +1476,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2482,6 +2484,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index a7e74a0d44..1078e94135 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -574,6 +574,8 @@ GLIBC_2.2 aio_cancel F
>  GLIBC_2.2 aio_cancel64 F
>  GLIBC_2.2 aio_error F
>  GLIBC_2.2 aio_error64 F
> +GLIBC_2.2 aio_fsync F
> +GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
> @@ -2291,6 +2293,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 40a823f6de..0396a04bd2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_fsync F
> -GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index c856450c1f..90c2a79d6e 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2337,6 +2339,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 459119e6de..a624e97cab 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2334,6 +2336,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 07dbd9a87b..8ac375872c 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index c78e328a0f..c65022cdd9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1478,6 +1478,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
> @@ -2477,6 +2479,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index e6990a5c82..183e0cbf21 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 3b4ef5f093..5e90b1e6f7 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -11,6 +11,8 @@ GLIBC_2.1 aio_cancel F
>  GLIBC_2.1 aio_cancel64 F
>  GLIBC_2.1 aio_error F
>  GLIBC_2.1 aio_error64 F
> +GLIBC_2.1 aio_fsync F
> +GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> @@ -2313,6 +2315,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 09ba914d65..f4dd36f97b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_fsync F
> -GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 1d6e7030fc..3911e41a47 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -563,6 +563,8 @@ GLIBC_2.2.5 aio_cancel F
>  GLIBC_2.2.5 aio_cancel64 F
>  GLIBC_2.2.5 aio_error F
>  GLIBC_2.2.5 aio_error64 F
> +GLIBC_2.2.5 aio_fsync F
> +GLIBC_2.2.5 aio_fsync64 F
>  GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
> @@ -2269,6 +2271,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index ef23d67e9d..f1cce35e0a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_fsync F
> -GLIBC_2.2.5 aio_fsync64 F
>  GLIBC_2.2.5 aio_read F
>  GLIBC_2.2.5 aio_read64 F
>  GLIBC_2.2.5 aio_return F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 1480d7ada7..bae6dd505b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -596,6 +596,8 @@ GLIBC_2.16 aio_cancel F
>  GLIBC_2.16 aio_cancel64 F
>  GLIBC_2.16 aio_error F
>  GLIBC_2.16 aio_error64 F
> +GLIBC_2.16 aio_fsync F
> +GLIBC_2.16 aio_fsync64 F
>  GLIBC_2.16 aio_init F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
> @@ -2372,6 +2374,8 @@ GLIBC_2.34 aio_cancel F
>  GLIBC_2.34 aio_cancel64 F
>  GLIBC_2.34 aio_error F
>  GLIBC_2.34 aio_error64 F
> +GLIBC_2.34 aio_fsync F
> +GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 629dd4fd75..acaa63d92f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_fsync F
> -GLIBC_2.16 aio_fsync64 F
>  GLIBC_2.16 aio_read F
>  GLIBC_2.16 aio_read64 F
>  GLIBC_2.16 aio_return F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 14/34] Linux: Move aio_read, aio_read64 into libc
  2021-06-17 18:58 ` [PATCH 14/34] Linux: Move aio_read, aio_read64 " Florian Weimer
@ 2021-06-23 17:51   ` Adhemerval Zanella
  2021-06-25  9:53     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 17:51 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> Both symbols have to be moved at the same time because they
> are intertwined for __WORDSIZE == 64.  The treatment of this case
> is also changed to match more closely how the other files suppress
> the declaration of the *64 identifier.

As a side note, I think __WORDSIZE is not reall correct here since
we not have 32-bit architecture that only defines 64-bit off_t.
This will incur in a double implementation that would be essentially
the same, it should not be an error but I think we should fix it
eventually.

> 
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.  Just a nit below.

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

> ---
>  rt/Makefile                                   |  4 +-
>  rt/Versions                                   |  6 ++-
>  rt/aio_read.c                                 | 37 +++++++++++++++++--
>  rt/aio_read64.c                               | 20 ++++++++--
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../unix/sysv/linux/wordsize-64/aio_read.c    |  7 ----
>  .../unix/sysv/linux/wordsize-64/aio_read64.c  |  1 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  68 files changed, 185 insertions(+), 78 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index ca8c818a25..f080be56d5 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,8 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_read \
> -  aio_read64 \
>    aio_return \
>    aio_suspend \
>    aio_write \
> @@ -62,6 +60,8 @@ $(librt-routines-var) += \
>    aio_fsync \
>    aio_misc \
>    aio_notify \
> +  aio_read \
> +  aio_read64 \
>    aio_sigqueue \
>  
>  tests := tst-shm tst-timer tst-timer2 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 1a0aa77fd0..6db40bebc4 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -8,6 +8,8 @@ libc {
>      aio_error64;
>      aio_fsync;
>      aio_fsync64;
> +    aio_read;
> +    aio_read64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -23,6 +25,8 @@ libc {
>      aio_error64;
>      aio_fsync;
>      aio_fsync64;
> +    aio_read;
> +    aio_read64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -51,9 +55,9 @@ librt {
>      aio_fsync;
>      aio_fsync64;
>      aio_init;
> -%endif
>      aio_read;
>      aio_read64;
> +%endif
>      aio_return;
>      aio_return64;
>      aio_suspend;
__WORDSIZE

> diff --git a/rt/aio_read.c b/rt/aio_read.c
> index 4698e48b1c..1b7a7fcfa9 100644
> --- a/rt/aio_read.c
> +++ b/rt/aio_read.c
> @@ -17,14 +17,45 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> +#include <bits/wordsize.h>
> +#if __WORDSIZE == 64
> +/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> +   implementation of aio_read and aio_read64 are identical and so
> +   we want to avoid code duplication by using aliases.  But gcc sees
> +   the different parameter lists and prints a warning.  We define here
> +   a function so that aio_read64 has no prototype.  */

I think there is no need to replicate this comment anymore, this 'hack'
is used on multiple places (LFS).

> +# define aio_read64 XXX
> +# include <aio.h>
> +/* And undo the hack.  */
> +# undef aio_read64
> +#else
> +# include <aio.h>
> +#endif
>  
>  #include <aio_misc.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -aio_read (struct aiocb *aiocbp)
> +__aio_read (struct aiocb *aiocbp)
>  {
>    return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ) == NULL
>  	  ? -1 : 0);
>  }
> +
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_read, aio_read, GLIBC_2_34);
> +# if __WORDSIZE == 64
> +versioned_symbol (libc, __aio_read, aio_read64, GLIBC_2_34);
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_read, aio_read, GLIBC_2_1);
> +#  if __WORDSIZE == 64
> +compat_symbol (librt, __aio_read, aio_read64, GLIBC_2_1);
> +#  endif
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_read, aio_read)
> +# if __WORDSIZE == 64
> +weak_alias (__aio_read, aio_read64)
> +#endif
> +#endif  /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/rt/aio_read64.c b/rt/aio_read64.c
> index 26b9b0b380..3aa169fbf3 100644
> --- a/rt/aio_read64.c
> +++ b/rt/aio_read64.c
> @@ -17,14 +17,26 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> -
> -#include <aio_misc.h>
> +#include <bits/wordsize.h>
> +#if __WORDSIZE != 64
>  
> +# include <aio.h>
> +# include <aio_misc.h>
> +# include <shlib-compat.h>
>  
>  int
> -aio_read64 (struct aiocb64 *aiocbp)
> +__aio_read64 (struct aiocb64 *aiocbp)
>  {
>    return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_READ64) == NULL
>  	  ? -1 : 0);
>  }
> +
> +# if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_read64, aio_read64, GLIBC_2_34);
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_read64, aio_read64, GLIBC_2_1);
> +#  endif
> +# else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_read64, aio_read64)
> +# endif
> +#endif /* __WORDSIZE != 64 */
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index cf141fdf08..d210f88f0e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -596,6 +596,8 @@ GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
> +GLIBC_2.17 aio_read F
> +GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2362,6 +2364,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 1519e07346..58a853230e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_read F
> -GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 8d58f3ea87..08ea11c9fe 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1509,6 +1509,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2457,6 +2459,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index f4dd36f97b..2afa483191 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 7579936aca..817c4c6ff0 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -557,6 +557,8 @@ GLIBC_2.32 aio_error64 F
>  GLIBC_2.32 aio_fsync F
>  GLIBC_2.32 aio_fsync64 F
>  GLIBC_2.32 aio_init F
> +GLIBC_2.32 aio_read F
> +GLIBC_2.32 aio_read64 F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
>  GLIBC_2.32 alphasort F
> @@ -2121,6 +2123,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 15b9acf33c..e49be2ff36 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_read F
> -GLIBC_2.32 aio_read64 F
>  GLIBC_2.32 aio_return F
>  GLIBC_2.32 aio_return64 F
>  GLIBC_2.32 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 566d18d20a..0be92527af 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -285,6 +285,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -995,6 +997,8 @@ GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
> +GLIBC_2.4 aio_read F
> +GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 1fa78d6811..9a68bb887b 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_read F
> -GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 40da72fe92..615b37769a 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -282,6 +282,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -992,6 +994,8 @@ GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
> +GLIBC_2.4 aio_read F
> +GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 1fa78d6811..9a68bb887b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_read F
> -GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index b0e1eab37e..e77bb5b57b 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -571,6 +571,8 @@ GLIBC_2.29 aio_error64 F
>  GLIBC_2.29 aio_fsync F
>  GLIBC_2.29 aio_fsync64 F
>  GLIBC_2.29 aio_init F
> +GLIBC_2.29 aio_read F
> +GLIBC_2.29 aio_read64 F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
>  GLIBC_2.29 alphasort F
> @@ -2381,6 +2383,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 9c3edc9f2f..93475f5bd5 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_read F
> -GLIBC_2.29 aio_read64 F
>  GLIBC_2.29 aio_return F
>  GLIBC_2.29 aio_return64 F
>  GLIBC_2.29 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 463b498665..12704a350a 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -10,6 +10,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2335,6 +2337,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 2015282000..67d1fbcade 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1482,6 +1482,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2519,6 +2521,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index f83ba75cac..83d6bbfdf2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -10,6 +10,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2295,6 +2297,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 38dd6dfb53..152692a5a6 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index a0ca9ddc48..537df59369 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -286,6 +286,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -983,6 +985,8 @@ GLIBC_2.4 aio_error64 F
>  GLIBC_2.4 aio_fsync F
>  GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
> +GLIBC_2.4 aio_read F
> +GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 1fa78d6811..9a68bb887b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_read F
> -GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index bef73ca536..fefee687b2 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1480,6 +1480,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2462,6 +2464,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 1f2c7f0fd9..635b62cd31 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -598,6 +598,8 @@ GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
> +GLIBC_2.18 aio_read F
> +GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2432,6 +2434,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 87eeccd69c..34f5bc3964 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_read F
> -GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 191db5f985..cce81d50da 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -598,6 +598,8 @@ GLIBC_2.18 aio_error64 F
>  GLIBC_2.18 aio_fsync F
>  GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
> +GLIBC_2.18 aio_read F
> +GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2429,6 +2431,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 87eeccd69c..34f5bc3964 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_read F
> -GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 5eb630a9f5..d4e0f597ba 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1658,6 +1658,8 @@ GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
> +GLIBC_2.2 aio_read F
> +GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2427,6 +2429,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 9e2c283942..d886f0376c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_read F
> -GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index a1b8e02ca4..757c40c34c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1656,6 +1656,8 @@ GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
> +GLIBC_2.2 aio_read F
> +GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2425,6 +2427,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index dd33f448b7..d1c919b14f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1657,6 +1657,8 @@ GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
> +GLIBC_2.2 aio_read F
> +GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2433,6 +2435,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 9e2c283942..d886f0376c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_read F
> -GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index efda95dd32..6c3dd08461 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1653,6 +1653,8 @@ GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
> +GLIBC_2.2 aio_read F
> +GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2351,6 +2353,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 848a39faae..6c94c34024 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_read F
> -GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index e2739a9145..160e1d491e 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -640,6 +640,8 @@ GLIBC_2.21 aio_error64 F
>  GLIBC_2.21 aio_fsync F
>  GLIBC_2.21 aio_fsync64 F
>  GLIBC_2.21 aio_init F
> +GLIBC_2.21 aio_read F
> +GLIBC_2.21 aio_read64 F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
>  GLIBC_2.21 alphasort F
> @@ -2471,6 +2473,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 24472cb04f..7d197b8c5d 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_read F
> -GLIBC_2.21 aio_read64 F
>  GLIBC_2.21 aio_return F
>  GLIBC_2.21 aio_return64 F
>  GLIBC_2.21 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 6c816268cd..2923d162e0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2489,6 +2491,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 03dadcef85..b6feabe5e4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2522,6 +2524,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index c355eb4607..b149e31698 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -640,6 +640,8 @@ GLIBC_2.3 aio_error64 F
>  GLIBC_2.3 aio_fsync F
>  GLIBC_2.3 aio_fsync64 F
>  GLIBC_2.3 aio_init F
> +GLIBC_2.3 aio_read F
> +GLIBC_2.3 aio_read64 F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
>  GLIBC_2.3 alphasort64 F
> @@ -2259,6 +2261,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 951344a6ef..d0ddb7852e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_read F
> -GLIBC_2.3 aio_read64 F
>  GLIBC_2.3 aio_return F
>  GLIBC_2.3 aio_return64 F
>  GLIBC_2.3 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index abe39f4a96..607abc7f32 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -684,6 +684,8 @@ GLIBC_2.17 aio_error64 F
>  GLIBC_2.17 aio_fsync F
>  GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
> +GLIBC_2.17 aio_read F
> +GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2558,6 +2560,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 1519e07346..58a853230e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_read F
> -GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 585c9b7cf7..de26c22e23 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -551,6 +551,8 @@ GLIBC_2.33 aio_error64 F
>  GLIBC_2.33 aio_fsync F
>  GLIBC_2.33 aio_fsync64 F
>  GLIBC_2.33 aio_init F
> +GLIBC_2.33 aio_read F
> +GLIBC_2.33 aio_read64 F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
>  GLIBC_2.33 alphasort F
> @@ -2123,6 +2125,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 8e30efa6a1..8e15ebe652 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_read F
> -GLIBC_2.33 aio_read64 F
>  GLIBC_2.33 aio_return F
>  GLIBC_2.33 aio_return64 F
>  GLIBC_2.33 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index d8aa40cb34..d0ca205432 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -577,6 +577,8 @@ GLIBC_2.27 aio_error64 F
>  GLIBC_2.27 aio_fsync F
>  GLIBC_2.27 aio_fsync64 F
>  GLIBC_2.27 aio_init F
> +GLIBC_2.27 aio_read F
> +GLIBC_2.27 aio_read64 F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
>  GLIBC_2.27 alphasort F
> @@ -2323,6 +2325,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 7145c7d249..fe48c3cfea 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_read F
> -GLIBC_2.27 aio_read64 F
>  GLIBC_2.27 aio_return F
>  GLIBC_2.27 aio_return64 F
>  GLIBC_2.27 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 52a7d18745..a773148442 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1479,6 +1479,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2487,6 +2489,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 1078e94135..14899f40f7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -577,6 +577,8 @@ GLIBC_2.2 aio_error64 F
>  GLIBC_2.2 aio_fsync F
>  GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
> +GLIBC_2.2 aio_read F
> +GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
>  GLIBC_2.2 alphasort64 F
> @@ -2296,6 +2298,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 0396a04bd2..a65683ca9d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_read F
> -GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 90c2a79d6e..a255e3eeac 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2342,6 +2344,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index a624e97cab..45c49ba662 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2339,6 +2341,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 8ac375872c..0402dcddcc 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index c65022cdd9..07a68d78e3 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1481,6 +1481,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2482,6 +2484,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 183e0cbf21..2202b8ef5f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 5e90b1e6f7..8b549e7efc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -14,6 +14,8 @@ GLIBC_2.1 aio_error64 F
>  GLIBC_2.1 aio_fsync F
>  GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
> +GLIBC_2.1 aio_read F
> +GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2318,6 +2320,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index f4dd36f97b..2afa483191 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_read F
> -GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F

__WORDSIZE

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
> deleted file mode 100644
> index 8310b484d0..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -#define aio_read64 __renamed_aio_read64
> -
> -#include <rt/aio_read.c>
> -
> -#undef aio_read64
> -
> -weak_alias (aio_read, aio_read64)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
> deleted file mode 100644
> index 6a6a102c8d..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_read64.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -/* Defined in aio_read.c.  */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 3911e41a47..e8d70016a6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -566,6 +566,8 @@ GLIBC_2.2.5 aio_error64 F
>  GLIBC_2.2.5 aio_fsync F
>  GLIBC_2.2.5 aio_fsync64 F
>  GLIBC_2.2.5 aio_init F
> +GLIBC_2.2.5 aio_read F
> +GLIBC_2.2.5 aio_read64 F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
>  GLIBC_2.2.5 alphasort64 F
> @@ -2274,6 +2276,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index f1cce35e0a..e9d2aeb05b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_read F
> -GLIBC_2.2.5 aio_read64 F
>  GLIBC_2.2.5 aio_return F
>  GLIBC_2.2.5 aio_return64 F
>  GLIBC_2.2.5 aio_suspend F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index bae6dd505b..40921d5579 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -599,6 +599,8 @@ GLIBC_2.16 aio_error64 F
>  GLIBC_2.16 aio_fsync F
>  GLIBC_2.16 aio_fsync64 F
>  GLIBC_2.16 aio_init F
> +GLIBC_2.16 aio_read F
> +GLIBC_2.16 aio_read64 F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
>  GLIBC_2.16 alphasort F
> @@ -2377,6 +2379,8 @@ GLIBC_2.34 aio_error64 F
>  GLIBC_2.34 aio_fsync F
>  GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
> +GLIBC_2.34 aio_read F
> +GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index acaa63d92f..bbd0f42caa 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_read F
> -GLIBC_2.16 aio_read64 F
>  GLIBC_2.16 aio_return F
>  GLIBC_2.16 aio_return64 F
>  GLIBC_2.16 aio_suspend F
> 
Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 15/34] Linux: Move aio_return, aio_return64 into libc
  2021-06-17 18:58 ` [PATCH 15/34] Linux: Move aio_return, aio_return64 " Florian Weimer
@ 2021-06-23 19:44   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 19:44 UTC (permalink / raw)
  To: libc-alpha, Florian Weimer



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  rt/Makefile                                       |  2 +-
>  rt/Versions                                       |  6 +++++-
>  rt/aio_return.c                                   | 15 +++++++++++++--
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist      |  4 ++++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist       |  2 --
>  sysdeps/unix/sysv/linux/arc/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/arc/librt.abilist         |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist       |  4 ++++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist      |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist       |  4 ++++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist      |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/csky/librt.abilist        |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist        |  2 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/i386/librt.abilist        |  2 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist        |  2 --
>  .../unix/sysv/linux/m68k/coldfire/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/m68k/coldfire/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++++
>  sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist |  2 --
>  .../unix/sysv/linux/microblaze/be/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/microblaze/be/librt.abilist   |  2 --
>  .../unix/sysv/linux/microblaze/le/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/microblaze/le/librt.abilist   |  2 --
>  .../unix/sysv/linux/mips/mips32/fpu/libc.abilist  |  4 ++++
>  sysdeps/unix/sysv/linux/mips/mips32/librt.abilist |  2 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist     |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n32/libc.abilist  |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n32/librt.abilist |  2 --
>  .../unix/sysv/linux/mips/mips64/n64/libc.abilist  |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n64/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/nios2/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist       |  2 --
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist |  4 ++++
>  .../sysv/linux/powerpc/powerpc32/librt.abilist    |  2 --
>  .../linux/powerpc/powerpc32/nofpu/libc.abilist    |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/be/libc.abilist  |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/be/librt.abilist |  2 --
>  .../sysv/linux/powerpc/powerpc64/le/libc.abilist  |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/le/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++++
>  .../unix/sysv/linux/s390/s390-32/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++++
>  .../unix/sysv/linux/s390/s390-64/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist       |  2 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist       |  2 --
>  .../unix/sysv/linux/sparc/sparc32/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sparc/sparc32/librt.abilist   |  2 --
>  .../unix/sysv/linux/sparc/sparc64/libc.abilist    |  4 ++++
>  .../unix/sysv/linux/sparc/sparc64/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/x86_64/64/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
>  65 files changed, 147 insertions(+), 64 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index f080be56d5..810599a736 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,7 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_return \
>    aio_suspend \
>    aio_write \
>    aio_write64 \
> @@ -62,6 +61,7 @@ $(librt-routines-var) += \
>    aio_notify \
>    aio_read \
>    aio_read64 \
> +  aio_return \
>    aio_sigqueue \
>  
>  tests := tst-shm tst-timer tst-timer2 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 6db40bebc4..0780dc8400 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -10,6 +10,8 @@ libc {
>      aio_fsync64;
>      aio_read;
>      aio_read64;
> +    aio_return;
> +    aio_return64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -27,6 +29,8 @@ libc {
>      aio_fsync64;
>      aio_read;
>      aio_read64;
> +    aio_return;
> +    aio_return64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -57,9 +61,9 @@ librt {
>      aio_init;
>      aio_read;
>      aio_read64;
> -%endif
>      aio_return;
>      aio_return64;
> +%endif
>      aio_suspend;
>      aio_suspend64;
>      aio_write;

Ok.

> diff --git a/rt/aio_return.c b/rt/aio_return.c
> index cc50719dcb..a7a0b141d2 100644
> --- a/rt/aio_return.c
> +++ b/rt/aio_return.c
> @@ -28,11 +28,22 @@
>  /* And undo the hack.  */
>  #undef aio_return64
>  
> +#include <shlib-compat.h>
>  
>  ssize_t
> -aio_return (struct aiocb *aiocbp)
> +__aio_return (struct aiocb *aiocbp)
>  {
>    return aiocbp->__return_value;
>  }
>  
> -weak_alias (aio_return, aio_return64)
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_return, aio_return, GLIBC_2_34);
> +versioned_symbol (libc, __aio_return, aio_return64, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_return, aio_return, GLIBC_2_1);
> +compat_symbol (librt, __aio_return, aio_return64, GLIBC_2_1);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_return, aio_return)
> +weak_alias (__aio_return, aio_return64)
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index d210f88f0e..79405d26e9 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -598,6 +598,8 @@ GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
> +GLIBC_2.17 aio_return F
> +GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2366,6 +2368,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 58a853230e..451560dc87 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_return F
> -GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
>  GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 08ea11c9fe..f6fa8966f8 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1511,6 +1511,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2461,6 +2463,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 2afa483191..90a66e4a4b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 817c4c6ff0..a5c1df7eaf 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -559,6 +559,8 @@ GLIBC_2.32 aio_fsync64 F
>  GLIBC_2.32 aio_init F
>  GLIBC_2.32 aio_read F
>  GLIBC_2.32 aio_read64 F
> +GLIBC_2.32 aio_return F
> +GLIBC_2.32 aio_return64 F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
>  GLIBC_2.32 alphasort F
> @@ -2125,6 +2127,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index e49be2ff36..9cac9c759b 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_return F
> -GLIBC_2.32 aio_return64 F
>  GLIBC_2.32 aio_suspend F
>  GLIBC_2.32 aio_suspend64 F
>  GLIBC_2.32 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 0be92527af..1928717cfd 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -287,6 +287,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -999,6 +1001,8 @@ GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
> +GLIBC_2.4 aio_return F
> +GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 9a68bb887b..05957aae03 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_return F
> -GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 615b37769a..bee5d9f757 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -284,6 +284,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -996,6 +998,8 @@ GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
> +GLIBC_2.4 aio_return F
> +GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 9a68bb887b..05957aae03 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_return F
> -GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index e77bb5b57b..753f54085a 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -573,6 +573,8 @@ GLIBC_2.29 aio_fsync64 F
>  GLIBC_2.29 aio_init F
>  GLIBC_2.29 aio_read F
>  GLIBC_2.29 aio_read64 F
> +GLIBC_2.29 aio_return F
> +GLIBC_2.29 aio_return64 F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
>  GLIBC_2.29 alphasort F
> @@ -2385,6 +2387,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 93475f5bd5..74fc5621d6 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_return F
> -GLIBC_2.29 aio_return64 F
>  GLIBC_2.29 aio_suspend F
>  GLIBC_2.29 aio_suspend64 F
>  GLIBC_2.29 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 12704a350a..4a96fcfb39 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -12,6 +12,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2339,6 +2341,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 67d1fbcade..b704bf4756 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2523,6 +2525,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 83d6bbfdf2..08bea0c72f 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -12,6 +12,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2299,6 +2301,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 152692a5a6..ac9f293b6b 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 537df59369..187672fa76 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -288,6 +288,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -987,6 +989,8 @@ GLIBC_2.4 aio_fsync64 F
>  GLIBC_2.4 aio_init F
>  GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
> +GLIBC_2.4 aio_return F
> +GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 9a68bb887b..05957aae03 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -3,8 +3,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_return F
> -GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index fefee687b2..379779793c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1482,6 +1482,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2466,6 +2468,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 635b62cd31..2fce5d9138 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -600,6 +600,8 @@ GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
> +GLIBC_2.18 aio_return F
> +GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2436,6 +2438,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 34f5bc3964..1503d19eae 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_return F
> -GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
>  GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index cce81d50da..6c3cd2a9e3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -600,6 +600,8 @@ GLIBC_2.18 aio_fsync64 F
>  GLIBC_2.18 aio_init F
>  GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
> +GLIBC_2.18 aio_return F
> +GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2433,6 +2435,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 34f5bc3964..1503d19eae 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_return F
> -GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
>  GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index d4e0f597ba..46aa64baaa 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1660,6 +1660,8 @@ GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
> +GLIBC_2.2 aio_return F
> +GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2431,6 +2433,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index d886f0376c..2b7c3cabec 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_return F
> -GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 757c40c34c..169b386cc1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1658,6 +1658,8 @@ GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
> +GLIBC_2.2 aio_return F
> +GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2429,6 +2431,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index d1c919b14f..ad52c15c3e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1659,6 +1659,8 @@ GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
> +GLIBC_2.2 aio_return F
> +GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2437,6 +2439,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index d886f0376c..2b7c3cabec 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_return F
> -GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 6c3dd08461..16a67a0d6d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1655,6 +1655,8 @@ GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
> +GLIBC_2.2 aio_return F
> +GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2355,6 +2357,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 6c94c34024..293b92eaec 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_return F
> -GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 160e1d491e..3567fa8efc 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -642,6 +642,8 @@ GLIBC_2.21 aio_fsync64 F
>  GLIBC_2.21 aio_init F
>  GLIBC_2.21 aio_read F
>  GLIBC_2.21 aio_read64 F
> +GLIBC_2.21 aio_return F
> +GLIBC_2.21 aio_return64 F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
>  GLIBC_2.21 alphasort F
> @@ -2475,6 +2477,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 7d197b8c5d..b63036c526 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_return F
> -GLIBC_2.21 aio_return64 F
>  GLIBC_2.21 aio_suspend F
>  GLIBC_2.21 aio_suspend64 F
>  GLIBC_2.21 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 2923d162e0..0b393c0a5a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1489,6 +1489,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2493,6 +2495,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index b6feabe5e4..0bc73512d3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1489,6 +1489,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2526,6 +2528,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index b149e31698..22d277a32e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -642,6 +642,8 @@ GLIBC_2.3 aio_fsync64 F
>  GLIBC_2.3 aio_init F
>  GLIBC_2.3 aio_read F
>  GLIBC_2.3 aio_read64 F
> +GLIBC_2.3 aio_return F
> +GLIBC_2.3 aio_return64 F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
>  GLIBC_2.3 alphasort64 F
> @@ -2263,6 +2265,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index d0ddb7852e..b98e7cf9de 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_return F
> -GLIBC_2.3 aio_return64 F
>  GLIBC_2.3 aio_suspend F
>  GLIBC_2.3 aio_suspend64 F
>  GLIBC_2.3 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 607abc7f32..15b0f5e367 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -686,6 +686,8 @@ GLIBC_2.17 aio_fsync64 F
>  GLIBC_2.17 aio_init F
>  GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
> +GLIBC_2.17 aio_return F
> +GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2562,6 +2564,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 58a853230e..451560dc87 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_return F
> -GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
>  GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index de26c22e23..6003434931 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -553,6 +553,8 @@ GLIBC_2.33 aio_fsync64 F
>  GLIBC_2.33 aio_init F
>  GLIBC_2.33 aio_read F
>  GLIBC_2.33 aio_read64 F
> +GLIBC_2.33 aio_return F
> +GLIBC_2.33 aio_return64 F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
>  GLIBC_2.33 alphasort F
> @@ -2127,6 +2129,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 8e15ebe652..dc23391407 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_return F
> -GLIBC_2.33 aio_return64 F
>  GLIBC_2.33 aio_suspend F
>  GLIBC_2.33 aio_suspend64 F
>  GLIBC_2.33 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index d0ca205432..5041f05217 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -579,6 +579,8 @@ GLIBC_2.27 aio_fsync64 F
>  GLIBC_2.27 aio_init F
>  GLIBC_2.27 aio_read F
>  GLIBC_2.27 aio_read64 F
> +GLIBC_2.27 aio_return F
> +GLIBC_2.27 aio_return64 F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
>  GLIBC_2.27 alphasort F
> @@ -2327,6 +2329,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index fe48c3cfea..5f1cecd612 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_return F
> -GLIBC_2.27 aio_return64 F
>  GLIBC_2.27 aio_suspend F
>  GLIBC_2.27 aio_suspend64 F
>  GLIBC_2.27 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index a773148442..ed6c511cc9 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1481,6 +1481,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2491,6 +2493,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 14899f40f7..9f1e31574e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -579,6 +579,8 @@ GLIBC_2.2 aio_fsync64 F
>  GLIBC_2.2 aio_init F
>  GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
> +GLIBC_2.2 aio_return F
> +GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
>  GLIBC_2.2 alphasort64 F
> @@ -2300,6 +2302,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index a65683ca9d..2442ed5222 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_return F
> -GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index a255e3eeac..b9e583fa88 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2346,6 +2348,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 45c49ba662..2f737fadb8 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2343,6 +2345,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 0402dcddcc..4cae24e768 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 07a68d78e3..f4c87b4fa9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1483,6 +1483,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2486,6 +2488,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 2202b8ef5f..6061373aae 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 8b549e7efc..03acd40463 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -16,6 +16,8 @@ GLIBC_2.1 aio_fsync64 F
>  GLIBC_2.1 aio_init F
>  GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
> +GLIBC_2.1 aio_return F
> +GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2322,6 +2324,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 2afa483191..90a66e4a4b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_return F
> -GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index e8d70016a6..f81fe5301d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -568,6 +568,8 @@ GLIBC_2.2.5 aio_fsync64 F
>  GLIBC_2.2.5 aio_init F
>  GLIBC_2.2.5 aio_read F
>  GLIBC_2.2.5 aio_read64 F
> +GLIBC_2.2.5 aio_return F
> +GLIBC_2.2.5 aio_return64 F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
>  GLIBC_2.2.5 alphasort64 F
> @@ -2278,6 +2280,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index e9d2aeb05b..62fe3da2cb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_return F
> -GLIBC_2.2.5 aio_return64 F
>  GLIBC_2.2.5 aio_suspend F
>  GLIBC_2.2.5 aio_suspend64 F
>  GLIBC_2.2.5 aio_write F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 40921d5579..45d74a3958 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -601,6 +601,8 @@ GLIBC_2.16 aio_fsync64 F
>  GLIBC_2.16 aio_init F
>  GLIBC_2.16 aio_read F
>  GLIBC_2.16 aio_read64 F
> +GLIBC_2.16 aio_return F
> +GLIBC_2.16 aio_return64 F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
>  GLIBC_2.16 alphasort F
> @@ -2381,6 +2383,8 @@ GLIBC_2.34 aio_fsync64 F
>  GLIBC_2.34 aio_init F
>  GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
> +GLIBC_2.34 aio_return F
> +GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index bbd0f42caa..a531990038 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_return F
> -GLIBC_2.16 aio_return64 F
>  GLIBC_2.16 aio_suspend F
>  GLIBC_2.16 aio_suspend64 F
>  GLIBC_2.16 aio_write F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc
  2021-06-17 18:58 ` [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc Florian Weimer
@ 2021-06-23 19:52   ` Adhemerval Zanella
  2021-06-23 19:59     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 19:52 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> 
> There is a minor oddity here: This is generic code shared with Hurd,
> and Hurd does not have time64 support.  This is why the
> versioned_symbol export for __aio_suspend_time64 is restricted to
> the PTHREAD_IN_LIBC code.

LGTM, thanks. Only a small question below.

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

> ---
>  include/aio.h                                 |  4 ++
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  6 ++-
>  rt/aio_suspend.c                              | 49 +++++++++++++++----
>  sysdeps/unix/sysv/linux/Versions              |  2 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  5 ++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 ++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  5 ++
>  .../sysv/linux/microblaze/be/librt.abilist    |  3 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  5 ++
>  .../sysv/linux/microblaze/le/librt.abilist    |  3 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 ++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 ++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 ++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 ++
>  .../linux/powerpc/powerpc32/librt.abilist     |  3 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  5 ++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 ++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  5 ++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  67 files changed, 197 insertions(+), 90 deletions(-)
> 
> diff --git a/include/aio.h b/include/aio.h
> index c7f4233310..5d67800aff 100644
> --- a/include/aio.h
> +++ b/include/aio.h
> @@ -15,7 +15,11 @@ extern void __aio_init (const struct aioinit *__init);
>  # else
>  extern int __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>                                   const struct __timespec64 *timeout);
> +#  if PTHREAD_IN_LIBC
> +libc_hidden_proto (__aio_suspend_time64)
> +#  else
>  librt_hidden_proto (__aio_suspend_time64)
> +#endif
>  # endif
>  #endif
>  

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index 810599a736..b375d37ba2 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,7 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_suspend \
>    aio_write \
>    aio_write64 \
>    librt-compat \
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    aio_read64 \
>    aio_return \
>    aio_sigqueue \
> +  aio_suspend \
>  
>  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 0780dc8400..d54b9cc4bf 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -12,6 +12,8 @@ libc {
>      aio_read64;
>      aio_return;
>      aio_return64;
> +    aio_suspend;
> +    aio_suspend64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -31,6 +33,8 @@ libc {
>      aio_read64;
>      aio_return;
>      aio_return64;
> +    aio_suspend;
> +    aio_suspend64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -63,9 +67,9 @@ librt {
>      aio_read64;
>      aio_return;
>      aio_return64;
> -%endif
>      aio_suspend;
>      aio_suspend64;
> +%endif
>      aio_write;
>      aio_write64;
>      lio_listio;

Ok.

> diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c
> index 6fd5b1bee2..29f01d1023 100644
> --- a/rt/aio_suspend.c
> +++ b/rt/aio_suspend.c
> @@ -36,6 +36,8 @@
>  
>  #include <libc-lock.h>
>  #include <aio_misc.h>
> +#include <pthreadP.h>
> +#include <shlib-compat.h>
>  
>  
>  struct clparam
> @@ -56,7 +58,7 @@ cleanup (void *arg)
>  #ifdef DONT_NEED_AIO_MISC_COND
>    /* Acquire the mutex.  If pthread_cond_*wait is used this would
>       happen implicitly.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  #endif
>  
>    const struct clparam *param = (const struct clparam *) arg;
> @@ -88,7 +90,7 @@ cleanup (void *arg)
>  #endif
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  }
>  
>  #ifdef DONT_NEED_AIO_MISC_COND
> @@ -105,7 +107,7 @@ do_aio_misc_wait (unsigned int *cntr, const struct __timespec64 *timeout)
>  #endif
>  
>  int
> -__aio_suspend_time64 (const struct aiocb *const list[], int nent,
> +___aio_suspend_time64 (const struct aiocb *const list[], int nent,
>  		      const struct __timespec64 *timeout)
>  {
>    if (__glibc_unlikely (nent < 0))
> @@ -125,7 +127,7 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>    unsigned int cntr = 1;
>  
>    /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>    /* There is not yet a finished request.  Signal the request that
>       we are working for it.  */
> @@ -184,7 +186,11 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>  	  .nent = nent
>  	};
>  
> -      pthread_cleanup_push (cleanup, &clparam);
> +#if PTHREAD_IN_LIBC
> +      __libc_cleanup_region_start (1, cleanup, &clparam);
> +#else
> +      __pthread_cleanup_push (cleanup, &clparam);
> +#endif
>  
>  #ifdef DONT_NEED_AIO_MISC_COND
>        result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
> @@ -194,7 +200,11 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>  				       timeout == NULL ? NULL : &ts32);
>  #endif
>  
> +#if PTHREAD_IN_LIBC
> +      __libc_cleanup_region_end (0);
> +#else
>        pthread_cleanup_pop (0);
> +#endif
>      }
>  

Ok.  What prevents to use __libc_cleanup_region_start on Hurd as well here?

>    /* Now remove the entry in the waiting list for all requests
> @@ -239,13 +249,22 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>      }
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  
>    return result;
>  }
>  
> -#if __TIMESIZE != 64
> -librt_hidden_def (__aio_suspend_time64)
> +#if __TIMESIZE == 64
> +strong_alias (___aio_suspend_time64, __aio_suspend)
> +#else /* __TIMESIZE != 64 */
> +# if PTHREAD_IN_LIBC
> +libc_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
> +/* The conditional is slightly wrong: PTHREAD_IN_LIBC is a stand-in
> +   for whether time64 support is needed.  */
> +versioned_symbol (libc, ___aio_suspend_time64, __aio_suspend_time64, GLIBC_2_34);
> +# else
> +librt_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
> +# endif
>  
>  int
>  __aio_suspend (const struct aiocb *const list[], int nent,
> @@ -258,6 +277,16 @@ __aio_suspend (const struct aiocb *const list[], int nent,
>  
>    return __aio_suspend_time64 (list, nent, timeout != NULL ? &ts64 : NULL);
>  }
> -#endif
> +#endif /* __TIMESPEC64 != 64 */
> +
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_suspend, aio_suspend, GLIBC_2_34);
> +versioned_symbol (libc, __aio_suspend, aio_suspend64, GLIBC_2_34);
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_suspend, aio_suspend, GLIBC_2_1);
> +compat_symbol (librt, __aio_suspend, aio_suspend64, GLIBC_2_1);
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
>  weak_alias (__aio_suspend, aio_suspend)
> -weak_alias (aio_suspend, aio_suspend64)
> +weak_alias (__aio_suspend, aio_suspend64)
> +#endif /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index ea0b22d7af..f246a389e1 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -192,6 +192,7 @@ libc {
>      # 64-bit time_t support
>      __adjtime64;
>      ___adjtimex64;
> +    __aio_suspend_time64;
>      __clock_adjtime64;
>      __clock_getres64;
>      __clock_gettime64;
> @@ -294,7 +295,6 @@ librt {
>    GLIBC_2.34 {
>  %ifdef TIME64_NON_DEFAULT
>      # 64-bit time_t support
> -    __aio_suspend_time64;
>      __mq_timedsend_time64;
>      __mq_timedreceive_time64;
>      __timer_gettime64;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 79405d26e9..6c76d0df61 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -600,6 +600,8 @@ GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
> +GLIBC_2.17 aio_suspend F
> +GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2370,6 +2372,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 451560dc87..37ff014ed8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_suspend F
> -GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 aio_write F
>  GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index f6fa8966f8..e7f0e1b49a 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1513,6 +1513,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2465,6 +2467,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 90a66e4a4b..8a8fe654e0 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index a5c1df7eaf..cf93d14e6f 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -561,6 +561,8 @@ GLIBC_2.32 aio_read F
>  GLIBC_2.32 aio_read64 F
>  GLIBC_2.32 aio_return F
>  GLIBC_2.32 aio_return64 F
> +GLIBC_2.32 aio_suspend F
> +GLIBC_2.32 aio_suspend64 F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
>  GLIBC_2.32 alphasort F
> @@ -2129,6 +2131,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 9cac9c759b..4eb7de36e1 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_suspend F
> -GLIBC_2.32 aio_suspend64 F
>  GLIBC_2.32 aio_write F
>  GLIBC_2.32 aio_write64 F
>  GLIBC_2.32 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 1928717cfd..9d9e4c6b73 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -192,6 +192,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -289,6 +290,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -1003,6 +1006,8 @@ GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
> +GLIBC_2.4 aio_suspend F
> +GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 05957aae03..7cb476c7b4 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_suspend F
> -GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
>  GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index bee5d9f757..a195587b66 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -189,6 +189,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -286,6 +287,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -1000,6 +1003,8 @@ GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
> +GLIBC_2.4 aio_suspend F
> +GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 05957aae03..7cb476c7b4 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_suspend F
> -GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
>  GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 753f54085a..1e3c73aa2d 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -575,6 +575,8 @@ GLIBC_2.29 aio_read F
>  GLIBC_2.29 aio_read64 F
>  GLIBC_2.29 aio_return F
>  GLIBC_2.29 aio_return64 F
> +GLIBC_2.29 aio_suspend F
> +GLIBC_2.29 aio_suspend64 F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
>  GLIBC_2.29 alphasort F
> @@ -2292,6 +2294,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2389,6 +2392,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 74fc5621d6..fcc993f16f 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_suspend F
> -GLIBC_2.29 aio_suspend64 F
>  GLIBC_2.29 aio_write F
>  GLIBC_2.29 aio_write64 F
>  GLIBC_2.29 lio_listio F
> @@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 4a96fcfb39..3e0ff7575e 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -14,6 +14,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2246,6 +2248,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2343,6 +2346,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index b704bf4756..54b5ee4649 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1486,6 +1486,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2429,6 +2431,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2527,6 +2530,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 08bea0c72f..9aac5c8ff4 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -14,6 +14,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2303,6 +2305,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index ac9f293b6b..67435f760c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 187672fa76..87baa69dfe 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -193,6 +193,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -290,6 +291,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -991,6 +994,8 @@ GLIBC_2.4 aio_read F
>  GLIBC_2.4 aio_read64 F
>  GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
> +GLIBC_2.4 aio_suspend F
> +GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 05957aae03..7cb476c7b4 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_suspend F
> -GLIBC_2.4 aio_suspend64 F
>  GLIBC_2.4 aio_write F
>  GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 379779793c..68aa865da4 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1484,6 +1484,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2373,6 +2375,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2470,6 +2473,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 2fce5d9138..19aef593f3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -602,6 +602,8 @@ GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
> +GLIBC_2.18 aio_suspend F
> +GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2343,6 +2345,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2440,6 +2443,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 1503d19eae..06e862de52 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_suspend F
> -GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 aio_write F
>  GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 lio_listio F
> @@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 6c3cd2a9e3..d5f26a2d9b 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -602,6 +602,8 @@ GLIBC_2.18 aio_read F
>  GLIBC_2.18 aio_read64 F
>  GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
> +GLIBC_2.18 aio_suspend F
> +GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2340,6 +2342,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2437,6 +2440,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 1503d19eae..06e862de52 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_suspend F
> -GLIBC_2.18 aio_suspend64 F
>  GLIBC_2.18 aio_write F
>  GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 lio_listio F
> @@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 46aa64baaa..ba77980ef8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1662,6 +1662,8 @@ GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
> +GLIBC_2.2 aio_suspend F
> +GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2338,6 +2340,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2435,6 +2438,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 2b7c3cabec..0a07f87ce9 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_suspend F
> -GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
>  GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 169b386cc1..1e6c7a1eb3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1660,6 +1660,8 @@ GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
> +GLIBC_2.2 aio_suspend F
> +GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2336,6 +2338,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2433,6 +2436,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index ad52c15c3e..fd731ffed0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1661,6 +1661,8 @@ GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
> +GLIBC_2.2 aio_suspend F
> +GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2344,6 +2346,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2441,6 +2444,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 2b7c3cabec..0a07f87ce9 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_suspend F
> -GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
>  GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 16a67a0d6d..9f82375689 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1657,6 +1657,8 @@ GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
> +GLIBC_2.2 aio_suspend F
> +GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2359,6 +2361,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 293b92eaec..7d7be4d9ec 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_suspend F
> -GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
>  GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 3567fa8efc..77a0544dbf 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -644,6 +644,8 @@ GLIBC_2.21 aio_read F
>  GLIBC_2.21 aio_read64 F
>  GLIBC_2.21 aio_return F
>  GLIBC_2.21 aio_return64 F
> +GLIBC_2.21 aio_suspend F
> +GLIBC_2.21 aio_suspend64 F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
>  GLIBC_2.21 alphasort F
> @@ -2382,6 +2384,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2479,6 +2482,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index b63036c526..0db5142065 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_suspend F
> -GLIBC_2.21 aio_suspend64 F
>  GLIBC_2.21 aio_write F
>  GLIBC_2.21 aio_write64 F
>  GLIBC_2.21 lio_listio F
> @@ -20,7 +18,6 @@ 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.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 0b393c0a5a..ed6f66c610 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1491,6 +1491,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2400,6 +2402,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2497,6 +2500,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 0bc73512d3..817530d12f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1491,6 +1491,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2433,6 +2435,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2530,6 +2533,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 22d277a32e..40a27cfd26 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -644,6 +644,8 @@ GLIBC_2.3 aio_read F
>  GLIBC_2.3 aio_read64 F
>  GLIBC_2.3 aio_return F
>  GLIBC_2.3 aio_return64 F
> +GLIBC_2.3 aio_suspend F
> +GLIBC_2.3 aio_suspend64 F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
>  GLIBC_2.3 alphasort64 F
> @@ -2267,6 +2269,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index b98e7cf9de..205c9536b4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_suspend F
> -GLIBC_2.3 aio_suspend64 F
>  GLIBC_2.3 aio_write F
>  GLIBC_2.3 aio_write64 F
>  GLIBC_2.3 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 15b0f5e367..208096bebf 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -688,6 +688,8 @@ GLIBC_2.17 aio_read F
>  GLIBC_2.17 aio_read64 F
>  GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
> +GLIBC_2.17 aio_suspend F
> +GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2566,6 +2568,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 451560dc87..37ff014ed8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_suspend F
> -GLIBC_2.17 aio_suspend64 F
>  GLIBC_2.17 aio_write F
>  GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 6003434931..20b4b7c0ad 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -555,6 +555,8 @@ GLIBC_2.33 aio_read F
>  GLIBC_2.33 aio_read64 F
>  GLIBC_2.33 aio_return F
>  GLIBC_2.33 aio_return64 F
> +GLIBC_2.33 aio_suspend F
> +GLIBC_2.33 aio_suspend64 F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
>  GLIBC_2.33 alphasort F
> @@ -2131,6 +2133,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index dc23391407..51c25c849d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_suspend F
> -GLIBC_2.33 aio_suspend64 F
>  GLIBC_2.33 aio_write F
>  GLIBC_2.33 aio_write64 F
>  GLIBC_2.33 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 5041f05217..9675d2f767 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -581,6 +581,8 @@ GLIBC_2.27 aio_read F
>  GLIBC_2.27 aio_read64 F
>  GLIBC_2.27 aio_return F
>  GLIBC_2.27 aio_return64 F
> +GLIBC_2.27 aio_suspend F
> +GLIBC_2.27 aio_suspend64 F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
>  GLIBC_2.27 alphasort F
> @@ -2331,6 +2333,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 5f1cecd612..7ccf2b6591 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_suspend F
> -GLIBC_2.27 aio_suspend64 F
>  GLIBC_2.27 aio_write F
>  GLIBC_2.27 aio_write64 F
>  GLIBC_2.27 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index ed6c511cc9..3f64ebb9bd 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1483,6 +1483,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2398,6 +2400,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2495,6 +2498,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 9f1e31574e..f727420c0a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -581,6 +581,8 @@ GLIBC_2.2 aio_read F
>  GLIBC_2.2 aio_read64 F
>  GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
> +GLIBC_2.2 aio_suspend F
> +GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
>  GLIBC_2.2 alphasort64 F
> @@ -2304,6 +2306,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 2442ed5222..15c2ca3e70 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_suspend F
> -GLIBC_2.2 aio_suspend64 F
>  GLIBC_2.2 aio_write F
>  GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index b9e583fa88..3aed85ad55 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2253,6 +2255,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2350,6 +2353,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 2f737fadb8..eed02a7f07 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2250,6 +2252,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2347,6 +2350,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 4cae24e768..b9b9b71dba 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -19,7 +17,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index f4c87b4fa9..c627a8beb7 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1485,6 +1485,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2393,6 +2395,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 ___adjtimex64 F
>  GLIBC_2.34 __adjtime64 F
> +GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __clock_adjtime64 F
>  GLIBC_2.34 __clock_getres64 F
>  GLIBC_2.34 __clock_gettime64 F
> @@ -2490,6 +2493,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 6061373aae..13fff57eb0 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> @@ -20,7 +18,6 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __aio_suspend_time64 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 03acd40463..574b4ef2c1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -18,6 +18,8 @@ GLIBC_2.1 aio_read F
>  GLIBC_2.1 aio_read64 F
>  GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
> +GLIBC_2.1 aio_suspend F
> +GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2326,6 +2328,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 90a66e4a4b..8a8fe654e0 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_suspend F
> -GLIBC_2.1 aio_suspend64 F
>  GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index f81fe5301d..6e3c1ce83b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -570,6 +570,8 @@ GLIBC_2.2.5 aio_read F
>  GLIBC_2.2.5 aio_read64 F
>  GLIBC_2.2.5 aio_return F
>  GLIBC_2.2.5 aio_return64 F
> +GLIBC_2.2.5 aio_suspend F
> +GLIBC_2.2.5 aio_suspend64 F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
>  GLIBC_2.2.5 alphasort64 F
> @@ -2282,6 +2284,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 62fe3da2cb..c2e8ab87d0 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_suspend F
> -GLIBC_2.2.5 aio_suspend64 F
>  GLIBC_2.2.5 aio_write F
>  GLIBC_2.2.5 aio_write64 F
>  GLIBC_2.2.5 lio_listio F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 45d74a3958..42376975e6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -603,6 +603,8 @@ GLIBC_2.16 aio_read F
>  GLIBC_2.16 aio_read64 F
>  GLIBC_2.16 aio_return F
>  GLIBC_2.16 aio_return64 F
> +GLIBC_2.16 aio_suspend F
> +GLIBC_2.16 aio_suspend64 F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
>  GLIBC_2.16 alphasort F
> @@ -2385,6 +2387,8 @@ GLIBC_2.34 aio_read F
>  GLIBC_2.34 aio_read64 F
>  GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
> +GLIBC_2.34 aio_suspend F
> +GLIBC_2.34 aio_suspend64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index a531990038..f7245c6716 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_suspend F
> -GLIBC_2.16 aio_suspend64 F
>  GLIBC_2.16 aio_write F
>  GLIBC_2.16 aio_write64 F
>  GLIBC_2.16 lio_listio F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc
  2021-06-23 19:52   ` Adhemerval Zanella
@ 2021-06-23 19:59     ` Florian Weimer
  0 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-23 19:59 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> -      pthread_cleanup_push (cleanup, &clparam);
>> +#if PTHREAD_IN_LIBC
>> +      __libc_cleanup_region_start (1, cleanup, &clparam);
>> +#else
>> +      __pthread_cleanup_push (cleanup, &clparam);
>> +#endif
>>  
>>  #ifdef DONT_NEED_AIO_MISC_COND
>>        result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
>> @@ -194,7 +200,11 @@ __aio_suspend_time64 (const struct aiocb *const list[], int nent,
>>  				       timeout == NULL ? NULL : &ts32);
>>  #endif
>>  
>> +#if PTHREAD_IN_LIBC
>> +      __libc_cleanup_region_end (0);
>> +#else
>>        pthread_cleanup_pop (0);
>> +#endif
>>      }
>>  
>
> Ok.  What prevents to use __libc_cleanup_region_start on Hurd as well here?

I assumed that it would be available only within libc.

I have no way to test this on Hurd, which is why I wanted to keep the
original code.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc
  2021-06-17 18:58 ` [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc Florian Weimer
@ 2021-06-23 20:02   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 20:02 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> Both symbols have to be moved at the same time because they
> are intertwined for __WORDSIZE == 64.  The treatment of this case
> is also changed to match more closely how the other files suppress
> the declaration of the *64 identifier.
> 
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  rt/Makefile                                   |  4 +-
>  rt/Versions                                   |  6 ++-
>  rt/aio_write.c                                | 37 +++++++++++++++++--
>  rt/aio_write64.c                              | 22 ++++++++---
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../unix/sysv/linux/wordsize-64/aio_write.c   |  7 ----
>  .../unix/sysv/linux/wordsize-64/aio_write64.c |  1 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  68 files changed, 186 insertions(+), 79 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index b375d37ba2..55ebfde457 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -29,8 +29,6 @@ routines = \
>    shm_unlink \
>  
>  librt-routines = \
> -  aio_write \
> -  aio_write64 \
>    librt-compat \
>    lio_listio \
>    lio_listio64 \
> @@ -63,6 +61,8 @@ $(librt-routines-var) += \
>    aio_return \
>    aio_sigqueue \
>    aio_suspend \
> +  aio_write \
> +  aio_write64 \
>  
>  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 d54b9cc4bf..f2b4ced257 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -14,6 +14,8 @@ libc {
>      aio_return64;
>      aio_suspend;
>      aio_suspend64;
> +    aio_write;
> +    aio_write64;
>  %endif
>    }
>    GLIBC_2.2 {
> @@ -35,6 +37,8 @@ libc {
>      aio_return64;
>      aio_suspend;
>      aio_suspend64;
> +    aio_write;
> +    aio_write64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -69,9 +73,9 @@ librt {
>      aio_return64;
>      aio_suspend;
>      aio_suspend64;
> -%endif
>      aio_write;
>      aio_write64;
> +%endif
>      lio_listio;
>      lio_listio64;
>    }

Ok.

> diff --git a/rt/aio_write.c b/rt/aio_write.c
> index ea55f0dbbc..ad50bc9282 100644
> --- a/rt/aio_write.c
> +++ b/rt/aio_write.c
> @@ -17,14 +17,45 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> +#include <bits/wordsize.h>
> +#if __WORDSIZE == 64
> +/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> +   implementation of aio_write and aio_write64 are identical and so
> +   we want to avoid code duplication by using aliases.  But gcc sees
> +   the different parameter lists and prints a warning.  We define here
> +   a function so that aio_write64 has no prototype.  */
> +# define aio_write64 XXX
> +# include <aio.h>
> +/* And undo the hack.  */
> +# undef aio_write64
> +#else
> +# include <aio.h>
> +#endif
>  
>  #include <aio_misc.h>
> -
> +#include <shlib-compat.h>
>  
>  int
> -aio_write (struct aiocb *aiocbp)
> +__aio_write (struct aiocb *aiocbp)
>  {
>    return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL
>  	  ? -1 : 0);
>  }
> +
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_write, aio_write, GLIBC_2_34);
> +# if __WORDSIZE == 64
> +versioned_symbol (libc, __aio_write, aio_write64, GLIBC_2_34);
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_write, aio_write, GLIBC_2_1);
> +#  if __WORDSIZE == 64
> +compat_symbol (librt, __aio_write, aio_write64, GLIBC_2_1);
> +#  endif
> +# endif
> +#else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_write, aio_write)
> +# if __WORDSIZE == 64
> +weak_alias (__aio_write, aio_write64)
> +#endif
> +#endif  /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/rt/aio_write64.c b/rt/aio_write64.c
> index bd6dd316be..5660fa5a41 100644
> --- a/rt/aio_write64.c
> +++ b/rt/aio_write64.c
> @@ -1,4 +1,4 @@
> -/* Asynchronous write, 64bit offset version.
> +/* Asynchronous read, 64bit offset version.
>     Copyright (C) 1997-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
>     Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> @@ -17,14 +17,26 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> -
> -#include <aio_misc.h>
> +#include <bits/wordsize.h>
> +#if __WORDSIZE != 64
>  
> +# include <aio.h>
> +# include <aio_misc.h>
> +# include <shlib-compat.h>
>  
>  int
> -aio_write64 (struct aiocb64 *aiocbp)
> +__aio_write64 (struct aiocb64 *aiocbp)
>  {
>    return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL
>  	  ? -1 : 0);
>  }
> +
> +# if PTHREAD_IN_LIBC
> +versioned_symbol (libc, __aio_write64, aio_write64, GLIBC_2_34);
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (librt, __aio_write64, aio_write64, GLIBC_2_1);
> +#  endif
> +# else /* !PTHREAD_IN_LIBC */
> +strong_alias (__aio_write64, aio_write64)
> +# endif
> +#endif /* __WORDSIZE != 64 */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 6c76d0df61..880dc08ffa 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -602,6 +602,8 @@ GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
>  GLIBC_2.17 aio_suspend64 F
> +GLIBC_2.17 aio_write F
> +GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2374,6 +2376,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 37ff014ed8..66c645887e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_write F
> -GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 lio_listio F
>  GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index e7f0e1b49a..45ba500389 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1515,6 +1515,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2469,6 +2471,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 8a8fe654e0..89a7344c1c 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index cf93d14e6f..fdfe20796b 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -563,6 +563,8 @@ GLIBC_2.32 aio_return F
>  GLIBC_2.32 aio_return64 F
>  GLIBC_2.32 aio_suspend F
>  GLIBC_2.32 aio_suspend64 F
> +GLIBC_2.32 aio_write F
> +GLIBC_2.32 aio_write64 F
>  GLIBC_2.32 alarm F
>  GLIBC_2.32 aligned_alloc F
>  GLIBC_2.32 alphasort F
> @@ -2133,6 +2135,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 4eb7de36e1..780fb36a31 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 aio_write F
> -GLIBC_2.32 aio_write64 F
>  GLIBC_2.32 lio_listio F
>  GLIBC_2.32 lio_listio64 F
>  GLIBC_2.32 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 9d9e4c6b73..8e6cb9ad9d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -292,6 +292,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -1008,6 +1010,8 @@ GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
> +GLIBC_2.4 aio_write F
> +GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 7cb476c7b4..5c655ba14e 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_write F
> -GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
>  GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index a195587b66..58190af9e0 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -289,6 +289,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -1005,6 +1007,8 @@ GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
> +GLIBC_2.4 aio_write F
> +GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 7cb476c7b4..5c655ba14e 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_write F
> -GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
>  GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 1e3c73aa2d..4ebfe66490 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -577,6 +577,8 @@ GLIBC_2.29 aio_return F
>  GLIBC_2.29 aio_return64 F
>  GLIBC_2.29 aio_suspend F
>  GLIBC_2.29 aio_suspend64 F
> +GLIBC_2.29 aio_write F
> +GLIBC_2.29 aio_write64 F
>  GLIBC_2.29 alarm F
>  GLIBC_2.29 aligned_alloc F
>  GLIBC_2.29 alphasort F
> @@ -2394,6 +2396,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index fcc993f16f..e8bf05dae6 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 aio_write F
> -GLIBC_2.29 aio_write64 F
>  GLIBC_2.29 lio_listio F
>  GLIBC_2.29 lio_listio64 F
>  GLIBC_2.29 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 3e0ff7575e..685eab4532 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -16,6 +16,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2348,6 +2350,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 54b5ee4649..19b2f11845 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1488,6 +1488,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2532,6 +2534,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 9aac5c8ff4..8d9f6ff3b6 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -16,6 +16,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2307,6 +2309,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 67435f760c..1eef73b204 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 87baa69dfe..2ab4862211 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -293,6 +293,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> @@ -996,6 +998,8 @@ GLIBC_2.4 aio_return F
>  GLIBC_2.4 aio_return64 F
>  GLIBC_2.4 aio_suspend F
>  GLIBC_2.4 aio_suspend64 F
> +GLIBC_2.4 aio_write F
> +GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 alarm F
>  GLIBC_2.4 alphasort F
>  GLIBC_2.4 alphasort64 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 7cb476c7b4..5c655ba14e 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 aio_write F
> -GLIBC_2.4 aio_write64 F
>  GLIBC_2.4 lio_listio F
>  GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 68aa865da4..f4ee74ce72 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1486,6 +1486,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2475,6 +2477,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 19aef593f3..d0dcf88270 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -604,6 +604,8 @@ GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
>  GLIBC_2.18 aio_suspend64 F
> +GLIBC_2.18 aio_write F
> +GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2445,6 +2447,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 06e862de52..5a24a449c8 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_write F
> -GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 lio_listio F
>  GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index d5f26a2d9b..a5a1b7ddc4 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -604,6 +604,8 @@ GLIBC_2.18 aio_return F
>  GLIBC_2.18 aio_return64 F
>  GLIBC_2.18 aio_suspend F
>  GLIBC_2.18 aio_suspend64 F
> +GLIBC_2.18 aio_write F
> +GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 alarm F
>  GLIBC_2.18 aligned_alloc F
>  GLIBC_2.18 alphasort F
> @@ -2442,6 +2444,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 06e862de52..5a24a449c8 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 aio_write F
> -GLIBC_2.18 aio_write64 F
>  GLIBC_2.18 lio_listio F
>  GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index ba77980ef8..a6d55c9639 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1664,6 +1664,8 @@ GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
> +GLIBC_2.2 aio_write F
> +GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2440,6 +2442,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 0a07f87ce9..1d8e4643b5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_write F
> -GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
>  GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 1e6c7a1eb3..4f72d3c617 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1662,6 +1662,8 @@ GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
> +GLIBC_2.2 aio_write F
> +GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2438,6 +2440,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index fd731ffed0..216e8fbe03 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1663,6 +1663,8 @@ GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
> +GLIBC_2.2 aio_write F
> +GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2446,6 +2448,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 0a07f87ce9..1d8e4643b5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_write F
> -GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
>  GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 9f82375689..9671631450 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1659,6 +1659,8 @@ GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
> +GLIBC_2.2 aio_write F
> +GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 alphasort64 F
>  GLIBC_2.2 argp_err_exit_status D 0x4
>  GLIBC_2.2 argp_error F
> @@ -2363,6 +2365,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 7d7be4d9ec..f2cda0ef51 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_write F
> -GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
>  GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 77a0544dbf..6d105407dd 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -646,6 +646,8 @@ GLIBC_2.21 aio_return F
>  GLIBC_2.21 aio_return64 F
>  GLIBC_2.21 aio_suspend F
>  GLIBC_2.21 aio_suspend64 F
> +GLIBC_2.21 aio_write F
> +GLIBC_2.21 aio_write64 F
>  GLIBC_2.21 alarm F
>  GLIBC_2.21 aligned_alloc F
>  GLIBC_2.21 alphasort F
> @@ -2484,6 +2486,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 0db5142065..dc18b0dc39 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 aio_write F
> -GLIBC_2.21 aio_write64 F
>  GLIBC_2.21 lio_listio F
>  GLIBC_2.21 lio_listio64 F
>  GLIBC_2.21 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index ed6f66c610..783ce5aa8e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1493,6 +1493,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2502,6 +2504,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 817530d12f..badcc67295 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1493,6 +1493,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2535,6 +2537,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 40a27cfd26..838b3323f1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -646,6 +646,8 @@ GLIBC_2.3 aio_return F
>  GLIBC_2.3 aio_return64 F
>  GLIBC_2.3 aio_suspend F
>  GLIBC_2.3 aio_suspend64 F
> +GLIBC_2.3 aio_write F
> +GLIBC_2.3 aio_write64 F
>  GLIBC_2.3 alarm F
>  GLIBC_2.3 alphasort F
>  GLIBC_2.3 alphasort64 F
> @@ -2271,6 +2273,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 205c9536b4..dcbadb2a1b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 aio_write F
> -GLIBC_2.3 aio_write64 F
>  GLIBC_2.3 lio_listio F
>  GLIBC_2.3 lio_listio64 F
>  GLIBC_2.3 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 208096bebf..b51ebf0861 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -690,6 +690,8 @@ GLIBC_2.17 aio_return F
>  GLIBC_2.17 aio_return64 F
>  GLIBC_2.17 aio_suspend F
>  GLIBC_2.17 aio_suspend64 F
> +GLIBC_2.17 aio_write F
> +GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 alarm F
>  GLIBC_2.17 aligned_alloc F
>  GLIBC_2.17 alphasort F
> @@ -2570,6 +2572,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 37ff014ed8..66c645887e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 aio_write F
> -GLIBC_2.17 aio_write64 F
>  GLIBC_2.17 lio_listio F
>  GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 20b4b7c0ad..caed7efe2b 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -557,6 +557,8 @@ GLIBC_2.33 aio_return F
>  GLIBC_2.33 aio_return64 F
>  GLIBC_2.33 aio_suspend F
>  GLIBC_2.33 aio_suspend64 F
> +GLIBC_2.33 aio_write F
> +GLIBC_2.33 aio_write64 F
>  GLIBC_2.33 alarm F
>  GLIBC_2.33 aligned_alloc F
>  GLIBC_2.33 alphasort F
> @@ -2135,6 +2137,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 51c25c849d..82f04551d5 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 aio_write F
> -GLIBC_2.33 aio_write64 F
>  GLIBC_2.33 lio_listio F
>  GLIBC_2.33 lio_listio64 F
>  GLIBC_2.33 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 9675d2f767..e9574cf0e4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -583,6 +583,8 @@ GLIBC_2.27 aio_return F
>  GLIBC_2.27 aio_return64 F
>  GLIBC_2.27 aio_suspend F
>  GLIBC_2.27 aio_suspend64 F
> +GLIBC_2.27 aio_write F
> +GLIBC_2.27 aio_write64 F
>  GLIBC_2.27 alarm F
>  GLIBC_2.27 aligned_alloc F
>  GLIBC_2.27 alphasort F
> @@ -2335,6 +2337,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 7ccf2b6591..044eace5c3 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 aio_write F
> -GLIBC_2.27 aio_write64 F
>  GLIBC_2.27 lio_listio F
>  GLIBC_2.27 lio_listio64 F
>  GLIBC_2.27 mq_close F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 3f64ebb9bd..28f002dcd8 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1485,6 +1485,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2500,6 +2502,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index f727420c0a..2d6d3fd601 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -583,6 +583,8 @@ GLIBC_2.2 aio_return F
>  GLIBC_2.2 aio_return64 F
>  GLIBC_2.2 aio_suspend F
>  GLIBC_2.2 aio_suspend64 F
> +GLIBC_2.2 aio_write F
> +GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 alarm F
>  GLIBC_2.2 alphasort F
>  GLIBC_2.2 alphasort64 F
> @@ -2308,6 +2310,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 15c2ca3e70..03aed4d0f7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 aio_write F
> -GLIBC_2.2 aio_write64 F
>  GLIBC_2.2 lio_listio F
>  GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 3aed85ad55..327cc0812d 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2355,6 +2357,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index eed02a7f07..4993b24e22 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2352,6 +2354,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index b9b9b71dba..eb80c67c84 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index c627a8beb7..e48e78079f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1487,6 +1487,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 alphasort64 F
>  GLIBC_2.1 argp_err_exit_status D 0x4
>  GLIBC_2.1 argp_error F
> @@ -2495,6 +2497,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 13fff57eb0..3c39a8ba0a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 574b4ef2c1..85a4dfa37c 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -20,6 +20,8 @@ GLIBC_2.1 aio_return F
>  GLIBC_2.1 aio_return64 F
>  GLIBC_2.1 aio_suspend F
>  GLIBC_2.1 aio_suspend64 F
> +GLIBC_2.1 aio_write F
> +GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
>  GLIBC_2.10 __cxa_at_quick_exit F
> @@ -2330,6 +2332,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 8a8fe654e0..89a7344c1c 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.1 aio_write F
> -GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 lio_listio F
>  GLIBC_2.1 lio_listio64 F
>  GLIBC_2.2 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
> deleted file mode 100644
> index 60d242f88f..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write.c
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -#define aio_write64 __renamed_aio_write64
> -
> -#include <rt/aio_write.c>
> -
> -#undef aio_write64
> -
> -weak_alias (aio_write, aio_write64)
> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c b/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
> deleted file mode 100644
> index ced07fa273..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/aio_write64.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -/* Defined in aio_write.c.  */
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 6e3c1ce83b..c95b54fad3 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -572,6 +572,8 @@ GLIBC_2.2.5 aio_return F
>  GLIBC_2.2.5 aio_return64 F
>  GLIBC_2.2.5 aio_suspend F
>  GLIBC_2.2.5 aio_suspend64 F
> +GLIBC_2.2.5 aio_write F
> +GLIBC_2.2.5 aio_write64 F
>  GLIBC_2.2.5 alarm F
>  GLIBC_2.2.5 alphasort F
>  GLIBC_2.2.5 alphasort64 F
> @@ -2286,6 +2288,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index c2e8ab87d0..974a0bf943 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 aio_write F
> -GLIBC_2.2.5 aio_write64 F
>  GLIBC_2.2.5 lio_listio F
>  GLIBC_2.2.5 lio_listio64 F
>  GLIBC_2.2.5 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 42376975e6..c543baf92b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -605,6 +605,8 @@ GLIBC_2.16 aio_return F
>  GLIBC_2.16 aio_return64 F
>  GLIBC_2.16 aio_suspend F
>  GLIBC_2.16 aio_suspend64 F
> +GLIBC_2.16 aio_write F
> +GLIBC_2.16 aio_write64 F
>  GLIBC_2.16 alarm F
>  GLIBC_2.16 aligned_alloc F
>  GLIBC_2.16 alphasort F
> @@ -2389,6 +2391,8 @@ GLIBC_2.34 aio_return F
>  GLIBC_2.34 aio_return64 F
>  GLIBC_2.34 aio_suspend F
>  GLIBC_2.34 aio_suspend64 F
> +GLIBC_2.34 aio_write F
> +GLIBC_2.34 aio_write64 F
>  GLIBC_2.34 call_once F
>  GLIBC_2.34 cnd_broadcast F
>  GLIBC_2.34 cnd_destroy F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index f7245c6716..42f733844b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 aio_write F
> -GLIBC_2.16 aio_write64 F
>  GLIBC_2.16 lio_listio F
>  GLIBC_2.16 lio_listio64 F
>  GLIBC_2.16 mq_close F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 18/34] rt: Rework lio_listio implementation
  2021-06-17 18:58 ` [PATCH 18/34] rt: Rework lio_listio implementation Florian Weimer
@ 2021-06-23 20:10   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 20:10 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> Move the common code into rt/lio_listio-common.c and include
> the file in both rt/lio_listio.c and rt/lio_listio64.c.  The common
> code automatically defines both public symbols for __WORDSIZE == 64.

LGTM, with a small nit below.

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

> ---
>  rt/lio_listio-common.c                        | 275 ++++++++++++++++++
>  rt/lio_listio.c                               | 235 +--------------
>  rt/lio_listio64.c                             |  27 +-
>  .../unix/sysv/linux/wordsize-64/lio_listio.c  |  13 -
>  .../sysv/linux/wordsize-64/lio_listio64.c     |   1 -
>  5 files changed, 292 insertions(+), 259 deletions(-)
>  create mode 100644 rt/lio_listio-common.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
> 
> diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
> new file mode 100644
> index 0000000000..a85753823f
> --- /dev/null
> +++ b/rt/lio_listio-common.c
> @@ -0,0 +1,275 @@
> +/* Enqueue and list of read or write requests.  Common code template.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
> +
> +   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/>.  */
> +
> +/* The following macros must be defined before including this file:
> +
> +   LIO_LISTIO         The public symbol (lio_listio or lio_listio64).
> +   AIOCB              Struct tag used by LIO_LISTIO (aiocb or aiocb64).
> +   LIO_LISTIO_OLD     The internal symbol for the compat implementation.
> +   LIO_LISTIO_NEW     The internal symbol for the current implementation.
> +   LIO_OPCODE_BASE    Opcode shift for 64-bit version with 32-bit word size.
> +
> +   For __WORDSIZE == 64, LIO_LISTIO must always be lio_listio, and
> +   lio_listio64 is automatically defined as well.  */
> +
> +#include <bits/wordsize.h>
> +#if __WORDSIZE == 64
> +/* We use an UGLY hack to prevent gcc from finding us cheating.  The
> +   implementation of lio_listio and lio_listio64 are identical and so
> +   we want to avoid code duplication by using aliases.  But gcc sees
> +   the different parameter lists and prints a warning.  We define here
> +   a function so that lio_listio64 has no prototype.  */
> +# define lio_listio64 XXX
> +# include <aio.h>
> +/* And undo the hack.  */
> +# undef lio_listio64
> +#else
> +# include <aio.h>
> +#endif
> +
> +#include <assert.h>
> +#include <errno.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +
> +#include <aio_misc.h>
> +
> +#include <shlib-compat.h>
> +
> +
> +/* We need this special structure to handle asynchronous I/O.  */
> +struct async_waitlist
> +  {
> +    unsigned int counter;
> +    struct sigevent sigev;
> +    struct waitlist list[0];
> +  };
> +
> +
> +/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
> +   requests submitted with lio_listio finished.  The existing practice
> +   is to issue events for the individual requests as well.  This is
> +   what the new code does.  */
> +#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> +# define LIO_MODE(mode) ((mode) & 127)
> +# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
> +#else
> +# define LIO_MODE(mode) mode
> +# define NO_INDIVIDUAL_EVENT_P(mode) 0
> +#endif
> +
> +
> +static int
> +lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
> +		     struct sigevent *sig)
> +{
> +  struct sigevent defsigev;
> +  struct requestlist *requests[nent];
> +  int cnt;
> +  volatile unsigned int total = 0;
> +  int result = 0;
> +
> +  if (sig == NULL)
> +    {
> +      defsigev.sigev_notify = SIGEV_NONE;
> +      sig = &defsigev;
> +    }
> +
> +  /* Request the mutex.  */
> +  pthread_mutex_lock (&__aio_requests_mutex);
> +
> +  /* Now we can enqueue all requests.  Since we already acquired the
> +     mutex the enqueue function need not do this.  */
> +  for (cnt = 0; cnt < nent; ++cnt)
> +    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> +      {
> +	if (NO_INDIVIDUAL_EVENT_P (mode))
> +	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
> +
> +	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
> +					       (list[cnt]->aio_lio_opcode
> +						| LIO_OPCODE_BASE));
> +
> +	if (requests[cnt] != NULL)
> +	  /* Successfully enqueued.  */
> +	  ++total;
> +	else
> +	  /* Signal that we've seen an error.  `errno' and the error code
> +	     of the aiocb will tell more.  */
> +	  result = -1;
> +      }
> +    else
> +      requests[cnt] = NULL;
> +
> +  if (total == 0)
> +    {
> +      /* We don't have anything to do except signalling if we work
> +	 asynchronously.  */
> +
> +      /* Release the mutex.  We do this before raising a signal since the
> +	 signal handler might do a `siglongjmp' and then the mutex is
> +	 locked forever.  */
> +      pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +      if (LIO_MODE (mode) == LIO_NOWAIT)
> +	__aio_notify_only (sig);
> +
> +      return result;
> +    }
> +  else if (LIO_MODE (mode) == LIO_WAIT)
> +    {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> +      int oldstate;
> +#endif
> +      struct waitlist waitlist[nent];
> +
> +      total = 0;
> +      for (cnt = 0; cnt < nent; ++cnt)
> +	{
> +	  assert (requests[cnt] == NULL || list[cnt] != NULL);
> +
> +	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> +	    {
> +#ifndef DONT_NEED_AIO_MISC_COND
> +	      waitlist[cnt].cond = &cond;
> +#endif
> +	      waitlist[cnt].result = &result;
> +	      waitlist[cnt].next = requests[cnt]->waiting;
> +	      waitlist[cnt].counterp = &total;
> +	      waitlist[cnt].sigevp = NULL;
> +	      requests[cnt]->waiting = &waitlist[cnt];
> +	      ++total;
> +	    }
> +	}
> +
> +#ifdef DONT_NEED_AIO_MISC_COND
> +      AIO_MISC_WAIT (result, total, NULL, 0);
> +#else
> +      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
> +	 points we must be careful.  We added entries to the waiting lists
> +	 which we must remove.  So defer cancellation for now.  */
> +      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
> +
> +      while (total > 0)
> +	pthread_cond_wait (&cond, &__aio_requests_mutex);
> +
> +      /* Now it's time to restore the cancellation state.  */
> +      pthread_setcancelstate (oldstate, NULL);
> +
> +      /* Release the conditional variable.  */
> +      if (pthread_cond_destroy (&cond) != 0)
> +	/* This must never happen.  */
> +	abort ();
> +#endif
> +
> +      /* If any of the I/O requests failed, return -1 and set errno.  */
> +      if (result != 0)
> +	{
> +	  __set_errno (result == EINTR ? EINTR : EIO);
> +	  result = -1;
> +	}
> +    }
> +  else
> +    {
> +      struct async_waitlist *waitlist;
> +
> +      waitlist = (struct async_waitlist *)
> +	malloc (sizeof (struct async_waitlist)
> +		+ (nent * sizeof (struct waitlist)));
> +
> +      if (waitlist == NULL)
> +	{
> +	  __set_errno (EAGAIN);
> +	  result = -1;
> +	}
> +      else
> +	{
> +	  total = 0;
> +
> +	  for (cnt = 0; cnt < nent; ++cnt)
> +	    {
> +	      assert (requests[cnt] == NULL || list[cnt] != NULL);
> +
> +	      if (requests[cnt] != NULL
> +		  && list[cnt]->aio_lio_opcode != LIO_NOP)
> +		{
> +#ifndef DONT_NEED_AIO_MISC_COND
> +		  waitlist->list[cnt].cond = NULL;
> +#endif
> +		  waitlist->list[cnt].result = NULL;
> +		  waitlist->list[cnt].next = requests[cnt]->waiting;
> +		  waitlist->list[cnt].counterp = &waitlist->counter;
> +		  waitlist->list[cnt].sigevp = &waitlist->sigev;
> +		  requests[cnt]->waiting = &waitlist->list[cnt];
> +		  ++total;
> +		}
> +	    }
> +
> +	  waitlist->counter = total;
> +	  waitlist->sigev = *sig;
> +	}
> +    }
> +
> +  /* Release the mutex.  */
> +  pthread_mutex_unlock (&__aio_requests_mutex);
> +
> +  return result;
> +}
> +
> +
> +#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> +int
> +attribute_compat_text_section
> +LIO_LISTIO_OLD (int mode, struct AIOCB *const list[], int nent,
> +                struct sigevent *sig)
> +{
> +  /* Check arguments.  */
> +  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
> +}
> +compat_symbol (librt, LIO_LISTIO_OLD, LIO_LISTIO, GLIBC_2_1);
> +# if __WORDSIZE == 64
> +compat_symbol (librt, LIO_LISTIO_OLD, lio_listio64, GLIBC_2_1);
> +# endif
> +#endif /* SHLIB_COMPAT */
> +
> +
> +int
> +LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int nent,
> +                struct sigevent *sig)
> +{
> +    /* Check arguments.  */
> +  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  return lio_listio_internal (mode, list, nent, sig);
> +}
> +versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
> +#if __WORDSIZE == 64
> +versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
> +#endif

Ok.

> diff --git a/rt/lio_listio.c b/rt/lio_listio.c
> index 2cab3c2254..bcc3bb1393 100644
> --- a/rt/lio_listio.c
> +++ b/rt/lio_listio.c
> @@ -1,7 +1,6 @@
>  /* Enqueue and list of read or write requests.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -17,232 +16,10 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#ifndef lio_listio
> -#include <aio.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -
> -#include <aio_misc.h>
> -
> +#define LIO_LISTIO lio_listio
> +#define AIOCB aiocb
> +#define LIO_LISTIO_OLD __lio_listio_21
> +#define LIO_LISTIO_NEW __lio_listio_24
>  #define LIO_OPCODE_BASE 0
> -#endif
> -
> -#include <shlib-compat.h>
> -
> -
> -/* We need this special structure to handle asynchronous I/O.  */
> -struct async_waitlist
> -  {
> -    unsigned int counter;
> -    struct sigevent sigev;
> -    struct waitlist list[0];
> -  };
> -
> -
> -/* The code in glibc 2.1 to glibc 2.4 issued only one event when all
> -   requests submitted with lio_listio finished.  The existing practice
> -   is to issue events for the individual requests as well.  This is
> -   what the new code does.  */
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> -# define LIO_MODE(mode) ((mode) & 127)
> -# define NO_INDIVIDUAL_EVENT_P(mode) ((mode) & 128)
> -#else
> -# define LIO_MODE(mode) mode
> -# define NO_INDIVIDUAL_EVENT_P(mode) 0
> -#endif
> -
> -
> -static int
> -lio_listio_internal (int mode, struct aiocb *const list[], int nent,
> -		     struct sigevent *sig)
> -{
> -  struct sigevent defsigev;
> -  struct requestlist *requests[nent];
> -  int cnt;
> -  volatile unsigned int total = 0;
> -  int result = 0;
> -
> -  if (sig == NULL)
> -    {
> -      defsigev.sigev_notify = SIGEV_NONE;
> -      sig = &defsigev;
> -    }
> -
> -  /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> -
> -  /* Now we can enqueue all requests.  Since we already acquired the
> -     mutex the enqueue function need not do this.  */
> -  for (cnt = 0; cnt < nent; ++cnt)
> -    if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> -      {
> -	if (NO_INDIVIDUAL_EVENT_P (mode))
> -	  list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
> -
> -	requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
> -					       (list[cnt]->aio_lio_opcode
> -						| LIO_OPCODE_BASE));
> -
> -	if (requests[cnt] != NULL)
> -	  /* Successfully enqueued.  */
> -	  ++total;
> -	else
> -	  /* Signal that we've seen an error.  `errno' and the error code
> -	     of the aiocb will tell more.  */
> -	  result = -1;
> -      }
> -    else
> -      requests[cnt] = NULL;
> -
> -  if (total == 0)
> -    {
> -      /* We don't have anything to do except signalling if we work
> -	 asynchronously.  */
> -
> -      /* Release the mutex.  We do this before raising a signal since the
> -	 signal handler might do a `siglongjmp' and then the mutex is
> -	 locked forever.  */
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -      if (LIO_MODE (mode) == LIO_NOWAIT)
> -	__aio_notify_only (sig);
> -
> -      return result;
> -    }
> -  else if (LIO_MODE (mode) == LIO_WAIT)
> -    {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -      pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> -      int oldstate;
> -#endif
> -      struct waitlist waitlist[nent];
> -
> -      total = 0;
> -      for (cnt = 0; cnt < nent; ++cnt)
> -	{
> -	  assert (requests[cnt] == NULL || list[cnt] != NULL);
> -
> -	  if (requests[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
> -	    {
> -#ifndef DONT_NEED_AIO_MISC_COND
> -	      waitlist[cnt].cond = &cond;
> -#endif
> -	      waitlist[cnt].result = &result;
> -	      waitlist[cnt].next = requests[cnt]->waiting;
> -	      waitlist[cnt].counterp = &total;
> -	      waitlist[cnt].sigevp = NULL;
> -	      requests[cnt]->waiting = &waitlist[cnt];
> -	      ++total;
> -	    }
> -	}
> -
> -#ifdef DONT_NEED_AIO_MISC_COND
> -      AIO_MISC_WAIT (result, total, NULL, 0);
> -#else
> -      /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
> -	 points we must be careful.  We added entries to the waiting lists
> -	 which we must remove.  So defer cancellation for now.  */
> -      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
> -
> -      while (total > 0)
> -	pthread_cond_wait (&cond, &__aio_requests_mutex);
> -
> -      /* Now it's time to restore the cancellation state.  */
> -      pthread_setcancelstate (oldstate, NULL);
> -
> -      /* Release the conditional variable.  */
> -      if (pthread_cond_destroy (&cond) != 0)
> -	/* This must never happen.  */
> -	abort ();
> -#endif
> -
> -      /* If any of the I/O requests failed, return -1 and set errno.  */
> -      if (result != 0)
> -	{
> -	  __set_errno (result == EINTR ? EINTR : EIO);
> -	  result = -1;
> -	}
> -    }
> -  else
> -    {
> -      struct async_waitlist *waitlist;
> -
> -      waitlist = (struct async_waitlist *)
> -	malloc (sizeof (struct async_waitlist)
> -		+ (nent * sizeof (struct waitlist)));
> -
> -      if (waitlist == NULL)
> -	{
> -	  __set_errno (EAGAIN);
> -	  result = -1;
> -	}
> -      else
> -	{
> -	  total = 0;
> -
> -	  for (cnt = 0; cnt < nent; ++cnt)
> -	    {
> -	      assert (requests[cnt] == NULL || list[cnt] != NULL);
> -
> -	      if (requests[cnt] != NULL
> -		  && list[cnt]->aio_lio_opcode != LIO_NOP)
> -		{
> -#ifndef DONT_NEED_AIO_MISC_COND
> -		  waitlist->list[cnt].cond = NULL;
> -#endif
> -		  waitlist->list[cnt].result = NULL;
> -		  waitlist->list[cnt].next = requests[cnt]->waiting;
> -		  waitlist->list[cnt].counterp = &waitlist->counter;
> -		  waitlist->list[cnt].sigevp = &waitlist->sigev;
> -		  requests[cnt]->waiting = &waitlist->list[cnt];
> -		  ++total;
> -		}
> -	    }
> -
> -	  waitlist->counter = total;
> -	  waitlist->sigev = *sig;
> -	}
> -    }
> -
> -  /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> -
> -  return result;
> -}
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> -int
> -attribute_compat_text_section
> -__lio_listio_21 (int mode, struct aiocb *const list[], int nent,
> -		 struct sigevent *sig)
> -{
> -  /* Check arguments.  */
> -  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  return lio_listio_internal (mode | LIO_NO_INDIVIDUAL_EVENT, list, nent, sig);
> -}
> -compat_symbol (librt, __lio_listio_21, lio_listio, GLIBC_2_1);
> -#endif
> -
> -
> -int
> -__lio_listio_item_notify (int mode, struct aiocb *const list[], int nent,
> -			  struct sigevent *sig)
> -{
> -    /* Check arguments.  */
> -  if (mode != LIO_WAIT && mode != LIO_NOWAIT)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
>  
> -  return lio_listio_internal (mode, list, nent, sig);
> -}
> -versioned_symbol (librt, __lio_listio_item_notify, lio_listio, GLIBC_2_4);
> +#include "lio_listio-common.c"

Ok, but I would prefer to include the full path (<rt/lio_listio-common.c>).

> diff --git a/rt/lio_listio64.c b/rt/lio_listio64.c
> index 111c883a2f..597bf733a2 100644
> --- a/rt/lio_listio64.c
> +++ b/rt/lio_listio64.c
> @@ -1,7 +1,6 @@
> -/* Enqueue and list of read or write requests, 64bit offset version.
> -   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +/* Enqueue and list of read or write requests.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
>  
>     The GNU C Library is free software; you can redistribute it and/or
>     modify it under the terms of the GNU Lesser General Public
> @@ -17,17 +16,13 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>  
> -#include <aio.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> +#include <bits/wordsize.h>
> +#if __WORDSIZE != 64
> +# define AIOCB aiocb64
> +# define LIO_LISTIO lio_listio64
> +# define LIO_LISTIO_OLD __lio_listio64_21
> +# define LIO_LISTIO_NEW __lio_listio64_24
> +# define LIO_OPCODE_BASE 128
>  
> -#include <aio_misc.h>
> -
> -#define lio_listio lio_listio64
> -#define __lio_listio_21 __lio_listio64_21
> -#define __lio_listio_item_notify __lio_listio64_item_notify
> -#define aiocb aiocb64
> -#define LIO_OPCODE_BASE 128
> -#include <lio_listio.c>
> +# include "lio_listio-common.c"
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
> deleted file mode 100644
> index be9fe7a9c7..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio.c
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -#define lio_listio64 __renamed_lio_listio64
> -
> -#include <rt/lio_listio.c>
> -
> -#undef lio_listio64
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> -strong_alias (__lio_listio_21, __lio_listio64_21)
> -compat_symbol (librt, __lio_listio64_21, lio_listio64, GLIBC_2_1);
> -#endif
> -
> -strong_alias (__lio_listio_item_notify, __lio_listio64_item_notify)
> -versioned_symbol (librt, __lio_listio64_item_notify, lio_listio64, GLIBC_2_4);
> diff --git a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c b/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
> deleted file mode 100644
> index 1dabae3692..0000000000
> --- a/sysdeps/unix/sysv/linux/wordsize-64/lio_listio64.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -/* Defined in lio_listio.c.  */
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc
  2021-06-17 18:58 ` [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
@ 2021-06-23 20:12   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-23 20:12 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> Placeholder symbols are needed on some architectures, to keep the
> GLIBC_2.1 and GLIBC_2.4 symbol versions around.

LGTM, thanks.

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

> ---
>  rt/Makefile                                   |  4 +--
>  rt/Versions                                   | 20 +++++++++++--
>  rt/librt-compat.c                             | 12 ++++++++
>  rt/lio_listio-common.c                        | 29 ++++++++++++++-----
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 +++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  6 ++--
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 +++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 +++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 +++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 +++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  6 ++++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  6 ++--
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  6 ++++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  6 ++--
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  6 ++++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  6 ++--
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 +++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  6 ++++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  6 ++--
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 +++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 +++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  6 ++++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  5 +---
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  6 ++++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  6 ++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  5 +---
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  6 ++++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  5 +---
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 +++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  6 ++++
>  .../linux/powerpc/powerpc32/librt.abilist     |  6 ++--
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  6 ++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  6 ++++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  5 +---
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 +++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 +++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 --
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 +++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 --
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  6 ++++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  6 ++--
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  6 ++++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  5 +---
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  6 ++++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  6 ++--
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  6 ++++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  6 ++--
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  6 ++++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  6 ++--
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  6 ++--
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  6 ++++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  5 +---
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 +++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 --
>  66 files changed, 248 insertions(+), 105 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 55ebfde457..edeb37fef3 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,8 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  lio_listio \
> -  lio_listio64 \
>    mq_close \
>    mq_getattr \
>    mq_notify \
> @@ -63,6 +61,8 @@ $(librt-routines-var) += \
>    aio_suspend \
>    aio_write \
>    aio_write64 \
> +  lio_listio \
> +  lio_listio64 \
>  
>  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 f2b4ced257..0565707456 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -16,12 +16,20 @@ libc {
>      aio_suspend64;
>      aio_write;
>      aio_write64;
> +    lio_listio;
> +    lio_listio64;
>  %endif
>    }
>    GLIBC_2.2 {
>      shm_open;
>      shm_unlink;
>    }
> +  GLIBC_2.4 {
> +%if PTHREAD_IN_LIBC
> +    lio_listio;
> +    lio_listio64;
> +%endif
> +  }
>    GLIBC_2.34 {
>  %if PTHREAD_IN_LIBC
>      aio_cancel;
> @@ -39,6 +47,8 @@ libc {
>      aio_suspend64;
>      aio_write;
>      aio_write64;
> +    lio_listio;
> +    lio_listio64;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -59,7 +69,9 @@ libc {
>  }
>  librt {
>    GLIBC_2.1 {
> -%if !PTHREAD_IN_LIBC
> +%if PTHREAD_IN_LIBC
> +    __librt_version_placeholder;
> +%else
>      aio_cancel;
>      aio_cancel64;
>      aio_error;
> @@ -75,9 +87,9 @@ librt {
>      aio_suspend64;
>      aio_write;
>      aio_write64;
> -%endif
>      lio_listio;
>      lio_listio64;
> +%endif
>    }
>    GLIBC_2.2 {
>      timer_create;
> @@ -99,8 +111,12 @@ librt {
>      mq_unlink;
>    }
>    GLIBC_2.4 {
> +%if PTHREAD_IN_LIBC
> +    __librt_version_placeholder;
> +%else
>      lio_listio;
>      lio_listio64;
> +%endif
>    }
>    GLIBC_2.7 {
>     __mq_open_2;

Ok.

> diff --git a/rt/librt-compat.c b/rt/librt-compat.c
> index 7e5f1db940..23c87b0f3e 100644
> --- a/rt/librt-compat.c
> +++ b/rt/librt-compat.c
> @@ -26,4 +26,16 @@ __attribute_used__
>  __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_4 != ABI_librt_GLIBC_2_1
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_4);
> +# endif
> +
>  #endif

Ok.

> diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
> index a85753823f..b149a64972 100644
> --- a/rt/lio_listio-common.c
> +++ b/rt/lio_listio-common.c
> @@ -47,6 +47,7 @@
>  #include <errno.h>
>  #include <stdlib.h>
>  #include <unistd.h>
> +#include <pthreadP.h>
>  
>  #include <aio_misc.h>
>  
> @@ -92,7 +93,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
>      }
>  
>    /* Request the mutex.  */
> -  pthread_mutex_lock (&__aio_requests_mutex);
> +  __pthread_mutex_lock (&__aio_requests_mutex);
>  
>    /* Now we can enqueue all requests.  Since we already acquired the
>       mutex the enqueue function need not do this.  */
> @@ -125,7 +126,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
>        /* Release the mutex.  We do this before raising a signal since the
>  	 signal handler might do a `siglongjmp' and then the mutex is
>  	 locked forever.  */
> -      pthread_mutex_unlock (&__aio_requests_mutex);
> +      __pthread_mutex_unlock (&__aio_requests_mutex);
>  
>        if (LIO_MODE (mode) == LIO_NOWAIT)
>  	__aio_notify_only (sig);
> @@ -228,13 +229,13 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
>      }
>  
>    /* Release the mutex.  */
> -  pthread_mutex_unlock (&__aio_requests_mutex);
> +  __pthread_mutex_unlock (&__aio_requests_mutex);
>  
>    return result;
>  }
>  
>  
> -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
>  int
>  attribute_compat_text_section
>  LIO_LISTIO_OLD (int mode, struct AIOCB *const list[], int nent,
> @@ -253,7 +254,7 @@ compat_symbol (librt, LIO_LISTIO_OLD, LIO_LISTIO, GLIBC_2_1);
>  # if __WORDSIZE == 64
>  compat_symbol (librt, LIO_LISTIO_OLD, lio_listio64, GLIBC_2_1);
>  # endif
> -#endif /* SHLIB_COMPAT */
> +#endif /* OTHER_SHLIB_COMPAT */
>  
>  
>  int
> @@ -269,7 +270,21 @@ LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int nent,
>  
>    return lio_listio_internal (mode, list, nent, sig);
>  }
> +
> +#if PTHREAD_IN_LIBC
> +versioned_symbol (libc, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_34);
> +# if __WORDSIZE == 64
> +versioned_symbol (libc, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_34);
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
> +compat_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
> +#  if __WORDSIZE == 64
> +compat_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
> +#  endif
> +# endif /* OTHER_SHLIB_COMPAT */
> +#else /* !PTHREAD_IN_LIBC */
>  versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
> -#if __WORDSIZE == 64
> +# if __WORDSIZE == 64
>  versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
> -#endif
> +# endif
> +#endif /* !PTHREAD_IN_LIBC */


Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 880dc08ffa..18bbe0c86b 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1268,6 +1268,8 @@ GLIBC_2.17 lfind F
>  GLIBC_2.17 lgetxattr F
>  GLIBC_2.17 link F
>  GLIBC_2.17 linkat F
> +GLIBC_2.17 lio_listio F
> +GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 listen F
>  GLIBC_2.17 listxattr F
>  GLIBC_2.17 llabs F
> @@ -2395,6 +2397,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 66c645887e..21ca06cf25 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 lio_listio F
> -GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 45ba500389..a7cea3adda 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1617,6 +1617,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2490,6 +2492,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2775,6 +2779,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 89a7344c1c..2ae4408148 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -21,6 +20,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index fdfe20796b..a296bd429d 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1203,6 +1203,8 @@ GLIBC_2.32 lfind F
>  GLIBC_2.32 lgetxattr F
>  GLIBC_2.32 link F
>  GLIBC_2.32 linkat F
> +GLIBC_2.32 lio_listio F
> +GLIBC_2.32 lio_listio64 F
>  GLIBC_2.32 listen F
>  GLIBC_2.32 listxattr F
>  GLIBC_2.32 llabs F
> @@ -2154,6 +2156,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 780fb36a31..86b7d92191 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 lio_listio F
> -GLIBC_2.32 lio_listio64 F
>  GLIBC_2.32 mq_close F
>  GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 8e6cb9ad9d..5a11201a2c 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -311,6 +311,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1643,6 +1645,8 @@ GLIBC_2.4 lfind F
>  GLIBC_2.4 lgetxattr F
>  GLIBC_2.4 link F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 listen F
>  GLIBC_2.4 listxattr F
>  GLIBC_2.4 llabs F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 5c655ba14e..17eaad197b 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 58190af9e0..ef6c2f934d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -308,6 +308,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1640,6 +1642,8 @@ GLIBC_2.4 lfind F
>  GLIBC_2.4 lgetxattr F
>  GLIBC_2.4 link F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 listen F
>  GLIBC_2.4 listxattr F
>  GLIBC_2.4 llabs F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 5c655ba14e..17eaad197b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 4ebfe66490..ce475d4237 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1258,6 +1258,8 @@ GLIBC_2.29 lfind F
>  GLIBC_2.29 lgetxattr F
>  GLIBC_2.29 link F
>  GLIBC_2.29 linkat F
> +GLIBC_2.29 lio_listio F
> +GLIBC_2.29 lio_listio64 F
>  GLIBC_2.29 listen F
>  GLIBC_2.29 listxattr F
>  GLIBC_2.29 llabs F
> @@ -2415,6 +2417,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index e8bf05dae6..b6dcc61492 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 lio_listio F
> -GLIBC_2.29 lio_listio64 F
>  GLIBC_2.29 mq_close F
>  GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 685eab4532..734c0b8832 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -20,6 +20,8 @@ GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2369,6 +2371,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2545,6 +2549,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 19b2f11845..796a5678a1 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1584,6 +1584,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2553,6 +2555,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2729,6 +2733,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 8d9f6ff3b6..36769154e3 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -20,6 +20,8 @@ GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2328,6 +2330,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2504,6 +2508,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 1eef73b204..41bcd0064a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -20,6 +19,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 2ab4862211..ace87cf64d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -312,6 +312,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1627,6 +1629,8 @@ GLIBC_2.4 lfind F
>  GLIBC_2.4 lgetxattr F
>  GLIBC_2.4 link F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 listen F
>  GLIBC_2.4 listxattr F
>  GLIBC_2.4 llabs F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 5c655ba14e..17eaad197b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,8 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index f4ee74ce72..ac56d8aaec 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1581,6 +1581,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2496,6 +2498,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2672,6 +2676,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index d0dcf88270..8383308b5d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1270,6 +1270,8 @@ GLIBC_2.18 lfind F
>  GLIBC_2.18 lgetxattr F
>  GLIBC_2.18 link F
>  GLIBC_2.18 linkat F
> +GLIBC_2.18 lio_listio F
> +GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 listen F
>  GLIBC_2.18 listxattr F
>  GLIBC_2.18 llabs F
> @@ -2466,6 +2468,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 5a24a449c8..46388b39c0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 lio_listio F
> -GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index a5a1b7ddc4..0b3fedbfbb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1270,6 +1270,8 @@ GLIBC_2.18 lfind F
>  GLIBC_2.18 lgetxattr F
>  GLIBC_2.18 link F
>  GLIBC_2.18 linkat F
> +GLIBC_2.18 lio_listio F
> +GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 listen F
>  GLIBC_2.18 listxattr F
>  GLIBC_2.18 llabs F
> @@ -2463,6 +2465,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 5a24a449c8..46388b39c0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 lio_listio F
> -GLIBC_2.18 lio_listio64 F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index a6d55c9639..abcecd4913 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1819,6 +1819,8 @@ GLIBC_2.2 key_get_conv F
>  GLIBC_2.2 key_secretkey_is_set F
>  GLIBC_2.2 key_setnet F
>  GLIBC_2.2 key_setsecret F
> +GLIBC_2.2 lio_listio F
> +GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 localeconv F
>  GLIBC_2.2 lockf64 F
>  GLIBC_2.2 lseek64 F
> @@ -2461,6 +2463,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2635,6 +2639,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 1d8e4643b5..d6bf4d5458 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 lio_listio F
> -GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +17,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 4f72d3c617..5f5b458364 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1817,6 +1817,8 @@ GLIBC_2.2 key_get_conv F
>  GLIBC_2.2 key_secretkey_is_set F
>  GLIBC_2.2 key_setnet F
>  GLIBC_2.2 key_setsecret F
> +GLIBC_2.2 lio_listio F
> +GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 localeconv F
>  GLIBC_2.2 lockf64 F
>  GLIBC_2.2 lseek64 F
> @@ -2459,6 +2461,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2633,6 +2637,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 216e8fbe03..8d0bafe8c2 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1818,6 +1818,8 @@ GLIBC_2.2 key_get_conv F
>  GLIBC_2.2 key_secretkey_is_set F
>  GLIBC_2.2 key_setnet F
>  GLIBC_2.2 key_setsecret F
> +GLIBC_2.2 lio_listio F
> +GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 localeconv F
>  GLIBC_2.2 lockf64 F
>  GLIBC_2.2 lseek64 F
> @@ -2467,6 +2469,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2641,6 +2645,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 1d8e4643b5..d6bf4d5458 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 lio_listio F
> -GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +17,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 9671631450..f18bbf6955 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1814,6 +1814,8 @@ GLIBC_2.2 key_get_conv F
>  GLIBC_2.2 key_secretkey_is_set F
>  GLIBC_2.2 key_setnet F
>  GLIBC_2.2 key_setsecret F
> +GLIBC_2.2 lio_listio F
> +GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 localeconv F
>  GLIBC_2.2 lockf64 F
>  GLIBC_2.2 lseek64 F
> @@ -2384,6 +2386,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2558,6 +2562,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index f2cda0ef51..cb685723d6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 lio_listio F
> -GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -15,6 +13,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 6d105407dd..676719705b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1313,6 +1313,8 @@ GLIBC_2.21 lfind F
>  GLIBC_2.21 lgetxattr F
>  GLIBC_2.21 link F
>  GLIBC_2.21 linkat F
> +GLIBC_2.21 lio_listio F
> +GLIBC_2.21 lio_listio64 F
>  GLIBC_2.21 listen F
>  GLIBC_2.21 listxattr F
>  GLIBC_2.21 llabs F
> @@ -2505,6 +2507,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index dc18b0dc39..54780bf8a8 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 lio_listio F
> -GLIBC_2.21 lio_listio64 F
>  GLIBC_2.21 mq_close F
>  GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 783ce5aa8e..030d6bd5b5 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1589,6 +1589,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2523,6 +2525,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2808,6 +2812,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index badcc67295..08f19201da 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1589,6 +1589,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2556,6 +2558,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2853,6 +2857,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 838b3323f1..6bd167883f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1246,6 +1246,8 @@ GLIBC_2.3 ldiv F
>  GLIBC_2.3 lfind F
>  GLIBC_2.3 lgetxattr F
>  GLIBC_2.3 link F
> +GLIBC_2.3 lio_listio F
> +GLIBC_2.3 lio_listio64 F
>  GLIBC_2.3 listen F
>  GLIBC_2.3 listxattr F
>  GLIBC_2.3 llabs F
> @@ -2292,6 +2294,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2577,6 +2581,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index dcbadb2a1b..9553ec7c29 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.3 lio_listio F
> -GLIBC_2.3 lio_listio64 F
>  GLIBC_2.3 timer_create F
>  GLIBC_2.3 timer_delete F
>  GLIBC_2.3 timer_getoverrun F
> @@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index b51ebf0861..62e5ddbca6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1356,6 +1356,8 @@ GLIBC_2.17 lfind F
>  GLIBC_2.17 lgetxattr F
>  GLIBC_2.17 link F
>  GLIBC_2.17 linkat F
> +GLIBC_2.17 lio_listio F
> +GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 listen F
>  GLIBC_2.17 listxattr F
>  GLIBC_2.17 llabs F
> @@ -2591,6 +2593,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 66c645887e..21ca06cf25 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 lio_listio F
> -GLIBC_2.17 lio_listio64 F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index caed7efe2b..a05dbdce4e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1200,6 +1200,8 @@ GLIBC_2.33 lfind F
>  GLIBC_2.33 lgetxattr F
>  GLIBC_2.33 link F
>  GLIBC_2.33 linkat F
> +GLIBC_2.33 lio_listio F
> +GLIBC_2.33 lio_listio64 F
>  GLIBC_2.33 listen F
>  GLIBC_2.33 listxattr F
>  GLIBC_2.33 llabs F
> @@ -2156,6 +2158,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 82f04551d5..46954a5f42 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 lio_listio F
> -GLIBC_2.33 lio_listio64 F
>  GLIBC_2.33 mq_close F
>  GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index e9574cf0e4..db7cd82676 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1254,6 +1254,8 @@ GLIBC_2.27 lfind F
>  GLIBC_2.27 lgetxattr F
>  GLIBC_2.27 link F
>  GLIBC_2.27 linkat F
> +GLIBC_2.27 lio_listio F
> +GLIBC_2.27 lio_listio64 F
>  GLIBC_2.27 listen F
>  GLIBC_2.27 listxattr F
>  GLIBC_2.27 llabs F
> @@ -2356,6 +2358,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 044eace5c3..bf73abd7b8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 lio_listio F
> -GLIBC_2.27 lio_listio64 F
>  GLIBC_2.27 mq_close F
>  GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 28f002dcd8..a88aa419eb 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1581,6 +1581,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2521,6 +2523,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2806,6 +2810,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 2d6d3fd601..70bc3a8be7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1145,6 +1145,8 @@ GLIBC_2.2 ldexpl F
>  GLIBC_2.2 ldiv F
>  GLIBC_2.2 lfind F
>  GLIBC_2.2 link F
> +GLIBC_2.2 lio_listio F
> +GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 listen F
>  GLIBC_2.2 llabs F
>  GLIBC_2.2 lldiv F
> @@ -2329,6 +2331,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2614,6 +2618,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 03aed4d0f7..0ed75b255b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2 lio_listio F
> -GLIBC_2.2 lio_listio64 F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 327cc0812d..851b8660b4 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2376,6 +2378,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2552,6 +2556,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 4993b24e22..d8a75db6ed 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2373,6 +2375,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2549,6 +2553,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index eb80c67c84..4273983ece 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -19,6 +18,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index e48e78079f..853ebccd44 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1582,6 +1582,8 @@ GLIBC_2.1 key_get_conv F
>  GLIBC_2.1 key_secretkey_is_set F
>  GLIBC_2.1 key_setnet F
>  GLIBC_2.1 key_setsecret F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.1 lockf64 F
>  GLIBC_2.1 lseek64 F
>  GLIBC_2.1 makecontext F
> @@ -2516,6 +2518,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2827,6 +2831,8 @@ GLIBC_2.4 isinfl F
>  GLIBC_2.4 isnanl F
>  GLIBC_2.4 ldexpl F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 modfl F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 3c39a8ba0a..39ae533414 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -20,6 +19,5 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 85a4dfa37c..52fbd42f3e 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -24,6 +24,8 @@ GLIBC_2.1 aio_write F
>  GLIBC_2.1 aio_write64 F
>  GLIBC_2.1 dlopen F
>  GLIBC_2.1 dlvsym F
> +GLIBC_2.1 lio_listio F
> +GLIBC_2.1 lio_listio64 F
>  GLIBC_2.10 __cxa_at_quick_exit F
>  GLIBC_2.10 __posix_getopt F
>  GLIBC_2.10 accept4 F
> @@ -2351,6 +2353,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2527,6 +2531,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 89a7344c1c..2ae4408148 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,5 +1,4 @@
> -GLIBC_2.1 lio_listio F
> -GLIBC_2.1 lio_listio64 F
> +GLIBC_2.1 __librt_version_placeholder F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
>  GLIBC_2.2 timer_getoverrun F
> @@ -21,6 +20,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index c95b54fad3..4afbd80fe4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1138,6 +1138,8 @@ GLIBC_2.2.5 ldexpl F
>  GLIBC_2.2.5 ldiv F
>  GLIBC_2.2.5 lfind F
>  GLIBC_2.2.5 link F
> +GLIBC_2.2.5 lio_listio F
> +GLIBC_2.2.5 lio_listio64 F
>  GLIBC_2.2.5 listen F
>  GLIBC_2.2.5 llabs F
>  GLIBC_2.2.5 lldiv F
> @@ -2307,6 +2309,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -2483,6 +2487,8 @@ GLIBC_2.4 inotify_add_watch F
>  GLIBC_2.4 inotify_init F
>  GLIBC_2.4 inotify_rm_watch F
>  GLIBC_2.4 linkat F
> +GLIBC_2.4 lio_listio F
> +GLIBC_2.4 lio_listio64 F
>  GLIBC_2.4 mkdirat F
>  GLIBC_2.4 mkfifoat F
>  GLIBC_2.4 open_wmemstream F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 974a0bf943..c7f2721961 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.2.5 lio_listio F
> -GLIBC_2.2.5 lio_listio64 F
>  GLIBC_2.2.5 timer_create F
>  GLIBC_2.2.5 timer_delete F
>  GLIBC_2.2.5 timer_getoverrun F
> @@ -20,6 +18,5 @@ GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.4 lio_listio F
> -GLIBC_2.4 lio_listio64 F
> +GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __mq_open_2 F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index c543baf92b..b48d936890 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1274,6 +1274,8 @@ GLIBC_2.16 lfind F
>  GLIBC_2.16 lgetxattr F
>  GLIBC_2.16 link F
>  GLIBC_2.16 linkat F
> +GLIBC_2.16 lio_listio F
> +GLIBC_2.16 lio_listio64 F
>  GLIBC_2.16 listen F
>  GLIBC_2.16 listxattr F
>  GLIBC_2.16 llabs F
> @@ -2410,6 +2412,8 @@ GLIBC_2.34 dlopen F
>  GLIBC_2.34 dlsym F
>  GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
> +GLIBC_2.34 lio_listio F
> +GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 42f733844b..f75c21efc1 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 lio_listio F
> -GLIBC_2.16 lio_listio64 F
>  GLIBC_2.16 mq_close F
>  GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 20/34] Linux: Move mq_close from librt to libc
  2021-06-17 18:58 ` [PATCH 20/34] Linux: Move mq_close " Florian Weimer
@ 2021-06-24 14:00   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:00 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  rt/Makefile                                               | 2 +-
>  rt/Versions                                               | 8 ++++++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
>  sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 1 -
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 1 -
>  sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 1 -
>  sysdeps/unix/sysv/linux/mq_close.c                        | 7 ++++++-
>  sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
>  .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 1 -
>  .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 1 -
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 1 -
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
>  65 files changed, 79 insertions(+), 32 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index edeb37fef3..4ac93b2365 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_close \
>    mq_getattr \
>    mq_notify \
>    mq_open \
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    aio_write64 \
>    lio_listio \
>    lio_listio64 \
> +  mq_close \
>  
>  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 0565707456..d38b95b090 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -24,6 +24,11 @@ libc {
>      shm_open;
>      shm_unlink;
>    }
> +  GLIBC_2.3.4 {
> +%if PTHREAD_IN_LIBC
> +    mq_close;
> +%endif
> +  }
>    GLIBC_2.4 {
>  %if PTHREAD_IN_LIBC
>      lio_listio;
> @@ -49,6 +54,7 @@ libc {
>      aio_write64;
>      lio_listio;
>      lio_listio64;
> +    mq_close;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -99,7 +105,9 @@ librt {
>      timer_settime;
>    }
>    GLIBC_2.3.4 {
> +%if !PTHREAD_IN_LIBC
>      mq_close;
> +%endif
>      mq_getattr;
>      mq_notify;
>      mq_open;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 18bbe0c86b..80390d58c5 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1357,6 +1357,7 @@ GLIBC_2.17 monstartup F
>  GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
> +GLIBC_2.17 mq_close F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2399,6 +2400,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 21ca06cf25..0f95d65af6 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index a7cea3adda..02ab437a03 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2392,6 +2392,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2494,6 +2495,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 2ae4408148..960db11285 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index a296bd429d..cc26e87959 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1288,6 +1288,7 @@ GLIBC_2.32 monstartup F
>  GLIBC_2.32 mount F
>  GLIBC_2.32 mprobe F
>  GLIBC_2.32 mprotect F
> +GLIBC_2.32 mq_close F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
>  GLIBC_2.32 mremap F
> @@ -2158,6 +2159,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 86b7d92191..8d99f1fd34 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 mq_close F
>  GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 5a11201a2c..bf0e6dd046 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -313,6 +313,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1726,6 +1727,7 @@ GLIBC_2.4 monstartup F
>  GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
> +GLIBC_2.4 mq_close F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 17eaad197b..a7a3efd732 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index ef6c2f934d..69149e1e31 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -310,6 +310,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1723,6 +1724,7 @@ GLIBC_2.4 monstartup F
>  GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
> +GLIBC_2.4 mq_close F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 17eaad197b..a7a3efd732 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index ce475d4237..24a8e779ef 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1343,6 +1343,7 @@ GLIBC_2.29 monstartup F
>  GLIBC_2.29 mount F
>  GLIBC_2.29 mprobe F
>  GLIBC_2.29 mprotect F
> +GLIBC_2.29 mq_close F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
>  GLIBC_2.29 mremap F
> @@ -2419,6 +2420,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index b6dcc61492..f8439e803c 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 mq_close F
>  GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 734c0b8832..108624e7d0 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2206,6 +2206,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2373,6 +2374,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 796a5678a1..b261de5045 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2387,6 +2387,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2557,6 +2558,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 36769154e3..ae3d1362b4 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2241,6 +2241,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2332,6 +2333,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 41bcd0064a..71fa79869e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,7 +9,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index ace87cf64d..719ad8c4cd 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -314,6 +314,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1710,6 +1711,7 @@ GLIBC_2.4 monstartup F
>  GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
> +GLIBC_2.4 mq_close F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 17eaad197b..a7a3efd732 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index ac56d8aaec..d9ebe5ff51 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2330,6 +2330,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2500,6 +2501,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 8383308b5d..7baacb6ac0 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1359,6 +1359,7 @@ GLIBC_2.18 monstartup F
>  GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
> +GLIBC_2.18 mq_close F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2470,6 +2471,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 46388b39c0..826842df14 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 0b3fedbfbb..b7cf9054f5 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1359,6 +1359,7 @@ GLIBC_2.18 monstartup F
>  GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
> +GLIBC_2.18 mq_close F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2467,6 +2468,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 46388b39c0..826842df14 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index abcecd4913..0055c850c1 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2298,6 +2298,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2465,6 +2466,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index d6bf4d5458..b9908f3752 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 5f5b458364..d1c756a5b6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2296,6 +2296,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2463,6 +2464,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 8d0bafe8c2..6a3275d75f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2304,6 +2304,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2471,6 +2472,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index d6bf4d5458..b9908f3752 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index f18bbf6955..026d6f0c34 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2298,6 +2298,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2388,6 +2389,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index cb685723d6..df7de1fd21 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_close.c b/sysdeps/unix/sysv/linux/mq_close.c
> index 83a28fd8fe..b07db33fbb 100644
> --- a/sysdeps/unix/sysv/linux/mq_close.c
> +++ b/sysdeps/unix/sysv/linux/mq_close.c
> @@ -18,11 +18,16 @@
>  #include <errno.h>
>  #include <mqueue.h>
>  #include <sysdep.h>
> +#include <shlib-compat.h>
>  
>  /* Removes the association between message queue descriptor MQDES and its
>     message queue.  */
>  int
> -mq_close (mqd_t mqdes)
> +__mq_close (mqd_t mqdes)
>  {
>    return INLINE_SYSCALL (close, 1, mqdes);
>  }
> +versioned_symbol (libc, __mq_close, mq_close, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (libc, __mq_close, mq_close, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 676719705b..de7e07f62f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1402,6 +1402,7 @@ GLIBC_2.21 monstartup F
>  GLIBC_2.21 mount F
>  GLIBC_2.21 mprobe F
>  GLIBC_2.21 mprotect F
> +GLIBC_2.21 mq_close F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
>  GLIBC_2.21 mremap F
> @@ -2509,6 +2510,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 54780bf8a8..8d7a95d6ac 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 mq_close F
>  GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 030d6bd5b5..11bca22288 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2344,6 +2344,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2527,6 +2528,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 08f19201da..23823f46cf 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2377,6 +2377,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2560,6 +2561,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 6bd167883f..d4c732e826 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2190,6 +2190,7 @@ GLIBC_2.3.4 getcontext F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2296,6 +2297,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 9553ec7c29..e20095d937 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 62e5ddbca6..cf2f48704b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1445,6 +1445,7 @@ GLIBC_2.17 monstartup F
>  GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
> +GLIBC_2.17 mq_close F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2595,6 +2596,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 21ca06cf25..0f95d65af6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index a05dbdce4e..f731932abf 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1290,6 +1290,7 @@ GLIBC_2.33 monstartup F
>  GLIBC_2.33 mount F
>  GLIBC_2.33 mprobe F
>  GLIBC_2.33 mprotect F
> +GLIBC_2.33 mq_close F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
>  GLIBC_2.33 mremap F
> @@ -2160,6 +2161,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 46954a5f42..1b681c4f40 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 mq_close F
>  GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index db7cd82676..5dbfcd8d85 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1340,6 +1340,7 @@ GLIBC_2.27 monstartup F
>  GLIBC_2.27 mount F
>  GLIBC_2.27 mprobe F
>  GLIBC_2.27 mprotect F
> +GLIBC_2.27 mq_close F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
>  GLIBC_2.27 mremap F
> @@ -2360,6 +2361,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index bf73abd7b8..05a7e7ab00 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 mq_close F
>  GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index a88aa419eb..b84e794be5 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2343,6 +2343,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2525,6 +2526,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 70bc3a8be7..5e500fc41b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2231,6 +2231,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2333,6 +2334,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 0ed75b255b..eaf9985930 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 851b8660b4..5eacb42a61 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2210,6 +2210,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2380,6 +2381,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index d8a75db6ed..1e6e234774 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2210,6 +2210,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2377,6 +2378,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 4273983ece..2830671cbd 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 853ebccd44..c641491014 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2341,6 +2341,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2520,6 +2521,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 39ae533414..d7bd3edad5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 52fbd42f3e..834aaa1cb6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2265,6 +2265,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2355,6 +2356,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 2ae4408148..960db11285 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 4afbd80fe4..3f17a41c66 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2219,6 +2219,7 @@ GLIBC_2.3.4 __xpg_strerror_r F
>  GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
> +GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2311,6 +2312,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index c7f2721961..6b8d77f1a7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index b48d936890..5ea3b75384 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1364,6 +1364,7 @@ GLIBC_2.16 monstartup F
>  GLIBC_2.16 mount F
>  GLIBC_2.16 mprobe F
>  GLIBC_2.16 mprotect F
> +GLIBC_2.16 mq_close F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
>  GLIBC_2.16 mremap F
> @@ -2414,6 +2415,7 @@ GLIBC_2.34 dlvsym F
>  GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
> +GLIBC_2.34 mq_close F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index f75c21efc1..660f1de033 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 mq_close F
>  GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 21/34] Linux: Move mq_setattr from librt to libc
  2021-06-17 18:58 ` [PATCH 21/34] Linux: Move mq_setattr " Florian Weimer
@ 2021-06-24 14:02   ` Adhemerval Zanella
  2021-06-25 10:02     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:02 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> To introduce the proper symbol versioning, the implementation of
> the system call wrapper us moved to a C file.

LGTM, thanks.

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

> ---
>  include/mqueue.h                              |  7 ++++
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  4 ++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 ++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 ++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 ++
>  .../sysv/linux/microblaze/be/librt.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 ++
>  .../sysv/linux/microblaze/le/librt.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 ++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 ++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/mq_setattr.c          | 33 +++++++++++++++++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 ++
>  .../linux/powerpc/powerpc32/librt.abilist     |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 ++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  1 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 ++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 ++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/syscalls.list         |  2 --
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  1 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
>  67 files changed, 108 insertions(+), 34 deletions(-)
>  create mode 100644 sysdeps/unix/sysv/linux/mq_setattr.c
> 
> diff --git a/include/mqueue.h b/include/mqueue.h
> index 98e4596c22..008589f0fa 100644
> --- a/include/mqueue.h
> +++ b/include/mqueue.h
> @@ -8,8 +8,15 @@ hidden_proto (__mq_timedsend)
>  hidden_proto (mq_timedreceive)
>  extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
>  hidden_proto (__mq_timedreceive)
> +#  if !PTHREAD_IN_LIBC
>  hidden_proto (mq_setattr)
> +#  endif
> +# endif /* IS_IN (librt) */
> +
> +# if PTHREAD_IN_LIBC
> +libc_hidden_proto (mq_setattr)
>  # endif
> +
>  #include <struct___timespec64.h>
>  #if __TIMESIZE == 64
>  # define __mq_timedsend_time64 __mq_timedsend

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index 4ac93b2365..67c4e74a56 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -35,7 +35,6 @@ librt-routines = \
>    mq_open \
>    mq_receive \
>    mq_send \
> -  mq_setattr \
>    mq_timedreceive \
>    mq_timedsend \
>    mq_unlink \
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    lio_listio \
>    lio_listio64 \
>    mq_close \
> +  mq_setattr \
>  
>  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 d38b95b090..01ac8cd0be 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -27,6 +27,7 @@ libc {
>    GLIBC_2.3.4 {
>  %if PTHREAD_IN_LIBC
>      mq_close;
> +    mq_setattr;
>  %endif
>    }
>    GLIBC_2.4 {
> @@ -55,6 +56,7 @@ libc {
>      lio_listio;
>      lio_listio64;
>      mq_close;
> +    mq_setattr;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -107,13 +109,13 @@ librt {
>    GLIBC_2.3.4 {
>  %if !PTHREAD_IN_LIBC
>      mq_close;
> +    mq_setattr;
>  %endif
>      mq_getattr;
>      mq_notify;
>      mq_open;
>      mq_receive;
>      mq_send;
> -    mq_setattr;
>      mq_timedreceive;
>      mq_timedsend;
>      mq_unlink;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 80390d58c5..4bc3bd5ffb 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1358,6 +1358,7 @@ GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
> +GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2401,6 +2402,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 0f95d65af6..5577602ea8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 02ab437a03..f991411721 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2393,6 +2393,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2496,6 +2497,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 960db11285..59e770d345 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -15,7 +15,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index cc26e87959..d71034a0a4 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1289,6 +1289,7 @@ GLIBC_2.32 mount F
>  GLIBC_2.32 mprobe F
>  GLIBC_2.32 mprotect F
>  GLIBC_2.32 mq_close F
> +GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
>  GLIBC_2.32 mremap F
> @@ -2160,6 +2161,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 8d99f1fd34..6d4a02edac 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_receive F
>  GLIBC_2.32 mq_send F
> -GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mq_timedreceive F
>  GLIBC_2.32 mq_timedsend F
>  GLIBC_2.32 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index bf0e6dd046..753d824fb6 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -314,6 +314,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1728,6 +1729,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index a7a3efd732..1e9b5a4dfb 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 69149e1e31..a71fc473c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -311,6 +311,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1725,6 +1726,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index a7a3efd732..1e9b5a4dfb 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 24a8e779ef..924377d21d 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1344,6 +1344,7 @@ GLIBC_2.29 mount F
>  GLIBC_2.29 mprobe F
>  GLIBC_2.29 mprotect F
>  GLIBC_2.29 mq_close F
> +GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
>  GLIBC_2.29 mremap F
> @@ -2421,6 +2422,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index f8439e803c..5ded0dc421 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_receive F
>  GLIBC_2.29 mq_send F
> -GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mq_timedreceive F
>  GLIBC_2.29 mq_timedsend F
>  GLIBC_2.29 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 108624e7d0..df153c161d 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2207,6 +2207,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2375,6 +2376,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index b261de5045..0dc4c677be 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2388,6 +2388,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2559,6 +2560,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index ae3d1362b4..ddc9db0d2c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2242,6 +2242,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2334,6 +2335,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 71fa79869e..2e8a0d4c82 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -14,7 +14,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 719ad8c4cd..2f078539d4 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -315,6 +315,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1712,6 +1713,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index a7a3efd732..1e9b5a4dfb 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -7,7 +7,6 @@ GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index d9ebe5ff51..457001393e 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2331,6 +2331,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2502,6 +2503,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 7baacb6ac0..e0cff30061 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
> +GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2472,6 +2473,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 826842df14..c42d6f70be 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index b7cf9054f5..697298a2bb 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
> +GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2469,6 +2470,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 826842df14..c42d6f70be 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 0055c850c1..529d002804 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2467,6 +2468,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index b9908f3752..66ace7f63f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index d1c756a5b6..14343fdd69 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2297,6 +2297,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2465,6 +2466,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 6a3275d75f..af1379fcd5 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2305,6 +2305,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2473,6 +2474,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index b9908f3752..66ace7f63f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 026d6f0c34..ed0e42ddf4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2390,6 +2391,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index df7de1fd21..6957efa4dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -8,7 +8,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_setattr.c b/sysdeps/unix/sysv/linux/mq_setattr.c
> new file mode 100644
> index 0000000000..9631aa5da6
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/mq_setattr.c
> @@ -0,0 +1,33 @@
> +/* mq_setattr system call wrapper.
> +   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 <mqueue.h>
> +#include <shlib-compat.h>
> +#include <sysdep.h>
> +
> +int
> +__mq_setattr (mqd_t mqdes, const struct mq_attr *__restrict mqstat,
> +              struct mq_attr *__restrict omqstat)

I think there is no need to use reserved identifiers here, so we can
use 'restrict' directly.

> +{
> +  return INLINE_SYSCALL_CALL (mq_getsetattr, mqdes, mqstat, omqstat);
> +}
> +versioned_symbol (libc, __mq_setattr, mq_setattr, GLIBC_2_34);
> +libc_hidden_ver (__mq_setattr, mq_setattr)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, __mq_setattr, mq_setattr, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index de7e07f62f..53f30a93fa 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1403,6 +1403,7 @@ GLIBC_2.21 mount F
>  GLIBC_2.21 mprobe F
>  GLIBC_2.21 mprotect F
>  GLIBC_2.21 mq_close F
> +GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
>  GLIBC_2.21 mremap F
> @@ -2511,6 +2512,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 8d7a95d6ac..c6d440aea4 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_receive F
>  GLIBC_2.21 mq_send F
> -GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mq_timedreceive F
>  GLIBC_2.21 mq_timedsend F
>  GLIBC_2.21 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 11bca22288..eeb6d57f25 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2529,6 +2530,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 23823f46cf..afa5274916 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2378,6 +2378,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2562,6 +2563,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index d4c732e826..a01854490b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2191,6 +2191,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2298,6 +2299,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index e20095d937..0534a11718 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index cf2f48704b..476ebab28f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1446,6 +1446,7 @@ GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
> +GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2597,6 +2598,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 0f95d65af6..5577602ea8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index f731932abf..48882415a6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1291,6 +1291,7 @@ GLIBC_2.33 mount F
>  GLIBC_2.33 mprobe F
>  GLIBC_2.33 mprotect F
>  GLIBC_2.33 mq_close F
> +GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
>  GLIBC_2.33 mremap F
> @@ -2162,6 +2163,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 1b681c4f40..fc8a2d3353 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_receive F
>  GLIBC_2.33 mq_send F
> -GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mq_timedreceive F
>  GLIBC_2.33 mq_timedsend F
>  GLIBC_2.33 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 5dbfcd8d85..006d0c911d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1341,6 +1341,7 @@ GLIBC_2.27 mount F
>  GLIBC_2.27 mprobe F
>  GLIBC_2.27 mprotect F
>  GLIBC_2.27 mq_close F
> +GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
>  GLIBC_2.27 mremap F
> @@ -2362,6 +2363,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 05a7e7ab00..85c6dfae23 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_receive F
>  GLIBC_2.27 mq_send F
> -GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mq_timedreceive F
>  GLIBC_2.27 mq_timedsend F
>  GLIBC_2.27 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index b84e794be5..0f5a0ebb1c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2344,6 +2344,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2527,6 +2528,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 5e500fc41b..4aa1a9fa74 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2232,6 +2232,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2335,6 +2336,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index eaf9985930..7bc6c2d4e6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 5eacb42a61..db1f29d905 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2382,6 +2383,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 1e6e234774..961d2b66e0 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2379,6 +2380,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 2830671cbd..73eb37021f 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -9,7 +9,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index c641491014..d70c6499a8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2342,6 +2342,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2522,6 +2523,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index d7bd3edad5..36b9ea794f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -10,7 +10,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 834aaa1cb6..9f18195c9d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2266,6 +2266,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2357,6 +2358,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 960db11285..59e770d345 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -15,7 +15,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
> index 01ec2bfa95..62329abb49 100644
> --- a/sysdeps/unix/sysv/linux/syscalls.list
> +++ b/sysdeps/unix/sysv/linux/syscalls.list
> @@ -86,8 +86,6 @@ removexattr	-	removexattr	i:ss	removexattr
>  lremovexattr	-	lremovexattr	i:ss	lremovexattr
>  fremovexattr	-	fremovexattr	i:is	fremovexattr
>  
> -mq_setattr	-	mq_getsetattr	i:ipp	mq_setattr
> -
>  timerfd_create	EXTRA	timerfd_create	i:ii	timerfd_create
>  
>  fanotify_init	EXTRA	fanotify_init	i:ii	fanotify_init
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 3f17a41c66..05c1f47233 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2220,6 +2220,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2313,6 +2314,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 6b8d77f1a7..d7e5e48295 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -13,7 +13,6 @@ GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 5ea3b75384..b839033cde 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1365,6 +1365,7 @@ GLIBC_2.16 mount F
>  GLIBC_2.16 mprobe F
>  GLIBC_2.16 mprotect F
>  GLIBC_2.16 mq_close F
> +GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
>  GLIBC_2.16 mremap F
> @@ -2416,6 +2417,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 660f1de033..24c03ebc8b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_receive F
>  GLIBC_2.16 mq_send F
> -GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mq_timedreceive F
>  GLIBC_2.16 mq_timedsend F
>  GLIBC_2.16 mq_unlink F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 22/34] Linux: Move mq_getattr from librt to libc
  2021-06-17 18:58 ` [PATCH 22/34] Linux: Move mq_getattr " Florian Weimer
@ 2021-06-24 14:02   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:02 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.


LGTM, thanks.

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

> ---
>  rt/Makefile                                               | 2 +-
>  rt/Versions                                               | 4 +++-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
>  sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 1 -
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 1 -
>  sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 1 -
>  sysdeps/unix/sysv/linux/mq_getattr.c                      | 8 +++++++-
>  sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
>  .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 1 -
>  .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 1 -
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 1 -
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 1 -
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
>  65 files changed, 75 insertions(+), 33 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 67c4e74a56..e9b68f0274 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_getattr \
>    mq_notify \
>    mq_open \
>    mq_receive \
> @@ -62,6 +61,7 @@ $(librt-routines-var) += \
>    lio_listio \
>    lio_listio64 \
>    mq_close \
> +  mq_getattr \
>    mq_setattr \
>  
>  tests := tst-shm tst-timer tst-timer2 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 01ac8cd0be..38f23c16ef 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -27,6 +27,7 @@ libc {
>    GLIBC_2.3.4 {
>  %if PTHREAD_IN_LIBC
>      mq_close;
> +    mq_getattr;
>      mq_setattr;
>  %endif
>    }
> @@ -56,6 +57,7 @@ libc {
>      lio_listio;
>      lio_listio64;
>      mq_close;
> +    mq_getattr;
>      mq_setattr;
>  %endif
>      shm_open;
> @@ -109,9 +111,9 @@ librt {
>    GLIBC_2.3.4 {
>  %if !PTHREAD_IN_LIBC
>      mq_close;
> +    mq_getattr;
>      mq_setattr;
>  %endif
> -    mq_getattr;
>      mq_notify;
>      mq_open;
>      mq_receive;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 4bc3bd5ffb..c6b225527c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1358,6 +1358,7 @@ GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
> +GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2402,6 +2403,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 5577602ea8..33b825d874 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index f991411721..4930bfef60 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2393,6 +2393,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2497,6 +2498,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 59e770d345..29f9030371 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index d71034a0a4..78a01ca136 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1289,6 +1289,7 @@ GLIBC_2.32 mount F
>  GLIBC_2.32 mprobe F
>  GLIBC_2.32 mprotect F
>  GLIBC_2.32 mq_close F
> +GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
> @@ -2161,6 +2162,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 6d4a02edac..4143924c8b 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 753d824fb6..4ad531fb76 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -314,6 +314,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1729,6 +1730,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 1e9b5a4dfb..ba9f5f6422 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index a71fc473c5..aae2e215f3 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -311,6 +311,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1726,6 +1727,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 1e9b5a4dfb..ba9f5f6422 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 924377d21d..0bbe74a51a 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1344,6 +1344,7 @@ GLIBC_2.29 mount F
>  GLIBC_2.29 mprobe F
>  GLIBC_2.29 mprotect F
>  GLIBC_2.29 mq_close F
> +GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
> @@ -2422,6 +2423,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 5ded0dc421..1ffc068f62 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index df153c161d..f96ed60028 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2207,6 +2207,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2376,6 +2377,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 0dc4c677be..a724074718 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2388,6 +2388,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2560,6 +2561,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index ddc9db0d2c..3b5c72f307 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2242,6 +2242,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2335,6 +2336,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 2e8a0d4c82..38edc31e90 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,7 +9,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 2f078539d4..85de809b2d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -315,6 +315,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1713,6 +1714,7 @@ GLIBC_2.4 mount F
>  GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
> +GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 1e9b5a4dfb..ba9f5f6422 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 457001393e..a9abdfa950 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2331,6 +2331,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2503,6 +2504,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index e0cff30061..6bf22e63e3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
> +GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2473,6 +2474,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index c42d6f70be..a8bbeb6a20 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 697298a2bb..4e211638c9 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1360,6 +1360,7 @@ GLIBC_2.18 mount F
>  GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
> +GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2470,6 +2471,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index c42d6f70be..a8bbeb6a20 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 529d002804..96d2e57a71 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2468,6 +2469,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 66ace7f63f..7704fd1722 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 14343fdd69..3f8736354d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2297,6 +2297,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2466,6 +2467,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index af1379fcd5..ab6ca602b9 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2305,6 +2305,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2474,6 +2475,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 66ace7f63f..7704fd1722 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index ed0e42ddf4..328abb0e02 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2391,6 +2392,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 6957efa4dd..a249a4623f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_getattr.c b/sysdeps/unix/sysv/linux/mq_getattr.c
> index 629e661300..52e7ef30f9 100644
> --- a/sysdeps/unix/sysv/linux/mq_getattr.c
> +++ b/sysdeps/unix/sysv/linux/mq_getattr.c
> @@ -19,10 +19,16 @@
>  #include <mqueue.h>
>  #include <stddef.h>
>  #include <sysdep.h>
> +#include <shlib-compat.h>
>  
>  /* Query status and attributes of message queue MQDES.  */
>  int
> -mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
> +__mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
>  {
>    return mq_setattr (mqdes, NULL, mqstat);
>  }
> +versioned_symbol (libc, __mq_getattr, mq_getattr, GLIBC_2_34);
> +libc_hidden_ver (__mq_getattr, mq_getattr)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, __mq_getattr, mq_getattr, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 53f30a93fa..b8dd80465f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1403,6 +1403,7 @@ GLIBC_2.21 mount F
>  GLIBC_2.21 mprobe F
>  GLIBC_2.21 mprotect F
>  GLIBC_2.21 mq_close F
> +GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
> @@ -2512,6 +2513,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index c6d440aea4..64a169169f 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index eeb6d57f25..04a263f810 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2530,6 +2531,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index afa5274916..9e8043323c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2378,6 +2378,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2563,6 +2564,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index a01854490b..21e7cb9a28 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2191,6 +2191,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2299,6 +2300,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 0534a11718..073df9d157 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 476ebab28f..5487741113 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1446,6 +1446,7 @@ GLIBC_2.17 mount F
>  GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
> +GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2598,6 +2599,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 5577602ea8..33b825d874 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 48882415a6..ac6d6b1200 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1291,6 +1291,7 @@ GLIBC_2.33 mount F
>  GLIBC_2.33 mprobe F
>  GLIBC_2.33 mprotect F
>  GLIBC_2.33 mq_close F
> +GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
> @@ -2163,6 +2164,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index fc8a2d3353..86456a362e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 006d0c911d..10607eff2d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1341,6 +1341,7 @@ GLIBC_2.27 mount F
>  GLIBC_2.27 mprobe F
>  GLIBC_2.27 mprotect F
>  GLIBC_2.27 mq_close F
> +GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
> @@ -2363,6 +2364,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 85c6dfae23..e9a7d2fe8a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 0f5a0ebb1c..6fc716311f 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2344,6 +2344,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2528,6 +2529,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 4aa1a9fa74..d8d502deb6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2232,6 +2232,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2336,6 +2337,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 7bc6c2d4e6..6df861ffb6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index db1f29d905..bbeb8d248b 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2383,6 +2384,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 961d2b66e0..1cbeb0474a 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2211,6 +2211,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2380,6 +2381,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 73eb37021f..d208e7b7a8 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index d70c6499a8..8d7b102a04 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2342,6 +2342,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2523,6 +2524,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 36b9ea794f..2da8518d03 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 9f18195c9d..66a6a37699 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2266,6 +2266,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2358,6 +2359,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 59e770d345..29f9030371 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 05c1f47233..44c6b63d14 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2220,6 +2220,7 @@ GLIBC_2.3.4 dlmopen F
>  GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
> +GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2314,6 +2315,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index d7e5e48295..0efa2e11fa 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index b839033cde..3dba64549e 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1365,6 +1365,7 @@ GLIBC_2.16 mount F
>  GLIBC_2.16 mprobe F
>  GLIBC_2.16 mprotect F
>  GLIBC_2.16 mq_close F
> +GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
> @@ -2417,6 +2418,7 @@ GLIBC_2.34 execveat F
>  GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
> +GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 24c03ebc8b..dc15c9057f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_receive F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 23/34] Linux: Move mq_notify from librt to libc
  2021-06-17 18:58 ` [PATCH 23/34] Linux: Move mq_notify " Florian Weimer
@ 2021-06-24 14:05   ` Adhemerval Zanella
  2021-06-25 11:37     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:05 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> An explicit call from fork into the mq_notify implementation replaces
> the previous use of pthread_atfork.


LGTM, thanks. Some minor nits below.

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

> ---
>  include/mqueue.h                              |  4 ++
>  include/pthread.h                             |  3 +
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  4 +-
>  sysdeps/nptl/fork.c                           |  3 +
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/be/librt.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/le/librt.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/mq_notify.c           | 55 ++++++++-----------
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../linux/powerpc/powerpc32/librt.abilist     |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  1 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-64/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  1 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 +
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  1 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
>  68 files changed, 100 insertions(+), 65 deletions(-)
> 
> diff --git a/include/mqueue.h b/include/mqueue.h
> index 008589f0fa..2c40c1e3fc 100644
> --- a/include/mqueue.h
> +++ b/include/mqueue.h
> @@ -15,6 +15,10 @@ hidden_proto (mq_setattr)
>  
>  # if PTHREAD_IN_LIBC
>  libc_hidden_proto (mq_setattr)
> +
> +/* Called from fork so that the new subprocess re-creates the
> +   notification thread if necessary.  */
> +void __mq_notify_fork_subprocess (void) attribute_hidden;
>  # endif
>  
>  #include <struct___timespec64.h>

Ok.

> diff --git a/include/pthread.h b/include/pthread.h
> index 1158919247..819bf3f235 100644
> --- a/include/pthread.h
> +++ b/include/pthread.h
> @@ -13,6 +13,9 @@ libc_hidden_proto (__pthread_barrier_init)
>  #endif
>  extern int __pthread_barrier_wait (pthread_barrier_t *__barrier)
>       __THROWNL __nonnull ((1));
> +#if PTHREAD_IN_LIBC
> +libc_hidden_proto (__pthread_barrier_wait)
> +#endif
>  
>  /* This function is called to initialize the pthread library.  */
>  extern void __pthread_initialize (void) __attribute__ ((weak));

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index e9b68f0274..838e67b229 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_notify \
>    mq_open \
>    mq_receive \
>    mq_send \
> @@ -62,6 +61,7 @@ $(librt-routines-var) += \
>    lio_listio64 \
>    mq_close \
>    mq_getattr \
> +  mq_notify \
>    mq_setattr \
>  
>  tests := tst-shm tst-timer tst-timer2 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 38f23c16ef..b3c9bba9ff 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -28,6 +28,7 @@ libc {
>  %if PTHREAD_IN_LIBC
>      mq_close;
>      mq_getattr;
> +    mq_notify;
>      mq_setattr;
>  %endif
>    }
> @@ -58,6 +59,7 @@ libc {
>      lio_listio64;
>      mq_close;
>      mq_getattr;
> +    mq_notify;
>      mq_setattr;
>  %endif
>      shm_open;
> @@ -112,9 +114,9 @@ librt {
>  %if !PTHREAD_IN_LIBC
>      mq_close;
>      mq_getattr;
> +    mq_notify;
>      mq_setattr;
>  %endif
> -    mq_notify;
>      mq_open;
>      mq_receive;
>      mq_send;

Ok.

> diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
> index 39ab797612..d6a0996b79 100644
> --- a/sysdeps/nptl/fork.c
> +++ b/sysdeps/nptl/fork.c
> @@ -36,6 +36,7 @@
>  #include <unwind-link.h>
>  #include <sys/single_threaded.h>
>  #include <list.h>
> +#include <mqueue.h>
>  
>  static void
>  fresetlockfiles (void)
> @@ -229,6 +230,8 @@ __libc_fork (void)
>  	  /* Reset locks in the I/O code.  */
>  	  _IO_list_resetlock ();
>  
> +	  call_function_static_weak (__mq_notify_fork_subprocess);
> +
>  	  call_function_static_weak (__nss_database_fork_subprocess,
>  				     &nss_database_data);
>  	}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index c6b225527c..98dd344aaf 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1359,6 +1359,7 @@ GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
> +GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2404,6 +2405,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 33b825d874..6cab033b12 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 4930bfef60..5026e54d51 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2394,6 +2394,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2499,6 +2500,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 29f9030371..d85884d888 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 78a01ca136..f677395bd2 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1290,6 +1290,7 @@ GLIBC_2.32 mprobe F
>  GLIBC_2.32 mprotect F
>  GLIBC_2.32 mq_close F
>  GLIBC_2.32 mq_getattr F
> +GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
> @@ -2163,6 +2164,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 4143924c8b..16864093a0 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_receive F
>  GLIBC_2.32 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 4ad531fb76..38e6fc61d4 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -315,6 +315,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1731,6 +1732,7 @@ GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
> +GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index ba9f5f6422..6d3cb7c1fa 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index aae2e215f3..c31f58229a 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -312,6 +312,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1728,6 +1729,7 @@ GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
> +GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index ba9f5f6422..6d3cb7c1fa 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 0bbe74a51a..bd0cec183d 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1345,6 +1345,7 @@ GLIBC_2.29 mprobe F
>  GLIBC_2.29 mprotect F
>  GLIBC_2.29 mq_close F
>  GLIBC_2.29 mq_getattr F
> +GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
> @@ -2424,6 +2425,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 1ffc068f62..7c20548140 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_receive F
>  GLIBC_2.29 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index f96ed60028..e089d91a80 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2208,6 +2208,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2378,6 +2379,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index a724074718..d04f1e1a95 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2389,6 +2389,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2562,6 +2563,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 3b5c72f307..c7569a5138 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2243,6 +2243,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2337,6 +2338,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 38edc31e90..1ec96c2786 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,7 +9,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 85de809b2d..57139d935a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -316,6 +316,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1715,6 +1716,7 @@ GLIBC_2.4 mprobe F
>  GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
> +GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index ba9f5f6422..6d3cb7c1fa 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index a9abdfa950..5fd9bf57ec 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2332,6 +2332,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2505,6 +2506,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 6bf22e63e3..434b3f6844 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
> +GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2475,6 +2476,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index a8bbeb6a20..f82d9ba705 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 4e211638c9..1d97080a9c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F
>  GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
> +GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2472,6 +2473,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index a8bbeb6a20..f82d9ba705 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 96d2e57a71..d43b66902d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2470,6 +2471,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 7704fd1722..12c3cbae0d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 3f8736354d..86dfc85225 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2298,6 +2298,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2468,6 +2469,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index ab6ca602b9..3314c50b3c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2306,6 +2306,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2476,6 +2477,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 7704fd1722..12c3cbae0d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 328abb0e02..a23ebf24a8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2393,6 +2394,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index a249a4623f..7afe4e83cf 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
> index e22850a910..9a68d9534d 100644
> --- a/sysdeps/unix/sysv/linux/mq_notify.c
> +++ b/sysdeps/unix/sysv/linux/mq_notify.c
> @@ -29,7 +29,7 @@
>  #include <sys/socket.h>
>  #include <not-cancel.h>
>  #include <pthreadP.h>
> -
> +#include <shlib-compat.h>
>  
>  /* Defined in the kernel headers: */
>  #define NOTIFY_COOKIE_LEN	32	/* Length of the cookie used.  */
> @@ -75,7 +75,7 @@ change_sigmask (int how, sigset_t *oss)
>  {
>    sigset_t ss;
>    sigfillset (&ss);
> -  return pthread_sigmask (how, &ss, oss);
> +  return __pthread_sigmask (how, &ss, oss);
>  }
>  
>  

Ok.

> @@ -93,7 +93,7 @@ notification_function (void *arg)
>    (void) __pthread_barrier_wait (&notify_barrier);
>  
>    /* Make the thread detached.  */
> -  (void) pthread_detach (pthread_self ());
> +  (void) __pthread_detach (__pthread_self ());
>  

No need the extra cast here.

>    /* The parent thread has all signals blocked.  This is probably a
>       bit surprising for this thread.  So we unblock all of them.  */
> @@ -125,8 +125,8 @@ helper_thread (void *arg)
>  	  /* Just create the thread as instructed.  There is no way to
>  	     report a problem with creating a thread.  */
>  	  pthread_t th;
> -	  if (__builtin_expect (pthread_create (&th, data.attr,
> -						notification_function, &data)
> +	  if (__builtin_expect (__pthread_create (&th, data.attr,
> +						  notification_function, &data)
>  				== 0, 0))
>  	    /* Since we passed a pointer to DATA to the new thread we have
>  	       to wait until it is done with it.  */

Use __glibc_likely.

> @@ -135,7 +135,7 @@ helper_thread (void *arg)
>        else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
>  	{
>  	  /* The only state we keep is the copy of the thread attributes.  */
> -	  pthread_attr_destroy (data.attr);
> +	  __pthread_attr_destroy (data.attr);
>  	  free (data.attr);
>  	}
>      }
> @@ -143,8 +143,8 @@ helper_thread (void *arg)
>  }
>  
>  
> -static void
> -reset_once (void)
> +void
> +__mq_notify_fork_subprocess (void)
>  {
>    once = PTHREAD_ONCE_INIT;
>  }
> @@ -172,10 +172,10 @@ init_mq_netlink (void)
>      {
>        /* Create the helper thread.  */
>        pthread_attr_t attr;
> -      (void) pthread_attr_init (&attr);
> -      (void) pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
> +      (void) __pthread_attr_init (&attr);
> +      (void) __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
>        /* We do not need much stack space, the bare minimum will be enough.  */
> -      (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
> +      (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
>  
>        /* Temporarily block all signals so that the newly created
>  	 thread inherits the mask.  */

No need the casts here.

> @@ -183,29 +183,13 @@ init_mq_netlink (void)
>        int have_no_oss = change_sigmask (SIG_BLOCK, &oss);
>  
>        pthread_t th;
> -      err = pthread_create (&th, &attr, helper_thread, NULL);
> +      err = __pthread_create (&th, &attr, helper_thread, NULL);
>  
>        /* Reset the signal mask.  */
>        if (!have_no_oss)
> -	pthread_sigmask (SIG_SETMASK, &oss, NULL);
> -
> -      (void) pthread_attr_destroy (&attr);
> +	__pthread_sigmask (SIG_SETMASK, &oss, NULL);
>  
> -      if (err == 0)
> -	{
> -	  static int added_atfork;
> -
> -	  if (added_atfork == 0
> -	      && pthread_atfork (NULL, NULL, reset_once) != 0)
> -	    {
> -	      /* The child thread will call recv() which is a
> -		 cancellation point.  */
> -	      (void) pthread_cancel (th);
> -	      err = 1;
> -	    }
> -	  else
> -	    added_atfork = 1;
> -	}
> +      (void) __pthread_attr_destroy (&attr);
>      }
>  
>    if (err != 0)

Ok.

> @@ -219,7 +203,7 @@ init_mq_netlink (void)
>  /* Register notification upon message arrival to an empty message queue
>     MQDES.  */
>  int
> -mq_notify (mqd_t mqdes, const struct sigevent *notification)
> +__mq_notify (mqd_t mqdes, const struct sigevent *notification)
>  {
>    /* Make sure the type is correctly defined.  */
>    assert (sizeof (union notify_data) == NOTIFY_COOKIE_LEN);
> @@ -235,7 +219,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
>       response.  */
>  
>    /* Initialize only once.  */
> -  pthread_once (&once, init_mq_netlink);
> +  __pthread_once (&once, init_mq_netlink);
>  
>    /* If we cannot create the netlink socket we cannot provide
>       SIGEV_THREAD support.  */
> @@ -280,9 +264,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
>    /* If it failed, free the allocated memory.  */
>    if (retval != 0 && data.attr != NULL)
>      {
> -      pthread_attr_destroy (data.attr);
> +      __pthread_attr_destroy (data.attr);
>        free (data.attr);
>      }
>  
>    return retval;
>  }
> +versioned_symbol (libc, __mq_notify, mq_notify, GLIBC_2_34);
> +libc_hidden_ver (__mq_notify, mq_notify)
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, __mq_notify, mq_notify, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index b8dd80465f..50b5f57efc 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1404,6 +1404,7 @@ GLIBC_2.21 mprobe F
>  GLIBC_2.21 mprotect F
>  GLIBC_2.21 mq_close F
>  GLIBC_2.21 mq_getattr F
> +GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
> @@ -2514,6 +2515,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 64a169169f..0ad1b47423 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_receive F
>  GLIBC_2.21 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 04a263f810..c8b663ff2f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2346,6 +2346,7 @@ GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2532,6 +2533,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 9e8043323c..551af732bb 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2379,6 +2379,7 @@ GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2565,6 +2566,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 21e7cb9a28..a79b8863e1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2192,6 +2192,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2301,6 +2302,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 073df9d157..a7117238c4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 5487741113..89293145e4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1447,6 +1447,7 @@ GLIBC_2.17 mprobe F
>  GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
> +GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2600,6 +2601,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 33b825d874..6cab033b12 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index ac6d6b1200..da03d7e3b4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1292,6 +1292,7 @@ GLIBC_2.33 mprobe F
>  GLIBC_2.33 mprotect F
>  GLIBC_2.33 mq_close F
>  GLIBC_2.33 mq_getattr F
> +GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
> @@ -2165,6 +2166,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 86456a362e..2877905086 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_receive F
>  GLIBC_2.33 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 10607eff2d..e1ff263953 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1342,6 +1342,7 @@ GLIBC_2.27 mprobe F
>  GLIBC_2.27 mprotect F
>  GLIBC_2.27 mq_close F
>  GLIBC_2.27 mq_getattr F
> +GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
> @@ -2365,6 +2366,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index e9a7d2fe8a..79c4c5870f 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_receive F
>  GLIBC_2.27 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 6fc716311f..b1af366553 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2530,6 +2531,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index d8d502deb6..70322f5969 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2233,6 +2233,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2338,6 +2339,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 6df861ffb6..7e2f744325 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index bbeb8d248b..57dc4db1e7 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2385,6 +2386,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 1cbeb0474a..d00a7d6034 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2382,6 +2383,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index d208e7b7a8..c4164f4149 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 8d7b102a04..e25501e4c4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2343,6 +2343,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2525,6 +2526,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 2da8518d03..19e98aae24 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 66a6a37699..cdec31d161 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2267,6 +2267,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2360,6 +2361,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 29f9030371..d85884d888 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,7 +10,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 44c6b63d14..1f16f15c1b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2221,6 +2221,7 @@ GLIBC_2.3.4 getipv4sourcefilter F
>  GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
> +GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2316,6 +2317,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 0efa2e11fa..139cf285ec 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,7 +8,6 @@ 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 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 3dba64549e..ac010952fe 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1366,6 +1366,7 @@ GLIBC_2.16 mprobe F
>  GLIBC_2.16 mprotect F
>  GLIBC_2.16 mq_close F
>  GLIBC_2.16 mq_getattr F
> +GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
> @@ -2419,6 +2420,7 @@ GLIBC_2.34 lio_listio F
>  GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
> +GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index dc15c9057f..db976a6c97 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_receive F
>  GLIBC_2.16 mq_send F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 24/34] Linux: Move mq_open, __mq_open_2 from librt to libc
  2021-06-17 18:59 ` [PATCH 24/34] Linux: Move mq_open, __mq_open_2 " Florian Weimer
@ 2021-06-24 14:07   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:07 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> A placeholder symbol is required to keep the GLIBC_2.7 version.

LGTM, thanks.

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

> ---
>  rt/Makefile                                        |  2 +-
>  rt/Versions                                        | 14 +++++++++++++-
>  rt/librt-compat.c                                  |  6 ++++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist       |  4 ++++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist      |  2 --
>  sysdeps/unix/sysv/linux/alpha/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist        |  3 +--
>  sysdeps/unix/sysv/linux/arc/libc.abilist           |  4 ++++
>  sysdeps/unix/sysv/linux/arc/librt.abilist          |  2 --
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist       |  3 +--
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  4 ++++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist       |  3 +--
>  sysdeps/unix/sysv/linux/csky/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/csky/librt.abilist         |  2 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist         |  3 +--
>  sysdeps/unix/sysv/linux/i386/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/i386/librt.abilist         |  3 +--
>  sysdeps/unix/sysv/linux/ia64/libc.abilist          |  4 ++++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist         |  3 +--
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  4 ++++
>  .../unix/sysv/linux/m68k/coldfire/librt.abilist    |  3 +--
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |  3 +--
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  4 ++++
>  .../unix/sysv/linux/microblaze/be/librt.abilist    |  2 --
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  4 ++++
>  .../unix/sysv/linux/microblaze/le/librt.abilist    |  2 --
>  .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++++
>  sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |  3 +--
>  .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |  3 +--
>  .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
>  .../unix/sysv/linux/mips/mips64/n64/librt.abilist  |  3 +--
>  sysdeps/unix/sysv/linux/mq_open.c                  | 12 ++++++++++--
>  sysdeps/unix/sysv/linux/nios2/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist        |  2 --
>  .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++++
>  .../sysv/linux/powerpc/powerpc32/librt.abilist     |  3 +--
>  .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/be/libc.abilist   |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/be/librt.abilist  |  3 +--
>  .../sysv/linux/powerpc/powerpc64/le/libc.abilist   |  4 ++++
>  .../sysv/linux/powerpc/powerpc64/le/librt.abilist  |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist   |  2 --
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  4 ++++
>  sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |  3 +--
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |  4 ++++
>  sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist |  3 +--
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist        |  3 +--
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  4 ++++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist        |  3 +--
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  4 ++++
>  .../unix/sysv/linux/sparc/sparc32/librt.abilist    |  3 +--
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |  4 ++++
>  .../unix/sysv/linux/sparc/sparc64/librt.abilist    |  3 +--
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |  4 ++++
>  sysdeps/unix/sysv/linux/x86_64/64/librt.abilist    |  3 +--
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |  4 ++++
>  sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist   |  2 --
>  66 files changed, 178 insertions(+), 64 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 838e67b229..f0b13b27ba 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_open \
>    mq_receive \
>    mq_send \
>    mq_timedreceive \
> @@ -62,6 +61,7 @@ $(librt-routines-var) += \
>    mq_close \
>    mq_getattr \
>    mq_notify \
> +  mq_open \
>    mq_setattr \
>  
>  tests := tst-shm tst-timer tst-timer2 \

Ok.

> diff --git a/rt/Versions b/rt/Versions
> index b3c9bba9ff..d28a7f6979 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -29,6 +29,7 @@ libc {
>      mq_close;
>      mq_getattr;
>      mq_notify;
> +    mq_open;
>      mq_setattr;
>  %endif
>    }
> @@ -36,10 +37,16 @@ libc {
>  %if PTHREAD_IN_LIBC
>      lio_listio;
>      lio_listio64;
> +%endif
> +  }
> +  GLIBC_2.7 {
> +%if PTHREAD_IN_LIBC
> +   __mq_open_2;
>  %endif
>    }
>    GLIBC_2.34 {
>  %if PTHREAD_IN_LIBC
> +    __mq_open_2;
>      aio_cancel;
>      aio_cancel64;
>      aio_init;
> @@ -60,6 +67,7 @@ libc {
>      mq_close;
>      mq_getattr;
>      mq_notify;
> +    mq_open;
>      mq_setattr;
>  %endif
>      shm_open;
> @@ -115,9 +123,9 @@ librt {
>      mq_close;
>      mq_getattr;
>      mq_notify;
> +    mq_open;
>      mq_setattr;
>  %endif
> -    mq_open;
>      mq_receive;
>      mq_send;
>      mq_timedreceive;
> @@ -133,6 +141,10 @@ librt {
>  %endif
>    }
>    GLIBC_2.7 {
> +%if PTHREAD_IN_LIBC
> +    __librt_version_placeholder;
> +%else
>     __mq_open_2;
> +%endif
>    }
>  }

Ok.

> diff --git a/rt/librt-compat.c b/rt/librt-compat.c
> index 23c87b0f3e..ef353acdd1 100644
> --- a/rt/librt-compat.c
> +++ b/rt/librt-compat.c
> @@ -38,4 +38,10 @@ 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
> +compat_symbol (librt, __librt_version_placeholder_1,
> +               __librt_version_placeholder, GLIBC_2_7);
> +# endif
> +
>  #endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 98dd344aaf..07f77027fc 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -306,6 +306,7 @@ GLIBC_2.17 __mempcpy_small F
>  GLIBC_2.17 __memset_chk F
>  GLIBC_2.17 __monstartup F
>  GLIBC_2.17 __morecore D 0x8
> +GLIBC_2.17 __mq_open_2 F
>  GLIBC_2.17 __nanosleep F
>  GLIBC_2.17 __newlocale F
>  GLIBC_2.17 __nl_langinfo_l F
> @@ -1360,6 +1361,7 @@ GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
> +GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2358,6 +2360,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2406,6 +2409,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 6cab033b12..32327b9d62 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 5026e54d51..683b320ddc 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2395,6 +2395,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2453,6 +2454,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2501,6 +2503,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2891,6 +2894,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index d85884d888..bd9a4111f3 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,11 +10,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index f677395bd2..0d73e4cf7a 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -300,6 +300,7 @@ GLIBC_2.32 __mempcpy_chk F
>  GLIBC_2.32 __memset_chk F
>  GLIBC_2.32 __monstartup F
>  GLIBC_2.32 __morecore D 0x4
> +GLIBC_2.32 __mq_open_2 F
>  GLIBC_2.32 __nanosleep F
>  GLIBC_2.32 __newlocale F
>  GLIBC_2.32 __nl_langinfo_l F
> @@ -1291,6 +1292,7 @@ GLIBC_2.32 mprotect F
>  GLIBC_2.32 mq_close F
>  GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
> +GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
> @@ -2117,6 +2119,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2165,6 +2168,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 16864093a0..1ed03be8c1 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.32 __mq_open_2 F
> -GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_receive F
>  GLIBC_2.32 mq_send F
>  GLIBC_2.32 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 38e6fc61d4..351bba9289 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -226,6 +226,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -316,6 +317,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1733,6 +1735,7 @@ GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> +GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> @@ -2604,6 +2607,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 6d3cb7c1fa..ecdfd60cdd 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_timedreceive F
> @@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 c31f58229a..803e1a8bf9 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -223,6 +223,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -313,6 +314,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1730,6 +1732,7 @@ GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> +GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> @@ -2601,6 +2604,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 6d3cb7c1fa..ecdfd60cdd 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_timedreceive F
> @@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 bd0cec183d..5a257c5f7f 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -302,6 +302,7 @@ GLIBC_2.29 __mempcpy_chk F
>  GLIBC_2.29 __memset_chk F
>  GLIBC_2.29 __monstartup F
>  GLIBC_2.29 __morecore D 0x4
> +GLIBC_2.29 __mq_open_2 F
>  GLIBC_2.29 __nanosleep F
>  GLIBC_2.29 __newlocale F
>  GLIBC_2.29 __nl_langinfo_l F
> @@ -1346,6 +1347,7 @@ GLIBC_2.29 mprotect F
>  GLIBC_2.29 mq_close F
>  GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
> +GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
> @@ -2336,6 +2338,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2426,6 +2429,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 7c20548140..8e8822b999 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.29 __mq_open_2 F
> -GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_receive F
>  GLIBC_2.29 mq_send F
>  GLIBC_2.29 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index e089d91a80..1d859308d7 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2209,6 +2209,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2290,6 +2291,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2380,6 +2382,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2619,6 +2622,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 d04f1e1a95..9b4f57689b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2390,6 +2390,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2474,6 +2475,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2564,6 +2566,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2803,6 +2806,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index c7569a5138..9575d82f33 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2244,6 +2244,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2291,6 +2292,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __isnanf128 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2339,6 +2341,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2578,6 +2581,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 1ec96c2786..8ecf898b30 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,11 +9,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 57139d935a..94903e9ff0 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -227,6 +227,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -317,6 +318,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -1717,6 +1719,7 @@ GLIBC_2.4 mprotect F
>  GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
> +GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
> @@ -2584,6 +2587,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 6d3cb7c1fa..ecdfd60cdd 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -2,7 +2,6 @@ GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_timedreceive F
> @@ -13,4 +12,4 @@ 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.7 __mq_open_2 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 5fd9bf57ec..f2dddac46b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2333,6 +2333,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2417,6 +2418,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2507,6 +2509,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2746,6 +2749,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 434b3f6844..3c8638ef87 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -307,6 +307,7 @@ GLIBC_2.18 __mempcpy_small F
>  GLIBC_2.18 __memset_chk F
>  GLIBC_2.18 __monstartup F
>  GLIBC_2.18 __morecore D 0x4
> +GLIBC_2.18 __mq_open_2 F
>  GLIBC_2.18 __nanosleep F
>  GLIBC_2.18 __newlocale F
>  GLIBC_2.18 __nl_langinfo_l F
> @@ -1362,6 +1363,7 @@ GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
> +GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2387,6 +2389,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2477,6 +2480,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index f82d9ba705..ce332a362d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 1d97080a9c..8eb98598cc 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -307,6 +307,7 @@ GLIBC_2.18 __mempcpy_small F
>  GLIBC_2.18 __memset_chk F
>  GLIBC_2.18 __monstartup F
>  GLIBC_2.18 __morecore D 0x4
> +GLIBC_2.18 __mq_open_2 F
>  GLIBC_2.18 __nanosleep F
>  GLIBC_2.18 __newlocale F
>  GLIBC_2.18 __nl_langinfo_l F
> @@ -1362,6 +1363,7 @@ GLIBC_2.18 mprotect F
>  GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
> +GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
> @@ -2384,6 +2386,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2474,6 +2477,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index f82d9ba705..ce332a362d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.18 __mq_open_2 F
> -GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index d43b66902d..fd796ad952 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2301,6 +2301,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2382,6 +2383,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2472,6 +2474,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2707,6 +2710,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 12c3cbae0d..84b5002e71 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -14,4 +13,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 86dfc85225..6b9092d313 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2299,6 +2299,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2380,6 +2381,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2470,6 +2472,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2705,6 +2708,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 3314c50b3c..2be1e7d2dd 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2307,6 +2307,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2388,6 +2389,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2478,6 +2480,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2713,6 +2716,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 12c3cbae0d..84b5002e71 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,7 +3,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -14,4 +13,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 a23ebf24a8..9569c4d8e7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2301,6 +2301,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2347,6 +2348,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2395,6 +2397,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2630,6 +2633,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 7afe4e83cf..8862820283 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,11 +3,10 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_open.c b/sysdeps/unix/sysv/linux/mq_open.c
> index 667c5677e5..5464285ceb 100644
> --- a/sysdeps/unix/sysv/linux/mq_open.c
> +++ b/sysdeps/unix/sysv/linux/mq_open.c
> @@ -21,6 +21,7 @@
>  #include <stddef.h>
>  #include <stdio.h>
>  #include <sysdep.h>
> +#include <shlib-compat.h>
>  
>  /* Establish connection between a process and a message queue NAME and
>     return message queue descriptor or (mqd_t) -1 on error.  OFLAG determines
> @@ -49,13 +50,20 @@ __mq_open (const char *name, int oflag, ...)
>  
>    return INLINE_SYSCALL (mq_open, 4, name + 1, oflag, mode, attr);
>  }
> -strong_alias (__mq_open, mq_open);
> +versioned_symbol (libc, __mq_open, mq_open, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (libc, __mq_open, mq_open, GLIBC_2_3_4);
> +#endif
>  
>  mqd_t
> -__mq_open_2 (const char *name, int oflag)
> +___mq_open_2 (const char *name, int oflag)
>  {
>    if (oflag & O_CREAT)
>      __fortify_fail ("invalid mq_open call: O_CREAT without mode and attr");
>  
>    return __mq_open (name, oflag);
>  }
> +versioned_symbol (libc, ___mq_open_2, __mq_open_2, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34)
> +compat_symbol (libc, ___mq_open_2, __mq_open_2, GLIBC_2_7);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 50b5f57efc..e9ed0ba4f7 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -338,6 +338,7 @@ GLIBC_2.21 __mempcpy_small F
>  GLIBC_2.21 __memset_chk F
>  GLIBC_2.21 __monstartup F
>  GLIBC_2.21 __morecore D 0x4
> +GLIBC_2.21 __mq_open_2 F
>  GLIBC_2.21 __muldf3 F
>  GLIBC_2.21 __mulsf3 F
>  GLIBC_2.21 __nanosleep F
> @@ -1405,6 +1406,7 @@ GLIBC_2.21 mprotect F
>  GLIBC_2.21 mq_close F
>  GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
> +GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
> @@ -2426,6 +2428,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2516,6 +2519,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 0ad1b47423..8139d54618 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.21 __mq_open_2 F
> -GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_receive F
>  GLIBC_2.21 mq_send F
>  GLIBC_2.21 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c8b663ff2f..4ca163edbf 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2347,6 +2347,7 @@ GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2444,6 +2445,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2534,6 +2536,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2926,6 +2929,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 551af732bb..ad4c8c6eb2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2380,6 +2380,7 @@ GLIBC_2.3.4 makecontext F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2477,6 +2478,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2567,6 +2569,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2971,6 +2974,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index a79b8863e1..dd3459a50a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2193,6 +2193,7 @@ GLIBC_2.3.4 longjmp F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2255,6 +2256,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2303,6 +2305,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2695,6 +2698,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index a7117238c4..11d78aed63 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,11 +8,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 89293145e4..10293edbdc 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -305,6 +305,7 @@ GLIBC_2.17 __mempcpy_small F
>  GLIBC_2.17 __memset_chk F
>  GLIBC_2.17 __monstartup F
>  GLIBC_2.17 __morecore D 0x8
> +GLIBC_2.17 __mq_open_2 F
>  GLIBC_2.17 __nanosleep F
>  GLIBC_2.17 __newlocale F
>  GLIBC_2.17 __nl_langinfo_l F
> @@ -1448,6 +1449,7 @@ GLIBC_2.17 mprotect F
>  GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
> +GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
> @@ -2554,6 +2556,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __isnanf128 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2602,6 +2605,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 6cab033b12..32327b9d62 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.17 __mq_open_2 F
> -GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index da03d7e3b4..eca2d49a2a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -297,6 +297,7 @@ GLIBC_2.33 __mempcpy_chk F
>  GLIBC_2.33 __memset_chk F
>  GLIBC_2.33 __monstartup F
>  GLIBC_2.33 __morecore D 0x4
> +GLIBC_2.33 __mq_open_2 F
>  GLIBC_2.33 __nanosleep F
>  GLIBC_2.33 __newlocale F
>  GLIBC_2.33 __nl_langinfo_l F
> @@ -1293,6 +1294,7 @@ GLIBC_2.33 mprotect F
>  GLIBC_2.33 mq_close F
>  GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
> +GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
> @@ -2119,6 +2121,7 @@ GLIBC_2.33 write F
>  GLIBC_2.33 writev F
>  GLIBC_2.33 wscanf F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2167,6 +2170,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 2877905086..8d0013bd08 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.33 __mq_open_2 F
> -GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_receive F
>  GLIBC_2.33 mq_send F
>  GLIBC_2.33 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index e1ff263953..46300e450e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -306,6 +306,7 @@ GLIBC_2.27 __mempcpy_chk F
>  GLIBC_2.27 __memset_chk F
>  GLIBC_2.27 __monstartup F
>  GLIBC_2.27 __morecore D 0x8
> +GLIBC_2.27 __mq_open_2 F
>  GLIBC_2.27 __nanosleep F
>  GLIBC_2.27 __newlocale F
>  GLIBC_2.27 __nl_langinfo_l F
> @@ -1343,6 +1344,7 @@ GLIBC_2.27 mprotect F
>  GLIBC_2.27 mq_close F
>  GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
> +GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
> @@ -2319,6 +2321,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2367,6 +2370,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 79c4c5870f..19f0d73de7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.27 __mq_open_2 F
> -GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_receive F
>  GLIBC_2.27 mq_send F
>  GLIBC_2.27 mq_timedreceive F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index b1af366553..b80a760c40 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2346,6 +2346,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2442,6 +2443,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2532,6 +2534,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2922,6 +2925,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 70322f5969..093f116bc6 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2234,6 +2234,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2292,6 +2293,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2340,6 +2342,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2730,6 +2733,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 7e2f744325..c6cf36504c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,11 +8,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 57dc4db1e7..63ac43ca18 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2213,6 +2213,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2297,6 +2298,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2387,6 +2389,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2626,6 +2629,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 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 d00a7d6034..483e612001 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2213,6 +2213,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2294,6 +2295,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2384,6 +2386,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2623,6 +2626,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index c4164f4149..bb9c1f9659 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,6 @@ 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.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -15,4 +14,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index e25501e4c4..9679915508 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2344,6 +2344,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2437,6 +2438,7 @@ GLIBC_2.34 __localtime64_r F
>  GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2527,6 +2529,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2943,6 +2946,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __nldbl___isoc99_fscanf F
>  GLIBC_2.7 __nldbl___isoc99_fwscanf F
>  GLIBC_2.7 __nldbl___isoc99_scanf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 19e98aae24..3d08073063 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
> @@ -16,4 +15,4 @@ GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index cdec31d161..59d1d2beef 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2268,6 +2268,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2314,6 +2315,7 @@ GLIBC_2.33 mknodat F
>  GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2362,6 +2364,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2601,6 +2604,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index d85884d888..bd9a4111f3 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,11 +10,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 1f16f15c1b..699ddbb78d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2222,6 +2222,7 @@ GLIBC_2.3.4 getsourcefilter F
>  GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
> +GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
> @@ -2270,6 +2271,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __isnanf128 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2318,6 +2320,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> @@ -2557,6 +2560,7 @@ GLIBC_2.7 __isoc99_vsscanf F
>  GLIBC_2.7 __isoc99_vswscanf F
>  GLIBC_2.7 __isoc99_vwscanf F
>  GLIBC_2.7 __isoc99_wscanf F
> +GLIBC_2.7 __mq_open_2 F
>  GLIBC_2.7 __open64_2 F
>  GLIBC_2.7 __open_2 F
>  GLIBC_2.7 __openat64_2 F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 139cf285ec..161a731b3e 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,11 +8,10 @@ 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 mq_open F
>  GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> -GLIBC_2.7 __mq_open_2 F
> +GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index ac010952fe..6e069e92a6 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -307,6 +307,7 @@ GLIBC_2.16 __mempcpy_small F
>  GLIBC_2.16 __memset_chk F
>  GLIBC_2.16 __monstartup F
>  GLIBC_2.16 __morecore D 0x4
> +GLIBC_2.16 __mq_open_2 F
>  GLIBC_2.16 __nanosleep F
>  GLIBC_2.16 __newlocale F
>  GLIBC_2.16 __nl_langinfo_l F
> @@ -1367,6 +1368,7 @@ GLIBC_2.16 mprotect F
>  GLIBC_2.16 mq_close F
>  GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
> +GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
> @@ -2373,6 +2375,7 @@ GLIBC_2.33 stat F
>  GLIBC_2.33 stat64 F
>  GLIBC_2.34 __isnanf128 F
>  GLIBC_2.34 __libc_start_main F
> +GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_mutex_lock F
> @@ -2421,6 +2424,7 @@ GLIBC_2.34 lio_listio64 F
>  GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
> +GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index db976a6c97..643cd58e36 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.16 __mq_open_2 F
> -GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_receive F
>  GLIBC_2.16 mq_send F
>  GLIBC_2.16 mq_timedreceive F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 to libc
  2021-06-17 18:59 ` [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 " Florian Weimer
@ 2021-06-24 14:14   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:14 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.

LGTM, thanks.

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

> ---
>  include/mqueue.h                              | 12 ++++--
>  rt/Makefile                                   |  4 +-
>  rt/Versions                                   |  8 +++-
>  sysdeps/unix/sysv/linux/Versions              |  2 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 +++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 +++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  5 +++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 +++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  5 +++
>  .../sysv/linux/microblaze/be/librt.abilist    |  3 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  5 +++
>  .../sysv/linux/microblaze/le/librt.abilist    |  3 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 +++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 +++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 +++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/mq_receive.c          |  9 ++++-
>  sysdeps/unix/sysv/linux/mq_timedreceive.c     | 38 ++++++++++++++-----
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 +++
>  .../linux/powerpc/powerpc32/librt.abilist     |  3 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  5 +++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 +++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  5 +++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  68 files changed, 200 insertions(+), 97 deletions(-)
> 
> diff --git a/include/mqueue.h b/include/mqueue.h
> index 2c40c1e3fc..8243a637d2 100644
> --- a/include/mqueue.h
> +++ b/include/mqueue.h
> @@ -1,20 +1,22 @@
>  #include <rt/mqueue.h>
>  
>  #ifndef _ISOMAC
> +extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
> +
>  # if IS_IN (librt)
>  hidden_proto (mq_timedsend)
>  extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
>  hidden_proto (__mq_timedsend)
> -hidden_proto (mq_timedreceive)
> -extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
> -hidden_proto (__mq_timedreceive)
>  #  if !PTHREAD_IN_LIBC
>  hidden_proto (mq_setattr)
> +hidden_proto (mq_timedreceive)
> +hidden_proto (__mq_timedreceive)
>  #  endif
>  # endif /* IS_IN (librt) */
>  
>  # if PTHREAD_IN_LIBC
>  libc_hidden_proto (mq_setattr)
> +libc_hidden_proto (__mq_timedreceive)
>  
>  /* Called from fork so that the new subprocess re-creates the
>     notification thread if necessary.  */
> @@ -36,6 +38,10 @@ extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
>                                           unsigned int *__restrict msg_prio,
>                                           const struct __timespec64 *__restrict
>                                           abs_timeout);
> +#  if PTHREAD_IN_LIBC
> +libc_hidden_proto (__mq_timedreceive_time64)
> +#  else
>  librt_hidden_proto (__mq_timedreceive_time64)
> +#  endif
>  #endif
>  #endif

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index f0b13b27ba..a3182ac459 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,9 +30,7 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_receive \
>    mq_send \
> -  mq_timedreceive \
>    mq_timedsend \
>    mq_unlink \
>    timer_create \
> @@ -62,7 +60,9 @@ $(librt-routines-var) += \
>    mq_getattr \
>    mq_notify \
>    mq_open \
> +  mq_receive \
>    mq_setattr \
> +  mq_timedreceive \
>  
>  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 d28a7f6979..541106632e 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -30,7 +30,9 @@ libc {
>      mq_getattr;
>      mq_notify;
>      mq_open;
> +    mq_receive;
>      mq_setattr;
> +    mq_timedreceive;
>  %endif
>    }
>    GLIBC_2.4 {
> @@ -68,7 +70,9 @@ libc {
>      mq_getattr;
>      mq_notify;
>      mq_open;
> +    mq_receive;
>      mq_setattr;
> +    mq_timedreceive;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -124,11 +128,11 @@ librt {
>      mq_getattr;
>      mq_notify;
>      mq_open;
> +    mq_receive;
>      mq_setattr;
> +    mq_timedreceive;
>  %endif
> -    mq_receive;
>      mq_send;
> -    mq_timedreceive;
>      mq_timedsend;
>      mq_unlink;
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index f246a389e1..cce7c56652 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -226,6 +226,7 @@ libc {
>      __lstat64_time64;
>      __lutimes64;
>      __mktime64;
> +    __mq_timedreceive_time64;
>      __msgctl64;
>      __mtx_timedlock64;
>      __nanosleep64;
> @@ -296,7 +297,6 @@ librt {
>  %ifdef TIME64_NON_DEFAULT
>      # 64-bit time_t support
>      __mq_timedsend_time64;
> -    __mq_timedreceive_time64;
>      __timer_gettime64;
>      __timer_settime64;
>  %endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 07f77027fc..cd9d4d91c5 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1362,7 +1362,9 @@ GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
> +GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_setattr F
> +GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2410,7 +2412,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 32327b9d62..1c3c05932e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 683b320ddc..7a894d983e 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2396,7 +2396,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2504,7 +2506,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index bd9a4111f3..6eae7e9482 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,9 +10,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 0d73e4cf7a..e3769a67f5 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1293,7 +1293,9 @@ GLIBC_2.32 mq_close F
>  GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
> +GLIBC_2.32 mq_receive F
>  GLIBC_2.32 mq_setattr F
> +GLIBC_2.32 mq_timedreceive F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
>  GLIBC_2.32 mremap F
> @@ -2169,7 +2171,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 1ed03be8c1..7a861b1e76 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.32 mq_receive F
>  GLIBC_2.32 mq_send F
> -GLIBC_2.32 mq_timedreceive F
>  GLIBC_2.32 mq_timedsend F
>  GLIBC_2.32 mq_unlink F
>  GLIBC_2.32 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 351bba9289..74ff1bc808 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -227,6 +227,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -318,7 +319,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1736,7 +1739,9 @@ GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> +GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_setattr F
> +GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index ecdfd60cdd..ea840d42d1 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 803e1a8bf9..04692b0d98 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -224,6 +224,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -315,7 +316,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1733,7 +1736,9 @@ GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> +GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_setattr F
> +GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index ecdfd60cdd..ea840d42d1 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 5a257c5f7f..e25f2637b6 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1348,7 +1348,9 @@ GLIBC_2.29 mq_close F
>  GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
> +GLIBC_2.29 mq_receive F
>  GLIBC_2.29 mq_setattr F
> +GLIBC_2.29 mq_timedreceive F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
>  GLIBC_2.29 mremap F
> @@ -2339,6 +2341,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2430,7 +2433,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 8e8822b999..dadd5b921b 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.29 mq_receive F
>  GLIBC_2.29 mq_send F
> -GLIBC_2.29 mq_timedreceive F
>  GLIBC_2.29 mq_timedsend F
>  GLIBC_2.29 mq_unlink F
>  GLIBC_2.29 timer_create F
> @@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 1d859308d7..7ef275ce02 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2210,7 +2210,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2292,6 +2294,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2383,7 +2386,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 9b4f57689b..a584865427 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2391,7 +2391,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2476,6 +2478,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2567,7 +2570,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 9575d82f33..6e22d91a7f 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2245,7 +2245,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2342,7 +2344,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 8ecf898b30..eb4a5080e2 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,9 +9,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 94903e9ff0..c6e168754f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -228,6 +228,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -319,7 +320,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1720,7 +1723,9 @@ GLIBC_2.4 mq_close F
>  GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
> +GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_setattr F
> +GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index ecdfd60cdd..ea840d42d1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,10 +1,7 @@
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_receive F
>  GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index f2dddac46b..ba3a4ace7b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2334,7 +2334,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2419,6 +2421,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2510,7 +2513,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 3c8638ef87..1350543bce 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1364,7 +1364,9 @@ GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
> +GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_setattr F
> +GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2390,6 +2392,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2481,7 +2484,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index ce332a362d..8ddbc3a272 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 timer_create F
> @@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 8eb98598cc..10151508d3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1364,7 +1364,9 @@ GLIBC_2.18 mq_close F
>  GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
> +GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_setattr F
> +GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2387,6 +2389,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2478,7 +2481,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index ce332a362d..8ddbc3a272 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.18 mq_receive F
>  GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 timer_create F
> @@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index fd796ad952..e3ebc66ae0 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2302,7 +2302,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2384,6 +2386,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2475,7 +2478,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 84b5002e71..2cd12115d9 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,12 +3,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 6b9092d313..e8d041106d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2300,7 +2300,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2382,6 +2384,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2473,7 +2476,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 2be1e7d2dd..b596c529c4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2308,7 +2308,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2390,6 +2392,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2481,7 +2484,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 84b5002e71..2cd12115d9 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,12 +3,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 9569c4d8e7..af99fdad9c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2302,7 +2302,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2398,7 +2400,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 8862820283..b5796aadb3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,9 +3,7 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_receive.c b/sysdeps/unix/sysv/linux/mq_receive.c
> index dd43d3a8e7..e9375a4cbc 100644
> --- a/sysdeps/unix/sysv/linux/mq_receive.c
> +++ b/sysdeps/unix/sysv/linux/mq_receive.c
> @@ -17,14 +17,19 @@
>  
>  #include <errno.h>
>  #include <mqueue.h>
> +#include <shlib-compat.h>
>  #include <stddef.h>
>  #include <sysdep.h>
>  
>  /* Receive the oldest from highest priority messages in message queue
>     MQDES.  */
>  ssize_t
> -mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
> -	    unsigned int *msg_prio)
> +__mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
> +	      unsigned int *msg_prio)
>  {
>    return __mq_timedreceive (mqdes, msg_ptr, msg_len, msg_prio, NULL);
>  }
> +versioned_symbol (libc, __mq_receive, mq_receive, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, __mq_receive, mq_receive, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_timedreceive.c b/sysdeps/unix/sysv/linux/mq_timedreceive.c
> index eb948ccc18..14dcdde3e4 100644
> --- a/sysdeps/unix/sysv/linux/mq_timedreceive.c
> +++ b/sysdeps/unix/sysv/linux/mq_timedreceive.c
> @@ -18,11 +18,12 @@
>  
>  #include <mqueue.h>
>  #include <sysdep-cancel.h>
> +#include <shlib-compat.h>
>  
>  /* Receive the oldest from highest priority messages in message queue
>     MQDES, stop waiting if ABS_TIMEOUT expires.  */
>  ssize_t
> -__mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
> +___mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
>                            unsigned int *__restrict msg_prio,
>                            const struct __timespec64 *__restrict abs_timeout)
>  {
> @@ -55,13 +56,25 @@ __mq_timedreceive_time64 (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
>    return ret;
>  }
>  
> -#if __TIMESIZE != 64
> -librt_hidden_def (__mq_timedreceive_time64)
> +#if __TIMESIZE == 64
> +versioned_symbol (libc, ___mq_timedreceive_time64, mq_timedreceive, GLIBC_2_34);
> +libc_hidden_ver (___mq_timedreceive_time64, __mq_timedreceive)
> +# ifndef SHARED
> +strong_alias (___mq_timedreceive_time64, __mq_timedreceive)
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, ___mq_timedreceive_time64, mq_timedreceive, GLIBC_2_3_4);
> +# endif
> +
> +#else /* __TIMESIZE != 64 */
> +libc_hidden_ver (___mq_timedreceive_time64, __mq_timedreceive_time64)
> +versioned_symbol (libc, ___mq_timedreceive_time64, __mq_timedreceive_time64,
> +		  GLIBC_2_34);
>  
>  ssize_t
> -__mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
> -                   unsigned int *__restrict msg_prio,
> -                   const struct timespec *__restrict abs_timeout)
> +___mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
> +		    unsigned int *__restrict msg_prio,
> +		    const struct timespec *__restrict abs_timeout)
>  {
>    struct __timespec64 ts64;
>    if (abs_timeout != NULL)
> @@ -70,8 +83,13 @@ __mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
>    return __mq_timedreceive_time64 (mqdes, msg_ptr, msg_len, msg_prio,
>                                     abs_timeout != NULL ? &ts64 : NULL);
>  }
> -#endif
> +versioned_symbol (libc, ___mq_timedreceive, mq_timedreceive, GLIBC_2_34);
> +libc_hidden_ver (___mq_timedreceive, __mq_timedreceive)
> +# ifndef SHARED
> +strong_alias (___mq_timedreceive, __mq_timedreceive)
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, ___mq_timedreceive, mq_timedreceive, GLIBC_2_3_4);
> +# endif
>  
> -hidden_def (__mq_timedreceive)
> -weak_alias (__mq_timedreceive, mq_timedreceive)
> -hidden_weak (mq_timedreceive)
> +#endif /* __TIMESIZE != 64 */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index e9ed0ba4f7..0c07cf2e80 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1407,7 +1407,9 @@ GLIBC_2.21 mq_close F
>  GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
> +GLIBC_2.21 mq_receive F
>  GLIBC_2.21 mq_setattr F
> +GLIBC_2.21 mq_timedreceive F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
>  GLIBC_2.21 mremap F
> @@ -2429,6 +2431,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2520,7 +2523,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 8139d54618..7ea7b0a8f3 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.21 mq_receive F
>  GLIBC_2.21 mq_send F
> -GLIBC_2.21 mq_timedreceive F
>  GLIBC_2.21 mq_timedsend F
>  GLIBC_2.21 mq_unlink F
>  GLIBC_2.21 timer_create F
> @@ -8,7 +6,6 @@ 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.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 4ca163edbf..4b3b448927 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2348,7 +2348,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2446,6 +2448,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2537,7 +2540,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index ad4c8c6eb2..b3b90b8136 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2381,7 +2381,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2479,6 +2481,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2570,7 +2573,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index dd3459a50a..1720d4da88 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2194,7 +2194,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2306,7 +2308,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 11d78aed63..3968e8e7cb 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,9 +8,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __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 10293edbdc..9a7d510295 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1450,7 +1450,9 @@ GLIBC_2.17 mq_close F
>  GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
> +GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_setattr F
> +GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2606,7 +2608,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 32327b9d62..1c3c05932e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.17 mq_receive F
>  GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index eca2d49a2a..80fea20f51 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1295,7 +1295,9 @@ GLIBC_2.33 mq_close F
>  GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
> +GLIBC_2.33 mq_receive F
>  GLIBC_2.33 mq_setattr F
> +GLIBC_2.33 mq_timedreceive F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
>  GLIBC_2.33 mremap F
> @@ -2171,7 +2173,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 8d0013bd08..02e6e0d513 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.33 mq_receive F
>  GLIBC_2.33 mq_send F
> -GLIBC_2.33 mq_timedreceive F
>  GLIBC_2.33 mq_timedsend F
>  GLIBC_2.33 mq_unlink F
>  GLIBC_2.33 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 46300e450e..b3ed38d911 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1345,7 +1345,9 @@ GLIBC_2.27 mq_close F
>  GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
> +GLIBC_2.27 mq_receive F
>  GLIBC_2.27 mq_setattr F
> +GLIBC_2.27 mq_timedreceive F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
>  GLIBC_2.27 mremap F
> @@ -2371,7 +2373,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 19f0d73de7..7cd66b1ff6 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.27 mq_receive F
>  GLIBC_2.27 mq_send F
> -GLIBC_2.27 mq_timedreceive F
>  GLIBC_2.27 mq_timedsend F
>  GLIBC_2.27 mq_unlink F
>  GLIBC_2.27 timer_create F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index b80a760c40..d9e415fa6d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2347,7 +2347,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2444,6 +2446,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2535,7 +2538,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 093f116bc6..dec539716c 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2235,7 +2235,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2343,7 +2345,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index c6cf36504c..acaafa5f29 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,9 +8,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 63ac43ca18..ddc4e08f79 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2214,7 +2214,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2299,6 +2301,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2390,7 +2393,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 483e612001..553574f741 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2214,7 +2214,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2296,6 +2298,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2387,7 +2390,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index bb9c1f9659..9d26b1298c 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,12 +4,9 @@ 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.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 9679915508..3e68e78ca2 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2345,7 +2345,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2439,6 +2441,7 @@ GLIBC_2.34 __lstat64_time64 F
>  GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
> +GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2530,7 +2533,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index 3d08073063..ca31f9805a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,12 +5,9 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedreceive_time64 F
>  GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 59d1d2beef..5d21d25fb9 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2269,7 +2269,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2365,7 +2367,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index bd9a4111f3..6eae7e9482 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,9 +10,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 699ddbb78d..08422b301d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2223,7 +2223,9 @@ GLIBC_2.3.4 mq_close F
>  GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
> +GLIBC_2.3.4 mq_receive F
>  GLIBC_2.3.4 mq_setattr F
> +GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2321,7 +2323,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index 161a731b3e..f61e3e7428 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,9 +8,7 @@ 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 mq_receive F
>  GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 6e069e92a6..38f4c2105d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1369,7 +1369,9 @@ GLIBC_2.16 mq_close F
>  GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
> +GLIBC_2.16 mq_receive F
>  GLIBC_2.16 mq_setattr F
> +GLIBC_2.16 mq_timedreceive F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
>  GLIBC_2.16 mremap F
> @@ -2425,7 +2427,9 @@ GLIBC_2.34 mq_close F
>  GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
> +GLIBC_2.34 mq_receive F
>  GLIBC_2.34 mq_setattr F
> +GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 643cd58e36..7e39929d27 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.16 mq_receive F
>  GLIBC_2.16 mq_send F
> -GLIBC_2.16 mq_timedreceive F
>  GLIBC_2.16 mq_timedsend F
>  GLIBC_2.16 mq_unlink F
>  GLIBC_2.16 timer_create F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 to libc
  2021-06-17 18:59 ` [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 " Florian Weimer
@ 2021-06-24 14:22   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:22 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.


LGTM, thanks.

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

> ---
>  include/mqueue.h                              | 12 +++---
>  rt/Makefile                                   |  4 +-
>  rt/Versions                                   |  8 +++-
>  sysdeps/unix/sysv/linux/Versions              |  2 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  5 +++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  5 +++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  3 --
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  5 +++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  3 --
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  5 +++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  3 --
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  5 +++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  3 --
>  .../sysv/linux/microblaze/be/libc.abilist     |  5 +++
>  .../sysv/linux/microblaze/be/librt.abilist    |  3 --
>  .../sysv/linux/microblaze/le/libc.abilist     |  5 +++
>  .../sysv/linux/microblaze/le/librt.abilist    |  3 --
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  5 +++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  3 --
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  5 +++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  5 +++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  3 --
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/mq_send.c             |  7 +++-
>  sysdeps/unix/sysv/linux/mq_timedsend.c        | 38 ++++++++++++++-----
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  3 --
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  5 +++
>  .../linux/powerpc/powerpc32/librt.abilist     |  3 --
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  5 +++
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  5 +++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  3 --
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  3 --
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  5 +++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  3 --
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  5 +++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  3 --
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  4 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  68 files changed, 196 insertions(+), 99 deletions(-)
> 
> diff --git a/include/mqueue.h b/include/mqueue.h
> index 8243a637d2..7a2459e603 100644
> --- a/include/mqueue.h
> +++ b/include/mqueue.h
> @@ -2,21 +2,20 @@
>  
>  #ifndef _ISOMAC
>  extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
> +extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
>  
> -# if IS_IN (librt)
> +# if IS_IN (librt) && !PTHREAD_IN_LIBC
>  hidden_proto (mq_timedsend)
> -extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
>  hidden_proto (__mq_timedsend)
> -#  if !PTHREAD_IN_LIBC
>  hidden_proto (mq_setattr)
>  hidden_proto (mq_timedreceive)
>  hidden_proto (__mq_timedreceive)
> -#  endif
> -# endif /* IS_IN (librt) */
> +# endif
>  
>  # if PTHREAD_IN_LIBC
>  libc_hidden_proto (mq_setattr)
>  libc_hidden_proto (__mq_timedreceive)
> +libc_hidden_proto (__mq_timedsend)
>  
>  /* Called from fork so that the new subprocess re-creates the
>     notification thread if necessary.  */
> @@ -31,7 +30,6 @@ void __mq_notify_fork_subprocess (void) attribute_hidden;
>  extern int __mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr,
>                                    size_t msg_len, unsigned int msg_prio,
>                                    const struct __timespec64 *abs_timeout);
> -librt_hidden_proto (__mq_timedsend_time64)
>  extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
>                                           char *__restrict msg_ptr,
>                                           size_t msg_len,

Ok.

> @@ -40,8 +38,10 @@ extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
>                                           abs_timeout);
>  #  if PTHREAD_IN_LIBC
>  libc_hidden_proto (__mq_timedreceive_time64)
> +libc_hidden_proto (__mq_timedsend_time64)
>  #  else
>  librt_hidden_proto (__mq_timedreceive_time64)
> +librt_hidden_proto (__mq_timedsend_time64)
>  #  endif
>  #endif
>  #endif

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index a3182ac459..cea1189f4d 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,8 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_send \
> -  mq_timedsend \
>    mq_unlink \
>    timer_create \
>    timer_delete \
> @@ -61,8 +59,10 @@ $(librt-routines-var) += \
>    mq_notify \
>    mq_open \
>    mq_receive \
> +  mq_send \
>    mq_setattr \
>    mq_timedreceive \
> +  mq_timedsend \
>  
>  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 541106632e..3363ccb526 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -31,8 +31,10 @@ libc {
>      mq_notify;
>      mq_open;
>      mq_receive;
> +    mq_send;
>      mq_setattr;
>      mq_timedreceive;
> +    mq_timedsend;
>  %endif
>    }
>    GLIBC_2.4 {
> @@ -71,8 +73,10 @@ libc {
>      mq_notify;
>      mq_open;
>      mq_receive;
> +    mq_send;
>      mq_setattr;
>      mq_timedreceive;
> +    mq_timedsend;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -129,11 +133,11 @@ librt {
>      mq_notify;
>      mq_open;
>      mq_receive;
> +    mq_send;
>      mq_setattr;
>      mq_timedreceive;
> -%endif
> -    mq_send;
>      mq_timedsend;
> +%endif
>      mq_unlink;
>    }
>    GLIBC_2.4 {

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index cce7c56652..051ecf9390 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -227,6 +227,7 @@ libc {
>      __lutimes64;
>      __mktime64;
>      __mq_timedreceive_time64;
> +    __mq_timedsend_time64;
>      __msgctl64;
>      __mtx_timedlock64;
>      __nanosleep64;
> @@ -296,7 +297,6 @@ librt {
>    GLIBC_2.34 {
>  %ifdef TIME64_NON_DEFAULT
>      # 64-bit time_t support
> -    __mq_timedsend_time64;
>      __timer_gettime64;
>      __timer_settime64;
>  %endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index cd9d4d91c5..b4edd23bc8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1363,8 +1363,10 @@ GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
> +GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
> +GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2413,8 +2415,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 1c3c05932e..4f4c72f3cc 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 7a894d983e..c2fd6ec79e 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2397,8 +2397,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2507,8 +2509,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 6eae7e9482..3156616c8b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,8 +10,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index e3769a67f5..c36d673f3e 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1294,8 +1294,10 @@ GLIBC_2.32 mq_getattr F
>  GLIBC_2.32 mq_notify F
>  GLIBC_2.32 mq_open F
>  GLIBC_2.32 mq_receive F
> +GLIBC_2.32 mq_send F
>  GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mq_timedreceive F
> +GLIBC_2.32 mq_timedsend F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
>  GLIBC_2.32 mremap F
> @@ -2172,8 +2174,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index 7a861b1e76..c69ae6e40b 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.32 mq_send F
> -GLIBC_2.32 mq_timedsend F
>  GLIBC_2.32 mq_unlink F
>  GLIBC_2.32 timer_create F
>  GLIBC_2.32 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 74ff1bc808..b44d7f5d23 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -228,6 +228,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -320,8 +321,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1740,8 +1743,10 @@ GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> +GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
> +GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index ea840d42d1..00fffc9bf4 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,8 +1,5 @@
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 04692b0d98..4335ee8c5b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -225,6 +225,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -317,8 +318,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1737,8 +1740,10 @@ GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> +GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
> +GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index ea840d42d1..00fffc9bf4 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,8 +1,5 @@
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index e25f2637b6..11f34272fa 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1349,8 +1349,10 @@ GLIBC_2.29 mq_getattr F
>  GLIBC_2.29 mq_notify F
>  GLIBC_2.29 mq_open F
>  GLIBC_2.29 mq_receive F
> +GLIBC_2.29 mq_send F
>  GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mq_timedreceive F
> +GLIBC_2.29 mq_timedsend F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
>  GLIBC_2.29 mremap F
> @@ -2342,6 +2344,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2434,8 +2437,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index dadd5b921b..81964809e8 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,11 +1,8 @@
> -GLIBC_2.29 mq_send F
> -GLIBC_2.29 mq_timedsend F
>  GLIBC_2.29 mq_unlink F
>  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.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 7ef275ce02..d2337afa48 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2211,8 +2211,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2295,6 +2297,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2387,8 +2390,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index a584865427..ae326a36f4 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2392,8 +2392,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2479,6 +2481,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2571,8 +2574,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 6e22d91a7f..ad7b86ca8e 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2246,8 +2246,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2345,8 +2347,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index eb4a5080e2..6c8eb08863 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,8 +9,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index c6e168754f..e0106e57e3 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -229,6 +229,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -321,8 +322,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1724,8 +1727,10 @@ GLIBC_2.4 mq_getattr F
>  GLIBC_2.4 mq_notify F
>  GLIBC_2.4 mq_open F
>  GLIBC_2.4 mq_receive F
> +GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
> +GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index ea840d42d1..00fffc9bf4 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,8 +1,5 @@
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_send F
> -GLIBC_2.4 mq_timedsend F
>  GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index ba3a4ace7b..833105c87e 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2335,8 +2335,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2422,6 +2424,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2514,8 +2517,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 1350543bce..168143b004 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1365,8 +1365,10 @@ GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
> +GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
> +GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2393,6 +2395,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2485,8 +2488,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index 8ddbc3a272..d0b5c08211 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,11 +1,8 @@
> -GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
>  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.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 10151508d3..478c35898d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1365,8 +1365,10 @@ GLIBC_2.18 mq_getattr F
>  GLIBC_2.18 mq_notify F
>  GLIBC_2.18 mq_open F
>  GLIBC_2.18 mq_receive F
> +GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
> +GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2390,6 +2392,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2482,8 +2485,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 8ddbc3a272..d0b5c08211 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,11 +1,8 @@
> -GLIBC_2.18 mq_send F
> -GLIBC_2.18 mq_timedsend F
>  GLIBC_2.18 mq_unlink F
>  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.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index e3ebc66ae0..4d2c5e7fff 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2303,8 +2303,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2387,6 +2389,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2479,8 +2482,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index 2cd12115d9..c2dcd8a037 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,10 +3,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 e8d041106d..729413e091 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2301,8 +2301,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2385,6 +2387,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2477,8 +2480,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index b596c529c4..cc82aa817c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2309,8 +2309,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2393,6 +2395,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2485,8 +2488,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index 2cd12115d9..c2dcd8a037 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,10 +3,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 af99fdad9c..746072a535 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2303,8 +2303,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2401,8 +2403,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index b5796aadb3..1daa0ecaef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,8 +3,6 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_send.c b/sysdeps/unix/sysv/linux/mq_send.c
> index 7744a83fab..45944548b0 100644
> --- a/sysdeps/unix/sysv/linux/mq_send.c
> +++ b/sysdeps/unix/sysv/linux/mq_send.c
> @@ -17,13 +17,18 @@
>  
>  #include <errno.h>
>  #include <mqueue.h>
> +#include <shlib-compat.h>
>  #include <stddef.h>
>  #include <sysdep.h>
>  
>  /* Add message pointed by MSG_PTR to message queue MQDES.  */
>  int
> -mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
> +__mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
>  	 unsigned int msg_prio)
>  {
>    return __mq_timedsend (mqdes, msg_ptr, msg_len, msg_prio, NULL);
>  }
> +versioned_symbol (libc, __mq_send, mq_send, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, __mq_send, mq_send, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mq_timedsend.c b/sysdeps/unix/sysv/linux/mq_timedsend.c
> index 5f14ecb0bf..97b2d123a8 100644
> --- a/sysdeps/unix/sysv/linux/mq_timedsend.c
> +++ b/sysdeps/unix/sysv/linux/mq_timedsend.c
> @@ -18,13 +18,14 @@
>  
>  #include <mqueue.h>
>  #include <sysdep-cancel.h>
> +#include <shlib-compat.h>
>  
>  /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
>     on full message queue if ABS_TIMEOUT expires.  */
>  int
> -__mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
> -                       unsigned int msg_prio,
> -                       const struct __timespec64 *abs_timeout)
> +___mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
> +			unsigned int msg_prio,
> +			const struct __timespec64 *abs_timeout)
>  {
>  # ifndef __NR_mq_timedsend_time64
>  #  define __NR_mq_timedsend_time64 __NR_mq_timedsend
> @@ -55,11 +56,23 @@ __mq_timedsend_time64 (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
>    return ret;
>  }
>  
> -#if __TIMESIZE != 64
> -librt_hidden_def (__mq_timedsend_time64)
> +#if __TIMESIZE == 64
> +versioned_symbol (libc, ___mq_timedsend_time64, mq_timedsend, GLIBC_2_34);
> +libc_hidden_ver (___mq_timedsend_time64, __mq_timedsend)
> +# ifndef SHARED
> +strong_alias (___mq_timedsend_time64, __mq_timedsend)
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, ___mq_timedsend_time64, mq_timedsend, GLIBC_2_3_4);
> +# endif
> +
> +#else /* __TIMESIZE != 64 */
> +libc_hidden_ver (___mq_timedsend_time64, __mq_timedsend_time64)
> +versioned_symbol (libc, ___mq_timedsend_time64, __mq_timedsend_time64,
> +		  GLIBC_2_34);
>  
>  int
> -__mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
> +___mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
>                  unsigned int msg_prio, const struct timespec *abs_timeout)
>  {
>    struct __timespec64 ts64;
> @@ -69,8 +82,13 @@ __mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
>    return __mq_timedsend_time64 (mqdes, msg_ptr, msg_len, msg_prio,
>                                  abs_timeout != NULL ? &ts64 : NULL);
>  }
> -#endif
> +versioned_symbol (libc, ___mq_timedsend, mq_timedsend, GLIBC_2_34);
> +libc_hidden_ver (___mq_timedsend, __mq_timedsend)
> +# ifndef SHARED
> +strong_alias (___mq_timedsend, __mq_timedsend)
> +# endif
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (librt, ___mq_timedsend, mq_timedsend, GLIBC_2_3_4);
> +# endif
>  
> -hidden_def (__mq_timedsend)
> -weak_alias (__mq_timedsend, mq_timedsend)
> -hidden_weak (mq_timedsend)
> +#endif /* __TIMESIZE != 64 */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 0c07cf2e80..cd69447f25 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1408,8 +1408,10 @@ GLIBC_2.21 mq_getattr F
>  GLIBC_2.21 mq_notify F
>  GLIBC_2.21 mq_open F
>  GLIBC_2.21 mq_receive F
> +GLIBC_2.21 mq_send F
>  GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mq_timedreceive F
> +GLIBC_2.21 mq_timedsend F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
>  GLIBC_2.21 mremap F
> @@ -2432,6 +2434,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2524,8 +2527,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 7ea7b0a8f3..1ebc8dc94b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,11 +1,8 @@
> -GLIBC_2.21 mq_send F
> -GLIBC_2.21 mq_timedsend F
>  GLIBC_2.21 mq_unlink F
>  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.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 4b3b448927..23ac9ab4ea 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2349,8 +2349,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2449,6 +2451,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2541,8 +2544,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 b3b90b8136..6f082b2d25 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2382,8 +2382,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2482,6 +2484,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2574,8 +2577,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 1720d4da88..52cdbc92d4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2195,8 +2195,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2309,8 +2311,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 3968e8e7cb..41ac10c6e9 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,8 +8,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink 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 9a7d510295..a6f254b4da 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1451,8 +1451,10 @@ GLIBC_2.17 mq_getattr F
>  GLIBC_2.17 mq_notify F
>  GLIBC_2.17 mq_open F
>  GLIBC_2.17 mq_receive F
> +GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
> +GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2609,8 +2611,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 1c3c05932e..4f4c72f3cc 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.17 mq_send F
> -GLIBC_2.17 mq_timedsend F
>  GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 80fea20f51..a2749838fd 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1296,8 +1296,10 @@ GLIBC_2.33 mq_getattr F
>  GLIBC_2.33 mq_notify F
>  GLIBC_2.33 mq_open F
>  GLIBC_2.33 mq_receive F
> +GLIBC_2.33 mq_send F
>  GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mq_timedreceive F
> +GLIBC_2.33 mq_timedsend F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
>  GLIBC_2.33 mremap F
> @@ -2174,8 +2176,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index 02e6e0d513..bcede2f3c4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.33 mq_send F
> -GLIBC_2.33 mq_timedsend F
>  GLIBC_2.33 mq_unlink F
>  GLIBC_2.33 timer_create F
>  GLIBC_2.33 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index b3ed38d911..7c4d8cc40c 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1346,8 +1346,10 @@ GLIBC_2.27 mq_getattr F
>  GLIBC_2.27 mq_notify F
>  GLIBC_2.27 mq_open F
>  GLIBC_2.27 mq_receive F
> +GLIBC_2.27 mq_send F
>  GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mq_timedreceive F
> +GLIBC_2.27 mq_timedsend F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
>  GLIBC_2.27 mremap F
> @@ -2374,8 +2376,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 7cd66b1ff6..15bac0b449 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.27 mq_send F
> -GLIBC_2.27 mq_timedsend F
>  GLIBC_2.27 mq_unlink F
>  GLIBC_2.27 timer_create F
>  GLIBC_2.27 timer_delete F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index d9e415fa6d..99c003615f 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2348,8 +2348,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2447,6 +2449,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2539,8 +2542,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index dec539716c..3441d1fcd7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2236,8 +2236,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2346,8 +2348,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index acaafa5f29..0d4d401608 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,8 +8,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index ddc4e08f79..420f80d921 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2215,8 +2215,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2302,6 +2304,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2394,8 +2397,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 553574f741..d4cf18a52d 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2215,8 +2215,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2299,6 +2301,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2391,8 +2394,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index 9d26b1298c..d697cfa27d 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,10 +4,7 @@ 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.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 3e68e78ca2..0e4ca149d8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2346,8 +2346,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2442,6 +2444,7 @@ GLIBC_2.34 __lutimes64 F
>  GLIBC_2.34 __mktime64 F
>  GLIBC_2.34 __mq_open_2 F
>  GLIBC_2.34 __mq_timedreceive_time64 F
> +GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __msgctl64 F
>  GLIBC_2.34 __mtx_timedlock64 F
>  GLIBC_2.34 __nanosleep64 F
> @@ -2534,8 +2537,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index ca31f9805a..d246e770d0 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,10 +5,7 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
> -GLIBC_2.34 __mq_timedsend_time64 F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 5d21d25fb9..b9e9d89789 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2270,8 +2270,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2368,8 +2370,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 6eae7e9482..3156616c8b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,8 +10,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 08422b301d..8029500dd3 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2224,8 +2224,10 @@ GLIBC_2.3.4 mq_getattr F
>  GLIBC_2.3.4 mq_notify F
>  GLIBC_2.3.4 mq_open F
>  GLIBC_2.3.4 mq_receive F
> +GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
> +GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2324,8 +2326,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index f61e3e7428..d20321ccad 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,8 +8,6 @@ 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 mq_send F
> -GLIBC_2.3.4 mq_timedsend F
>  GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.4 __librt_version_placeholder F
>  GLIBC_2.7 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 38f4c2105d..d572f528bc 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1370,8 +1370,10 @@ GLIBC_2.16 mq_getattr F
>  GLIBC_2.16 mq_notify F
>  GLIBC_2.16 mq_open F
>  GLIBC_2.16 mq_receive F
> +GLIBC_2.16 mq_send F
>  GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mq_timedreceive F
> +GLIBC_2.16 mq_timedsend F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
>  GLIBC_2.16 mremap F
> @@ -2428,8 +2430,10 @@ GLIBC_2.34 mq_getattr F
>  GLIBC_2.34 mq_notify F
>  GLIBC_2.34 mq_open F
>  GLIBC_2.34 mq_receive F
> +GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
> +GLIBC_2.34 mq_timedsend F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 7e39929d27..7ae8f7dc74 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.16 mq_send F
> -GLIBC_2.16 mq_timedsend F
>  GLIBC_2.16 mq_unlink F
>  GLIBC_2.16 timer_create F
>  GLIBC_2.16 timer_delete F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 27/34] Linux: Move mq_unlink from librt to libc
  2021-06-17 18:59 ` [PATCH 27/34] Linux: Move mq_unlink from librt " Florian Weimer
@ 2021-06-24 14:31   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:31 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> A placeholder symbol is needed on some architectures for the
> GLIBC_2.3.4 version.

LGTM, thanks.

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

> ---
>  rt/Makefile                                               | 2 +-
>  rt/Versions                                               | 8 ++++++--
>  rt/librt-compat.c                                         | 6 ++++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist              | 2 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist             | 1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist               | 2 +-
>  sysdeps/unix/sysv/linux/arc/libc.abilist                  | 2 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist                 | 1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist               | 2 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist              | 1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist                | 1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist                | 2 +-
>  sysdeps/unix/sysv/linux/i386/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist                | 2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 2 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist                | 2 +-
>  sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist          | 2 ++
>  sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist         | 2 +-
>  sysdeps/unix/sysv/linux/microblaze/be/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/be/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/microblaze/le/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/microblaze/le/librt.abilist       | 1 -
>  sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips32/librt.abilist         | 2 +-
>  sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist     | 2 +-
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist     | 2 +-
>  sysdeps/unix/sysv/linux/mq_unlink.c                       | 7 ++++++-
>  sysdeps/unix/sysv/linux/nios2/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist               | 1 -
>  .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist    | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist   | 2 +-
>  .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist  | 2 ++
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/be/librt.abilist    | 2 +-
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
>  .../unix/sysv/linux/powerpc/powerpc64/le/librt.abilist    | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist          | 1 -
>  sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist        | 2 +-
>  sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist         | 2 ++
>  sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist        | 2 +-
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist               | 2 +-
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist                | 2 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist               | 2 +-
>  sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist       | 2 +-
>  sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist        | 2 ++
>  sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist       | 2 +-
>  sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/64/librt.abilist           | 2 +-
>  sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 2 ++
>  sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist          | 1 -
>  66 files changed, 100 insertions(+), 34 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index cea1189f4d..bd9d31b985 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  mq_unlink \
>    timer_create \
>    timer_delete \
>    timer_getoverr \
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    mq_setattr \
>    mq_timedreceive \
>    mq_timedsend \
> +  mq_unlink \
>  
>  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 3363ccb526..9a09062a2a 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -35,6 +35,7 @@ libc {
>      mq_setattr;
>      mq_timedreceive;
>      mq_timedsend;
> +    mq_unlink;
>  %endif
>    }
>    GLIBC_2.4 {
> @@ -77,6 +78,7 @@ libc {
>      mq_setattr;
>      mq_timedreceive;
>      mq_timedsend;
> +    mq_unlink;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -127,7 +129,9 @@ librt {
>      timer_settime;
>    }
>    GLIBC_2.3.4 {
> -%if !PTHREAD_IN_LIBC
> +%if PTHREAD_IN_LIBC
> +    __librt_version_placeholder;
> +%else
>      mq_close;
>      mq_getattr;
>      mq_notify;
> @@ -137,8 +141,8 @@ librt {
>      mq_setattr;
>      mq_timedreceive;
>      mq_timedsend;
> -%endif
>      mq_unlink;
> +%endif
>    }
>    GLIBC_2.4 {
>  %if PTHREAD_IN_LIBC

Ok.

> diff --git a/rt/librt-compat.c b/rt/librt-compat.c
> index ef353acdd1..24c2ed9db4 100644
> --- a/rt/librt-compat.c
> +++ b/rt/librt-compat.c
> @@ -33,6 +33,12 @@ compat_symbol (librt, __librt_version_placeholder_1,
>  # endif
>  
>  # if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34) \
> +  && ABI_librt_GLIBC_2_3_4 != ABI_librt_GLIBC_2_1
> +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
>  compat_symbol (librt, __librt_version_placeholder_1,
>                 __librt_version_placeholder, GLIBC_2_4);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index b4edd23bc8..141d5cb843 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -1367,6 +1367,7 @@ GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
> +GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2419,6 +2420,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 4f4c72f3cc..54bb3e5c7c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index c2fd6ec79e..5441b6a3f3 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2401,6 +2401,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2513,6 +2514,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 3156616c8b..8592c90bdf 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -10,6 +10,6 @@ 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 mq_unlink 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/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index c36d673f3e..37fd195f70 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1298,6 +1298,7 @@ GLIBC_2.32 mq_send F
>  GLIBC_2.32 mq_setattr F
>  GLIBC_2.32 mq_timedreceive F
>  GLIBC_2.32 mq_timedsend F
> +GLIBC_2.32 mq_unlink F
>  GLIBC_2.32 mrand48 F
>  GLIBC_2.32 mrand48_r F
>  GLIBC_2.32 mremap F
> @@ -2178,6 +2179,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
> index c69ae6e40b..0454fb41fd 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.32 mq_unlink F
>  GLIBC_2.32 timer_create F
>  GLIBC_2.32 timer_delete F
>  GLIBC_2.32 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index b44d7f5d23..42ba748c07 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -325,6 +325,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1747,6 +1748,7 @@ GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
> +GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> index 00fffc9bf4..8682174e36 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 4335ee8c5b..92f06718bd 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -322,6 +322,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1744,6 +1745,7 @@ GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
> +GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> index 00fffc9bf4..8682174e36 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 11f34272fa..7ee4e79de2 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -1353,6 +1353,7 @@ GLIBC_2.29 mq_send F
>  GLIBC_2.29 mq_setattr F
>  GLIBC_2.29 mq_timedreceive F
>  GLIBC_2.29 mq_timedsend F
> +GLIBC_2.29 mq_unlink F
>  GLIBC_2.29 mrand48 F
>  GLIBC_2.29 mrand48_r F
>  GLIBC_2.29 mremap F
> @@ -2441,6 +2442,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
> index 81964809e8..c92668b743 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.29 mq_unlink F
>  GLIBC_2.29 timer_create F
>  GLIBC_2.29 timer_delete F
>  GLIBC_2.29 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index d2337afa48..7610cc4343 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2215,6 +2215,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2394,6 +2395,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index ae326a36f4..54a6d61b0b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2396,6 +2396,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2578,6 +2579,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index ad7b86ca8e..cad4a129d1 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2250,6 +2250,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2351,6 +2352,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> index 6c8eb08863..842df91625 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -9,6 +9,6 @@ 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 mq_unlink 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/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index e0106e57e3..ff831374fa 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -326,6 +326,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> @@ -1731,6 +1732,7 @@ GLIBC_2.4 mq_send F
>  GLIBC_2.4 mq_setattr F
>  GLIBC_2.4 mq_timedreceive F
>  GLIBC_2.4 mq_timedsend F
> +GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 mrand48 F
>  GLIBC_2.4 mrand48_r F
>  GLIBC_2.4 mremap F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> index 00fffc9bf4..8682174e36 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 mq_unlink F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
>  GLIBC_2.4 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 833105c87e..b2c98b40e9 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2339,6 +2339,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2521,6 +2522,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 168143b004..fa945ee6fc 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -1369,6 +1369,7 @@ GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
> +GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2492,6 +2493,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> index d0b5c08211..fcfed800bf 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 478c35898d..c65815be74 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -1369,6 +1369,7 @@ GLIBC_2.18 mq_send F
>  GLIBC_2.18 mq_setattr F
>  GLIBC_2.18 mq_timedreceive F
>  GLIBC_2.18 mq_timedsend F
> +GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 mrand48 F
>  GLIBC_2.18 mrand48_r F
>  GLIBC_2.18 mremap F
> @@ -2489,6 +2490,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index d0b5c08211..fcfed800bf 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 mq_unlink F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 4d2c5e7fff..9c0174bf65 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2307,6 +2307,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2486,6 +2487,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> index c2dcd8a037..da85415743 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -3,7 +3,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 729413e091..ac245f4413 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2305,6 +2305,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2484,6 +2485,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index cc82aa817c..f17c4b3412 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2313,6 +2313,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2492,6 +2493,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> index c2dcd8a037..da85415743 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -3,7 +3,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 746072a535..4d9dea349d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2307,6 +2307,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2407,6 +2408,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> index 1daa0ecaef..51354b072d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -3,6 +3,6 @@ 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.3.4 mq_unlink 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/mq_unlink.c b/sysdeps/unix/sysv/linux/mq_unlink.c
> index dcdc6519c4..4afe95af44 100644
> --- a/sysdeps/unix/sysv/linux/mq_unlink.c
> +++ b/sysdeps/unix/sysv/linux/mq_unlink.c
> @@ -18,10 +18,11 @@
>  #include <errno.h>
>  #include <mqueue.h>
>  #include <sysdep.h>
> +#include <shlib-compat.h>
>  
>  /* Remove message queue named NAME.  */
>  int
> -mq_unlink (const char *name)
> +__mq_unlink (const char *name)
>  {
>    if (name[0] != '/')
>      return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
> @@ -40,3 +41,7 @@ mq_unlink (const char *name)
>  
>    return ret;
>  }
> +versioned_symbol (libc, __mq_unlink, mq_unlink, GLIBC_2_34);
> +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
> +compat_symbol (libc, __mq_unlink, mq_unlink, GLIBC_2_3_4);
> +#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index cd69447f25..a1f3808f18 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -1412,6 +1412,7 @@ GLIBC_2.21 mq_send F
>  GLIBC_2.21 mq_setattr F
>  GLIBC_2.21 mq_timedreceive F
>  GLIBC_2.21 mq_timedsend F
> +GLIBC_2.21 mq_unlink F
>  GLIBC_2.21 mrand48 F
>  GLIBC_2.21 mrand48_r F
>  GLIBC_2.21 mremap F
> @@ -2531,6 +2532,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> index 1ebc8dc94b..29111b77bd 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.21 mq_unlink F
>  GLIBC_2.21 timer_create F
>  GLIBC_2.21 timer_delete F
>  GLIBC_2.21 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 23ac9ab4ea..c80718d0b1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2353,6 +2353,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2548,6 +2549,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 6f082b2d25..8156d06db5 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2386,6 +2386,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2581,6 +2582,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 52cdbc92d4..a99bd9409b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2199,6 +2199,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2315,6 +2316,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> index 41ac10c6e9..9df959a434 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -8,6 +8,6 @@ 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 mq_unlink 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 a6f254b4da..ae562f2864 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -1455,6 +1455,7 @@ GLIBC_2.17 mq_send F
>  GLIBC_2.17 mq_setattr F
>  GLIBC_2.17 mq_timedreceive F
>  GLIBC_2.17 mq_timedsend F
> +GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 mrand48 F
>  GLIBC_2.17 mrand48_r F
>  GLIBC_2.17 mremap F
> @@ -2615,6 +2616,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> index 4f4c72f3cc..54bb3e5c7c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.17 mq_unlink F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index a2749838fd..7422465183 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1300,6 +1300,7 @@ GLIBC_2.33 mq_send F
>  GLIBC_2.33 mq_setattr F
>  GLIBC_2.33 mq_timedreceive F
>  GLIBC_2.33 mq_timedsend F
> +GLIBC_2.33 mq_unlink F
>  GLIBC_2.33 mrand48 F
>  GLIBC_2.33 mrand48_r F
>  GLIBC_2.33 mremap F
> @@ -2180,6 +2181,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> index bcede2f3c4..540cdef209 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.33 mq_unlink F
>  GLIBC_2.33 timer_create F
>  GLIBC_2.33 timer_delete F
>  GLIBC_2.33 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 7c4d8cc40c..0bb8343ac4 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -1350,6 +1350,7 @@ GLIBC_2.27 mq_send F
>  GLIBC_2.27 mq_setattr F
>  GLIBC_2.27 mq_timedreceive F
>  GLIBC_2.27 mq_timedsend F
> +GLIBC_2.27 mq_unlink F
>  GLIBC_2.27 mrand48 F
>  GLIBC_2.27 mrand48_r F
>  GLIBC_2.27 mremap F
> @@ -2380,6 +2381,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> index 15bac0b449..e436beaf7e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.27 mq_unlink F
>  GLIBC_2.27 timer_create F
>  GLIBC_2.27 timer_delete F
>  GLIBC_2.27 timer_getoverrun F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 99c003615f..f9db909d63 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2352,6 +2352,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2546,6 +2547,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 3441d1fcd7..593e5f9ae7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2240,6 +2240,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2352,6 +2353,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> index 0d4d401608..9e185ecaef 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -8,6 +8,6 @@ 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 mq_unlink 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/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 420f80d921..8da4e375d9 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2219,6 +2219,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2401,6 +2402,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __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 d4cf18a52d..6f13625e6f 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2219,6 +2219,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2398,6 +2399,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> index d697cfa27d..cfe4455a75 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -4,7 +4,7 @@ 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.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 0e4ca149d8..984222296d 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2350,6 +2350,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2541,6 +2542,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> index d246e770d0..fb3a2042e0 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -5,7 +5,7 @@ GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.4 mq_unlink F
> +GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index b9e9d89789..a6dc7f2e40 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2274,6 +2274,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2374,6 +2375,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> index 3156616c8b..8592c90bdf 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -10,6 +10,6 @@ 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 mq_unlink 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/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 8029500dd3..5d0a9c4012 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2228,6 +2228,7 @@ GLIBC_2.3.4 mq_send F
>  GLIBC_2.3.4 mq_setattr F
>  GLIBC_2.3.4 mq_timedreceive F
>  GLIBC_2.3.4 mq_timedsend F
> +GLIBC_2.3.4 mq_unlink F
>  GLIBC_2.3.4 pthread_attr_getaffinity_np F
>  GLIBC_2.3.4 pthread_attr_setaffinity_np F
>  GLIBC_2.3.4 pthread_getaffinity_np F
> @@ -2330,6 +2331,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> index d20321ccad..ce501e124d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -8,6 +8,6 @@ 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 mq_unlink 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/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index d572f528bc..d67ef0b6d5 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -1374,6 +1374,7 @@ GLIBC_2.16 mq_send F
>  GLIBC_2.16 mq_setattr F
>  GLIBC_2.16 mq_timedreceive F
>  GLIBC_2.16 mq_timedsend F
> +GLIBC_2.16 mq_unlink F
>  GLIBC_2.16 mrand48 F
>  GLIBC_2.16 mrand48_r F
>  GLIBC_2.16 mremap F
> @@ -2434,6 +2435,7 @@ GLIBC_2.34 mq_send F
>  GLIBC_2.34 mq_setattr F
>  GLIBC_2.34 mq_timedreceive F
>  GLIBC_2.34 mq_timedsend F
> +GLIBC_2.34 mq_unlink F
>  GLIBC_2.34 mtx_destroy F
>  GLIBC_2.34 mtx_init F
>  GLIBC_2.34 mtx_lock F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> index 7ae8f7dc74..3144e2e290 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.16 mq_unlink F
>  GLIBC_2.16 timer_create F
>  GLIBC_2.16 timer_delete F
>  GLIBC_2.16 timer_getoverrun F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 28/34] Linux: Move timer helper routines from librt to libc
  2021-06-17 18:59 ` [PATCH 28/34] Linux: Move timer helper routines " Florian Weimer
@ 2021-06-24 14:41   ` Adhemerval Zanella
  2021-06-25 11:38     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 14:41 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> This adds several temporary GLIBC_PRIVATE exports.  The symbol names
> are changed so that they all start with __timer_.
> 
> It is now possible to invoke the fork handler directly, so
> pthread_atfork is no longer necessary.  The associated error cannot
> happen anymore, and cancellation handling can be removed from
> the helper thread routine.

LGTM, thanks.

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


> ---
>  sysdeps/nptl/Makefile                         |  2 +-
>  sysdeps/nptl/fork.c                           |  2 +
>  sysdeps/unix/sysv/linux/Versions              |  5 ++
>  sysdeps/unix/sysv/linux/kernel-posix-timers.h | 22 ++++---
>  sysdeps/unix/sysv/linux/timer_create.c        | 14 ++---
>  sysdeps/unix/sysv/linux/timer_delete.c        | 10 ++--
>  sysdeps/unix/sysv/linux/timer_routines.c      | 59 +++++++++----------
>  7 files changed, 64 insertions(+), 50 deletions(-)
> 
> diff --git a/sysdeps/nptl/Makefile b/sysdeps/nptl/Makefile
> index 0707f130eb..27aa41af3c 100644
> --- a/sysdeps/nptl/Makefile
> +++ b/sysdeps/nptl/Makefile
> @@ -17,7 +17,7 @@
>  # <https://www.gnu.org/licenses/>.
>  
>  ifeq ($(subdir),rt)
> -librt-sysdep_routines += timer_routines
> +sysdep_routines += timer_routines
>  
>  tests += tst-mqueue8x
>  CFLAGS-tst-mqueue8x.c += -fexceptions

Ok.

> diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
> index d6a0996b79..930716c403 100644
> --- a/sysdeps/nptl/fork.c
> +++ b/sysdeps/nptl/fork.c
> @@ -37,6 +37,7 @@
>  #include <sys/single_threaded.h>
>  #include <list.h>
>  #include <mqueue.h>
> +#include <kernel-posix-timers.h>
>  
>  static void
>  fresetlockfiles (void)
> @@ -231,6 +232,7 @@ __libc_fork (void)
>  	  _IO_list_resetlock ();
>  
>  	  call_function_static_weak (__mq_notify_fork_subprocess);
> +	  call_function_static_weak (__timer_fork_subprocess);
>  
>  	  call_function_static_weak (__nss_database_fork_subprocess,
>  				     &nss_database_data);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 051ecf9390..47d4357b9f 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -282,6 +282,11 @@ libc {
>      __pread64_nocancel;
>      __close_nocancel;
>      __sigtimedwait;
> +    __timer_active_sigev_thread;
> +    __timer_active_sigev_thread_lock;
> +    __timer_helper_once;
> +    __timer_helper_tid;
> +    __timer_start_helper_thread;
>      # functions used by nscd
>      __netlink_assert_response;
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 959a81a4d2..17fc32d48f 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -26,19 +26,27 @@
>  extern int __no_posix_timers attribute_hidden;
>  
>  /* Callback to start helper thread.  */
> -extern void __start_helper_thread (void) attribute_hidden;
> +extern void __timer_start_helper_thread (void);
> +libc_hidden_proto (__timer_start_helper_thread)
>  
>  /* Control variable for helper thread creation.  */
> -extern pthread_once_t __helper_once attribute_hidden;
> +extern pthread_once_t __timer_helper_once;
> +libc_hidden_proto (__timer_helper_once)
> +
> +/* Called from fork so that the new subprocess re-creates the
> +   notification thread if necessary.  */
> +void __timer_fork_subprocess (void) attribute_hidden;
>  
>  /* TID of the helper thread.  */
> -extern pid_t __helper_tid attribute_hidden;
> +extern pid_t __timer_helper_tid;
> +libc_hidden_proto (__timer_helper_tid)
>  
>  /* List of active SIGEV_THREAD timers.  */
> -extern struct timer *__active_timer_sigev_thread attribute_hidden;
> -/* Lock for the __active_timer_sigev_thread.  */
> -extern pthread_mutex_t __active_timer_sigev_thread_lock attribute_hidden;
> -
> +extern struct timer *__timer_active_sigev_thread;
> +libc_hidden_proto (__timer_active_sigev_thread)
> +/* Lock for __timer_active_sigev_thread.  */
> +extern pthread_mutex_t __timer_active_sigev_thread_lock;
> +libc_hidden_proto (__timer_active_sigev_thread_lock)
>  
>  /* Type of timers in the kernel.  */
>  typedef int kernel_timer_t;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
> index 1ea0086487..b21b0ca949 100644
> --- a/sysdeps/unix/sysv/linux/timer_create.c
> +++ b/sysdeps/unix/sysv/linux/timer_create.c
> @@ -74,8 +74,8 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>      else
>        {
>  	/* Create the helper thread.  */
> -	pthread_once (&__helper_once, __start_helper_thread);
> -	if (__helper_tid == 0)
> +	pthread_once (&__timer_helper_once, __timer_start_helper_thread);
> +	if (__timer_helper_tid == 0)
>  	  {
>  	    /* No resources to start the helper thread.  */
>  	    __set_errno (EAGAIN);

Ok.

> @@ -118,7 +118,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  	  { .sigev_value.sival_ptr = newp,
>  	    .sigev_signo = SIGTIMER,
>  	    .sigev_notify = SIGEV_SIGNAL | SIGEV_THREAD_ID,
> -	    ._sigev_un = { ._pad = { [0] = __helper_tid } } };
> +	    ._sigev_un = { ._pad = { [0] = __timer_helper_tid } } };
>  
>  	/* Create the timer.  */
>  	int res;
> @@ -132,10 +132,10 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  	  }
>  
>  	/* Add to the queue of active timers with thread delivery.  */
> -	pthread_mutex_lock (&__active_timer_sigev_thread_lock);
> -	newp->next = __active_timer_sigev_thread;
> -	__active_timer_sigev_thread = newp;
> -	pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
> +	pthread_mutex_lock (&__timer_active_sigev_thread_lock);
> +	newp->next = __timer_active_sigev_thread;
> +	__timer_active_sigev_thread = newp;
> +	pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
>  
>  	*timerid = timer_to_timerid (newp);
>        }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c
> index 50aac8fc27..a7a183591e 100644
> --- a/sysdeps/unix/sysv/linux/timer_delete.c
> +++ b/sysdeps/unix/sysv/linux/timer_delete.c
> @@ -42,12 +42,12 @@ timer_delete (timer_t timerid)
>  	  struct timer *kt = timerid_to_timer (timerid);
>  
>  	  /* Remove the timer from the list.  */
> -	  pthread_mutex_lock (&__active_timer_sigev_thread_lock);
> -	  if (__active_timer_sigev_thread == kt)
> -	    __active_timer_sigev_thread = kt->next;
> +	  pthread_mutex_lock (&__timer_active_sigev_thread_lock);
> +	  if (__timer_active_sigev_thread == kt)
> +	    __timer_active_sigev_thread = kt->next;
>  	  else
>  	    {
> -	      struct timer *prevp = __active_timer_sigev_thread;
> +	      struct timer *prevp = __timer_active_sigev_thread;
>  	      while (prevp->next != NULL)
>  		if (prevp->next == kt)
>  		  {

Ok.

> @@ -57,7 +57,7 @@ timer_delete (timer_t timerid)
>  		else
>  		  prevp = prevp->next;
>  	    }
> -	  pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
> +	  pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
>  
>  	  free (kt);
>  	}

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
> index 4098da8a5f..8d8c1a1e76 100644
> --- a/sysdeps/unix/sysv/linux/timer_routines.c
> +++ b/sysdeps/unix/sysv/linux/timer_routines.c
> @@ -26,10 +26,13 @@
>  
>  
>  /* List of active SIGEV_THREAD timers.  */
> -struct timer *__active_timer_sigev_thread;
> -/* Lock for the __active_timer_sigev_thread.  */
> -pthread_mutex_t __active_timer_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
> +struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
> +libc_hidden_data_def (__timer_active_sigev_thread)
>  
> +/* Lock for _timer_active_sigev_thread.  */
> +pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
> +  = PTHREAD_MUTEX_INITIALIZER;
> +libc_hidden_data_def (__timer_active_sigev_thread_lock)
>  
>  struct thread_start_data
>  {

Ok.  I think we should either use a macro initializer for global without
an initialization or add a attribute macro on cdef.h for 
__attribute__ ((nocommon).

> @@ -59,7 +62,7 @@ timer_sigev_thread (void *arg)
>  
>  
>  /* Helper function to support starting threads for SIGEV_THREAD.  */
> -static void *
> +static _Noreturn void *
>  timer_helper_thread (void *arg)
>  {
>    /* Endless loop of waiting for signals.  The loop is only ended when

Ok.

> @@ -68,16 +71,16 @@ timer_helper_thread (void *arg)
>      {
>        siginfo_t si;
>  
> -      while (sigwaitinfo (&sigtimer_set, &si) < 0);
> +      while (__sigwaitinfo (&sigtimer_set, &si) < 0);
>        if (si.si_code == SI_TIMER)
>  	{
>  	  struct timer *tk = (struct timer *) si.si_ptr;
>  
>  	  /* Check the timer is still used and will not go away
>  	     while we are reading the values here.  */
> -	  pthread_mutex_lock (&__active_timer_sigev_thread_lock);
> +	  __pthread_mutex_lock (&__timer_active_sigev_thread_lock);
>  
> -	  struct timer *runp = __active_timer_sigev_thread;
> +	  struct timer *runp = __timer_active_sigev_thread;
>  	  while (runp != NULL)
>  	    if (runp == tk)
>  	      break;

Ok.

> @@ -96,45 +99,44 @@ timer_helper_thread (void *arg)
>  		  td->sival = tk->sival;
>  
>  		  pthread_t th;
> -		  pthread_create (&th, &tk->attr, timer_sigev_thread, td);
> +		  __pthread_create (&th, &tk->attr, timer_sigev_thread, td);
>  		}
>  	    }
>  
> -	  pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
> +	  __pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
>  	}
> -      else if (si.si_code == SI_TKILL)
> -	/* The thread is canceled.  */
> -	pthread_exit (NULL);
>      }
>  }
>  
>  
>  /* Control variable for helper thread creation.  */
> -pthread_once_t __helper_once attribute_hidden;
> +pthread_once_t __timer_helper_once __attribute__ ((nocommon))
> +  = PTHREAD_ONCE_INIT;
> +libc_hidden_data_def (__timer_helper_once)
>  
>  
>  /* TID of the helper thread.  */
> -pid_t __helper_tid attribute_hidden;
> +pid_t __timer_helper_tid __attribute__ ((nocommon));
> +libc_hidden_data_def (__timer_helper_tid)
>  
>  
>  /* Reset variables so that after a fork a new helper thread gets started.  */
> -static void
> -reset_helper_control (void)
> +void
> +__timer_fork_subprocess (void)
>  {
> -  __helper_once = PTHREAD_ONCE_INIT;
> -  __helper_tid = 0;
> +  __timer_helper_once = PTHREAD_ONCE_INIT;
> +  __timer_helper_tid = 0;
>  }
>  
>  

Ok.

>  void
> -attribute_hidden
> -__start_helper_thread (void)
> +__timer_start_helper_thread (void)
>  {
>    /* The helper thread needs only very little resources
>       and should go away automatically when canceled.  */
>    pthread_attr_t attr;
> -  (void) pthread_attr_init (&attr);
> -  (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
> +  (void) __pthread_attr_init (&attr);
> +  (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
>  
>    /* Block all signals in the helper thread but SIGSETXID.  */
>    sigset_t ss;

No need the extra casts here.

> @@ -143,21 +145,18 @@ __start_helper_thread (void)
>    int res = __pthread_attr_setsigmask_internal (&attr, &ss);
>    if (res != 0)
>      {
> -      pthread_attr_destroy (&attr);
> +      __pthread_attr_destroy (&attr);
>        return;
>      }
>  
>    /* Create the helper thread for this timer.  */
>    pthread_t th;
> -  res = pthread_create (&th, &attr, timer_helper_thread, NULL);
> +  res = __pthread_create (&th, &attr, timer_helper_thread, NULL);
>    if (res == 0)
>      /* We managed to start the helper thread.  */
> -    __helper_tid = ((struct pthread *) th)->tid;
> +    __timer_helper_tid = ((struct pthread *) th)->tid;
>  
>    /* No need for the attribute anymore.  */
> -  (void) pthread_attr_destroy (&attr);
> -
> -  /* We have to make sure that after fork()ing a new helper thread can
> -     be created.  */
> -  pthread_atfork (NULL, NULL, reset_helper_control);
> +  (void) __pthread_attr_destroy (&attr);
>  }
> +libc_hidden_def (__timer_start_helper_thread)
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h
  2021-06-17 18:59 ` [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
@ 2021-06-24 16:21   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 16:21 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 17fc32d48f..874b809eba 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -103,3 +103,7 @@ timerid_to_kernel_timer (timer_t timerid)
>    else
>      return (kernel_timer_t) ((uintptr_t) timerid);
>  }
> +
> +/* New targets use int instead of timer_t.  The difference only
> +   matters on 64-bit targets.  */
> +#define TIMER_T_WAS_INT_COMPAT 0

I think it would be better to move this to its own file, so there is no need to
include, undef, define on each arch-specific files.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc
  2021-06-17 18:59 ` [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
@ 2021-06-24 17:18   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:18 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbols were moved using scripts/move-symbol-to-libc.py.
> 
> timer_create and timer_delete are tied together via the int/timer_t
> compatibility code.  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.

LGTM, thanks. There is only a nit below.

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

> ---
>  rt/Makefile                                   |  4 +-
>  rt/Versions                                   | 26 ++++---
>  sysdeps/unix/sysv/linux/Versions              |  5 ++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  4 ++
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  2 -
>  sysdeps/unix/sysv/linux/alpha/Versions        |  2 +-
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  6 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  4 --
>  sysdeps/unix/sysv/linux/alpha/timer_create.c  |  1 -
>  sysdeps/unix/sysv/linux/alpha/timer_delete.c  |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  4 ++
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  4 ++
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  4 ++
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/Versions         |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  6 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  4 --
>  sysdeps/unix/sysv/linux/ia64/timer_create.c   |  1 -
>  sysdeps/unix/sysv/linux/ia64/timer_delete.c   |  1 -
>  sysdeps/unix/sysv/linux/kernel-posix-timers.h | 10 +++
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  4 ++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  4 ++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  4 ++
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  4 ++
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  4 ++
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  4 ++
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  4 ++
>  .../sysv/linux/powerpc/powerpc64/Versions     |  2 +-
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  6 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  4 --
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  4 ++
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/timer_create.c    |  1 -
>  .../linux/powerpc/powerpc64/timer_delete.c    |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  2 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  4 ++
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  2 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  4 ++
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/s390/s390-64/Versions |  2 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  6 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  4 --
>  .../sysv/linux/s390/s390-64/timer_create.c    |  1 -
>  .../sysv/linux/s390/s390-64/timer_delete.c    |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  4 ++
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  4 ++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  2 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  6 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  4 --
>  .../sysv/linux/sparc/sparc64/timer_create.c   |  1 -
>  .../sysv/linux/sparc/sparc64/timer_delete.c   |  1 -
>  sysdeps/unix/sysv/linux/timer_create.c        | 69 +++++++++++++++----
>  sysdeps/unix/sysv/linux/timer_delete.c        | 46 ++++++++++---
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  6 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  4 --
>  sysdeps/unix/sysv/linux/x86_64/Versions       |  2 +-
>  sysdeps/unix/sysv/linux/x86_64/compat-timer.h |  8 ---
>  sysdeps/unix/sysv/linux/x86_64/timer_create.c | 65 -----------------
>  sysdeps/unix/sysv/linux/x86_64/timer_delete.c | 44 ------------
>  .../unix/sysv/linux/x86_64/timer_getoverr.c   |  2 +-
>  .../unix/sysv/linux/x86_64/timer_gettime.c    |  2 +-
>  .../unix/sysv/linux/x86_64/timer_settime.c    |  2 +-
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  4 ++
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  2 -
>  90 files changed, 275 insertions(+), 242 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_delete.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_delete.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_create.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_delete.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index bd9d31b985..d2ff0221c7 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,8 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  timer_create \
> -  timer_delete \
>    timer_getoverr \
>    timer_gettime \
>    timer_settime \
> @@ -63,6 +61,8 @@ $(librt-routines-var) += \
>    mq_timedreceive \
>    mq_timedsend \
>    mq_unlink \
> +  timer_create \
> +  timer_delete \
>  
>  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 9a09062a2a..fca804148c 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -21,6 +21,10 @@ libc {
>  %endif
>    }
>    GLIBC_2.2 {
> +%if PTHREAD_IN_LIBC
> +    timer_create;
> +    timer_delete;
> +%endif
>      shm_open;
>      shm_unlink;
>    }
> @@ -52,23 +56,23 @@ libc {
>    GLIBC_2.34 {
>  %if PTHREAD_IN_LIBC
>      __mq_open_2;
> -    aio_cancel;
>      aio_cancel64;
> -    aio_init;
> -    aio_error;
> +    aio_cancel;
>      aio_error64;
> -    aio_fsync;
> +    aio_error;
>      aio_fsync64;
> -    aio_read;
> +    aio_fsync;
> +    aio_init;
>      aio_read64;
> -    aio_return;
> +    aio_read;
>      aio_return64;
> -    aio_suspend;
> +    aio_return;
>      aio_suspend64;
> -    aio_write;
> +    aio_suspend;
>      aio_write64;
> -    lio_listio;
> +    aio_write;
>      lio_listio64;
> +    lio_listio;
>      mq_close;
>      mq_getattr;
>      mq_notify;
> @@ -79,6 +83,8 @@ libc {
>      mq_timedreceive;
>      mq_timedsend;
>      mq_unlink;
> +    timer_create;
> +    timer_delete;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -122,8 +128,10 @@ librt {
>  %endif
>    }
>    GLIBC_2.2 {
> +%if !PTHREAD_IN_LIBC
>      timer_create;
>      timer_delete;
> +%endif
>      timer_getoverrun;
>      timer_gettime;
>      timer_settime;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 47d4357b9f..0db1b9c31c 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -121,6 +121,10 @@ libc {
>      posix_fallocate64;
>      sys_sigabbrev;
>      sys_siglist;
> +
> +    # Changed timer_t.  Only used by some 64-bit targets.
> +    timer_create;
> +    timer_delete;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;
> @@ -284,6 +288,7 @@ libc {
>      __sigtimedwait;
>      __timer_active_sigev_thread;
>      __timer_active_sigev_thread_lock;
> +    __timer_compat_list;
>      __timer_helper_once;
>      __timer_helper_tid;
>      __timer_start_helper_thread;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 141d5cb843..17779baac1 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2006,6 +2006,8 @@ GLIBC_2.17 tfind F
>  GLIBC_2.17 time F
>  GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
> +GLIBC_2.17 timer_create F
> +GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2529,6 +2531,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 54bb3e5c7c..34768d1472 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,5 +1,3 @@
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index db6116a890..d4bd056f64 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -104,7 +104,7 @@ librt {
>    }
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 5441b6a3f3..985a1deca9 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2093,6 +2093,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x8
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2353,6 +2355,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 _OtsAddX F
>  GLIBC_2.3.4 _OtsConvertFloatTX F
>  GLIBC_2.3.4 _OtsConvertFloatXT F
> @@ -2623,6 +2627,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 8592c90bdf..3b744cf5a1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,12 +1,8 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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.3 __librt_version_placeholder F
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_create.c b/sysdeps/unix/sysv/linux/alpha/timer_create.c
> deleted file mode 100644
> index d307135003..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_create.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_delete.c b/sysdeps/unix/sysv/linux/alpha/timer_delete.c
> deleted file mode 100644
> index 2dd94f5c7a..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_delete.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 37fd195f70..22fa42dfc3 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1940,6 +1940,8 @@ GLIBC_2.32 thrd_yield F
>  GLIBC_2.32 time F
>  GLIBC_2.32 timegm F
>  GLIBC_2.32 timelocal F
> +GLIBC_2.32 timer_create F
> +GLIBC_2.32 timer_delete F
>  GLIBC_2.32 timerfd_create F
>  GLIBC_2.32 timerfd_gettime F
>  GLIBC_2.32 timerfd_settime F
> @@ -2288,6 +2290,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 0454fb41fd..7bc7c57bf0 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 42ba748c07..c8ff2a0b74 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -434,6 +434,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2350,6 +2352,8 @@ GLIBC_2.4 tfind F
>  GLIBC_2.4 time F
>  GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
> +GLIBC_2.4 timer_create F
> +GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,7 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -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
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 92f06718bd..b237b78f85 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -431,6 +431,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2347,6 +2349,8 @@ GLIBC_2.4 tfind F
>  GLIBC_2.4 time F
>  GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
> +GLIBC_2.4 timer_create F
> +GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,7 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -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
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 7ee4e79de2..c1b6927cea 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2030,6 +2030,8 @@ GLIBC_2.29 thrd_yield F
>  GLIBC_2.29 time F
>  GLIBC_2.29 timegm F
>  GLIBC_2.29 timelocal F
> +GLIBC_2.29 timer_create F
> +GLIBC_2.29 timer_delete F
>  GLIBC_2.29 timerfd_create F
>  GLIBC_2.29 timerfd_gettime F
>  GLIBC_2.29 timerfd_settime F
> @@ -2551,6 +2553,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 c92668b743..3d7c839b9b 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 7610cc4343..c5021c8109 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1744,6 +1744,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2504,6 +2506,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 54a6d61b0b..8055ea6984 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2106,6 +2106,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2688,6 +2690,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index f438b12587..29b0d98cc6 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -30,7 +30,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index cad4a129d1..4cf1da5b62 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1765,6 +1765,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2218,6 +2220,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2461,6 +2465,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 842df91625..74a4971070 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,11 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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.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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_create.c b/sysdeps/unix/sysv/linux/ia64/timer_create.c
> deleted file mode 100644
> index d307135003..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_create.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_delete.c b/sysdeps/unix/sysv/linux/ia64/timer_delete.c
> deleted file mode 100644
> index 2dd94f5c7a..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_delete.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 874b809eba..99a2937458 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -48,6 +48,11 @@ libc_hidden_proto (__timer_active_sigev_thread)
>  extern pthread_mutex_t __timer_active_sigev_thread_lock;
>  libc_hidden_proto (__timer_active_sigev_thread_lock)
>  
> +extern __typeof (timer_create) __timer_create;
> +libc_hidden_proto (__timer_create)
> +extern __typeof (timer_delete) __timer_delete;
> +libc_hidden_proto (__timer_delete)
> +
>  /* Type of timers in the kernel.  */
>  typedef int kernel_timer_t;
>  
> @@ -107,3 +112,8 @@ timerid_to_kernel_timer (timer_t timerid)
>  /* New targets use int instead of timer_t.  The difference only
>     matters on 64-bit targets.  */
>  #define TIMER_T_WAS_INT_COMPAT 0
> +
> +/* Used if an override sets TIMER_T_WAS_INT_COMPAT to 1.  */
> +#define OLD_TIMER_MAX 256
> +extern timer_t __timer_compat_list[OLD_TIMER_MAX];
> +libc_hidden_proto (__timer_compat_list)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index ff831374fa..e7c0a81f37 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -435,6 +435,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2330,6 +2332,8 @@ GLIBC_2.4 tfind F
>  GLIBC_2.4 time F
>  GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
> +GLIBC_2.4 timer_create F
> +GLIBC_2.4 timer_delete 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 8682174e36..0887259367 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,7 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -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
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index b2c98b40e9..b82f6366ee 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2062,6 +2062,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2631,6 +2633,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index fa945ee6fc..3f9dfa7664 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2010,6 +2010,8 @@ GLIBC_2.18 tfind F
>  GLIBC_2.18 time F
>  GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
> +GLIBC_2.18 timer_create F
> +GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2602,6 +2604,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 fcfed800bf..2efee3a326 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index c65815be74..bb2fd6251f 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2010,6 +2010,8 @@ GLIBC_2.18 tfind F
>  GLIBC_2.18 time F
>  GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
> +GLIBC_2.18 timer_create F
> +GLIBC_2.18 timer_delete F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2599,6 +2601,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 fcfed800bf..2efee3a326 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 9c0174bf65..938142fb4a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1993,6 +1993,8 @@ GLIBC_2.2 sys_siglist D 0x100
>  GLIBC_2.2 sysv_signal F
>  GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2596,6 +2598,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 da85415743..dbc81ebe4b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index ac245f4413..d62382883b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1991,6 +1991,8 @@ GLIBC_2.2 sys_siglist D 0x100
>  GLIBC_2.2 sysv_signal F
>  GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2594,6 +2596,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 f17c4b3412..28a8a5d294 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1989,6 +1989,8 @@ GLIBC_2.2 sys_siglist D 0x100
>  GLIBC_2.2 sysv_signal F
>  GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2602,6 +2604,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 da85415743..dbc81ebe4b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 4d9dea349d..6748f9beef 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1985,6 +1985,8 @@ GLIBC_2.2 sys_siglist D 0x200
>  GLIBC_2.2 sysv_signal F
>  GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2517,6 +2519,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 51354b072d..00fd77bbab 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index a1f3808f18..03d13e5ee1 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2052,6 +2052,8 @@ GLIBC_2.21 tfind F
>  GLIBC_2.21 time F
>  GLIBC_2.21 timegm F
>  GLIBC_2.21 timelocal F
> +GLIBC_2.21 timer_create F
> +GLIBC_2.21 timer_delete F
>  GLIBC_2.21 timerfd_create F
>  GLIBC_2.21 timerfd_gettime F
>  GLIBC_2.21 timerfd_settime F
> @@ -2641,6 +2643,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 29111b77bd..a83ae32d03 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c80718d0b1..c9a45ecb17 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2067,6 +2067,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2658,6 +2660,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 8156d06db5..c7fbc347a1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2071,6 +2071,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2691,6 +2693,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> index 84c809507f..4eb22c11ac 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -29,7 +29,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      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 a99bd9409b..fb5eb9c67e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1886,6 +1886,8 @@ GLIBC_2.3 tfind F
>  GLIBC_2.3 time F
>  GLIBC_2.3 timegm F
>  GLIBC_2.3 timelocal F
> +GLIBC_2.3 timer_create F
> +GLIBC_2.3 timer_delete F
>  GLIBC_2.3 times F
>  GLIBC_2.3 timezone D 0x8
>  GLIBC_2.3 tmpfile F
> @@ -2162,6 +2164,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2425,6 +2429,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 9df959a434..914203b043 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,10 +1,6 @@
> -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.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
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index ae562f2864..b89256aba0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2094,6 +2094,8 @@ GLIBC_2.17 tfind F
>  GLIBC_2.17 time F
>  GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
> +GLIBC_2.17 timer_create F
> +GLIBC_2.17 timer_delete F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2725,6 +2727,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 54bb3e5c7c..34768d1472 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,5 +1,3 @@
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
> deleted file mode 100644
> index d307135003..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c
> +++ /dev/null
> @@ -1 +0,0 @@

Ok.

> -#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
> deleted file mode 100644
> index 2dd94f5c7a..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 7422465183..c653f52373 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1950,6 +1950,8 @@ GLIBC_2.33 thrd_yield F
>  GLIBC_2.33 time F
>  GLIBC_2.33 timegm F
>  GLIBC_2.33 timelocal F
> +GLIBC_2.33 timer_create F
> +GLIBC_2.33 timer_delete F
>  GLIBC_2.33 timerfd_create F
>  GLIBC_2.33 timerfd_gettime F
>  GLIBC_2.33 timerfd_settime F
> @@ -2290,6 +2292,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 540cdef209..09bbee0960 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 0bb8343ac4..711484eee5 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2016,6 +2016,8 @@ GLIBC_2.27 tfind F
>  GLIBC_2.27 time F
>  GLIBC_2.27 timegm F
>  GLIBC_2.27 timelocal F
> +GLIBC_2.27 timer_create F
> +GLIBC_2.27 timer_delete F
>  GLIBC_2.27 timerfd_create F
>  GLIBC_2.27 timerfd_gettime F
>  GLIBC_2.27 timerfd_settime F
> @@ -2490,6 +2492,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 e436beaf7e..8e1d8b21fe 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index f9db909d63..4040312275 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2065,6 +2065,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2656,6 +2658,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> index 3f4d960421..5989ac75a9 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> @@ -9,7 +9,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      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 593e5f9ae7..4cf6a5ea09 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1761,6 +1761,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2208,6 +2210,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2462,6 +2466,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 9e185ecaef..34e8d31133 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,10 +1,6 @@
> -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.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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
> deleted file mode 100644
> index d307135003..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
> deleted file mode 100644
> index 2dd94f5c7a..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 8da4e375d9..6fd93a5445 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1748,6 +1748,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2511,6 +2513,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 6f13625e6f..c5c41bf0e6 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1748,6 +1748,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2508,6 +2510,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 cfe4455a75..1268c7fc38 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 984222296d..132470d40b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2060,6 +2060,8 @@ GLIBC_2.2 svc_max_pollfd D 0x4
>  GLIBC_2.2 svc_pollfd D 0x4
>  GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2651,6 +2653,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 fb3a2042e0..d8ff3b0988 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,6 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> index 33b6779ec5..358081399a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -14,7 +14,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index a6dc7f2e40..6ee552611b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1791,6 +1791,8 @@ GLIBC_2.2 tfind F
>  GLIBC_2.2 time F
>  GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
> +GLIBC_2.2 timer_create F
> +GLIBC_2.2 timer_delete F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2242,6 +2244,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2484,6 +2488,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 8592c90bdf..3b744cf5a1 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,12 +1,8 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -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.3 __librt_version_placeholder F
> -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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
> deleted file mode 100644
> index d307135003..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_create.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
> deleted file mode 100644
> index 2dd94f5c7a..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_delete.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
> index 3dcd5455fc..9861177cf2 100644
> --- a/sysdeps/unix/sysv/linux/timer_create.c
> +++ b/sysdeps/unix/sysv/linux/timer_create.c
> @@ -27,17 +27,11 @@
>  #include <pthreadP.h>
>  #include <kernel-posix-timers.h>
>  #include "kernel-posix-cpu-timers.h"
> -
> -
> -#ifdef timer_create_alias
> -# define timer_create timer_create_alias
> -#endif
> -
> +#include <shlib-compat.h>
>  
>  int
> -timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
> +___timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  {
> -#undef timer_create
>    {
>      clockid_t syscall_clockid = (clock_id == CLOCK_PROCESS_CPUTIME_ID
>  				 ? MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
> @@ -74,7 +68,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>      else
>        {
>  	/* Create the helper thread.  */
> -	pthread_once (&__timer_helper_once, __timer_start_helper_thread);
> +	__pthread_once (&__timer_helper_once, __timer_start_helper_thread);
>  	if (__timer_helper_tid == 0)
>  	  {
>  	    /* No resources to start the helper thread.  */

Ok.

> @@ -93,7 +87,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  	/* We cannot simply copy the thread attributes since the
>  	   implementation might keep internal information for
>  	   each instance.  */
> -	pthread_attr_init (&newp->attr);
> +	__pthread_attr_init (&newp->attr);
>  	if (evp->sigev_notify_attributes != NULL)
>  	  {
>  	    struct pthread_attr *nattr;
> @@ -111,7 +105,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  	  }
>  
>  	/* In any case set the detach flag.  */
> -	pthread_attr_setdetachstate (&newp->attr, PTHREAD_CREATE_DETACHED);
> +	__pthread_attr_setdetachstate (&newp->attr, PTHREAD_CREATE_DETACHED);
>  
>  	/* Create the event structure for the kernel timer.  */
>  	struct sigevent sev =
> @@ -132,10 +126,10 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  	  }
>  
>  	/* Add to the queue of active timers with thread delivery.  */
> -	pthread_mutex_lock (&__timer_active_sigev_thread_lock);
> +	__pthread_mutex_lock (&__timer_active_sigev_thread_lock);
>  	newp->next = __timer_active_sigev_thread;
>  	__timer_active_sigev_thread = newp;
> -	pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
> +	__pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
>  
>  	*timerid = timer_to_timerid (newp);
>        }
> @@ -143,3 +137,52 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
>  
>    return 0;
>  }

Ok.

> +versioned_symbol (libc, ___timer_create, timer_create, GLIBC_2_34);
> +libc_hidden_ver (___timer_create, __timer_create)
> +
> +#if TIMER_T_WAS_INT_COMPAT
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
> +# endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
> +libc_hidden_data_def (__timer_compat_list)
> +
> +int
> +__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
> +{
> +  timer_t newp;
> +
> +  int res = __timer_create (clock_id, evp, &newp);
> +  if (res == 0)
> +    {
> +      int i;
> +      for (i = 0; i < OLD_TIMER_MAX; ++i)
> +	if (__timer_compat_list[i] == NULL
> +	    && ! atomic_compare_and_exchange_bool_acq (&__timer_compat_list[i],
> +						       newp, NULL))
> +	  {
> +	    *timerid = i;
> +	    break;
> +	  }
> +
> +      if (__glibc_unlikely (i == OLD_TIMER_MAX))
> +	{
> +	  /* No free slot.  */
> +	  (void) __timer_delete (newp);

No need to cast here.

> +	  __set_errno (EINVAL);
> +	  res = -1;
> +	}
> +    }
> +
> +  return res;
> +}
> +compat_symbol (librt, __timer_create_old, timer_create, GLIBC_2_2);
> +# endif /* OTHER_SHLIB_COMPAT */
> +
> +#else /* !TIMER_T_WAS_INT_COMPAT */
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_2);
> +# endif
> +#endif /* !TIMER_T_WAS_INT_COMPAT */

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c
> index ee8c364d95..074a489afd 100644
> --- a/sysdeps/unix/sysv/linux/timer_delete.c
> +++ b/sysdeps/unix/sysv/linux/timer_delete.c
> @@ -21,17 +21,12 @@
>  #include <time.h>
>  #include <sysdep.h>
>  #include <kernel-posix-timers.h>
> -
> -
> -#ifdef timer_delete_alias
> -# define timer_delete timer_delete_alias
> -#endif
> -
> +#include <pthreadP.h>
> +#include <shlib-compat.h>
>  
>  int
> -timer_delete (timer_t timerid)
> +___timer_delete (timer_t timerid)
>  {
> -#undef timer_delete

Ok.

>    kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
>    int res = INLINE_SYSCALL_CALL (timer_delete, ktimerid);
>  
> @@ -42,7 +37,7 @@ timer_delete (timer_t timerid)
>  	  struct timer *kt = timerid_to_timer (timerid);
>  
>  	  /* Remove the timer from the list.  */
> -	  pthread_mutex_lock (&__timer_active_sigev_thread_lock);
> +	  __pthread_mutex_lock (&__timer_active_sigev_thread_lock);
>  	  if (__timer_active_sigev_thread == kt)
>  	    __timer_active_sigev_thread = kt->next;
>  	  else
> @@ -57,7 +52,7 @@ timer_delete (timer_t timerid)
>  		else
>  		  prevp = prevp->next;
>  	    }
> -	  pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
> +	  __pthread_mutex_unlock (&__timer_active_sigev_thread_lock);
>  
>  	  free (kt);
>  	}
> @@ -69,3 +64,34 @@ timer_delete (timer_t timerid)
>       Return the error.  */
>    return -1;
>  }
> +versioned_symbol (libc, ___timer_delete, timer_delete, GLIBC_2_34);
> +libc_hidden_ver (___timer_delete, __timer_delete)
> +
> +#if TIMER_T_WAS_INT_COMPAT
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_delete, timer_delete, GLIBC_2_3_3);
> +#endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +int
> +__timer_delete_old (int timerid)
> +{
> +  int res = __timer_delete (__timer_compat_list[timerid]);
> +
> +  if (res == 0)
> +    /* Successful timer deletion, now free the index.  We only need to
> +       store a word and that better be atomic.  */
> +    __timer_compat_list[timerid] = NULL;
> +
> +  return res;
> +}
> +compat_symbol (librt, __timer_delete_old, timer_delete, GLIBC_2_2);
> +# endif /* OTHER_SHLIB_COMPAT */
> +
> +#else /* !TIMER_T_WAS_INT_COMPAT */
> +/* The transition from int to timer_t did not change ABI because the
> +   type sizes are the same.  */
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_delete, timer_delete, 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 5d0a9c4012..377d35a04f 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1760,6 +1760,8 @@ GLIBC_2.2.5 tfind F
>  GLIBC_2.2.5 time F
>  GLIBC_2.2.5 timegm F
>  GLIBC_2.2.5 timelocal F
> +GLIBC_2.2.5 timer_create F
> +GLIBC_2.2.5 timer_delete F
>  GLIBC_2.2.5 times F
>  GLIBC_2.2.5 timezone D 0x8
>  GLIBC_2.2.5 tmpfile F
> @@ -2196,6 +2198,8 @@ GLIBC_2.3.3 strtoll_l F
>  GLIBC_2.3.3 strtoull_l F
>  GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
> +GLIBC_2.3.3 timer_create F
> +GLIBC_2.3.3 timer_delete F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2440,6 +2444,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 ce501e124d..13a2bf2022 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,10 +1,6 @@
> -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.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

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
> index 2a7ed280fd..c4d1c5fb79 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/Versions
> +++ b/sysdeps/unix/sysv/linux/x86_64/Versions
> @@ -11,7 +11,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_create; timer_delete; timer_getoverrun; timer_gettime;
> +    timer_getoverrun; timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
> index 334808b5ac..c61eb40070 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
> @@ -20,14 +20,6 @@
>  #include <time.h>
>  #include <sys/types.h>
>  
> -#define OLD_TIMER_MAX	256
> -
> -extern timer_t __compat_timer_list[OLD_TIMER_MAX] attribute_hidden;
> -
> -
> -extern int __timer_create_new (clockid_t clock_id, struct sigevent *evp,
> -			       timer_t *timerid);
> -extern int __timer_delete_new (timer_t timerid);
>  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,

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_create.c b/sysdeps/unix/sysv/linux/x86_64/timer_create.c
> deleted file mode 100644
> index ec71ae488b..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_create.c
> +++ /dev/null
> @@ -1,65 +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 "compat-timer.h"
> -#include <atomic.h>
> -
> -
> -#define timer_create_alias __timer_create_new
> -#include <sysdeps/unix/sysv/linux/timer_create.c>
> -
> -#undef timer_create
> -versioned_symbol (librt, __timer_create_new, timer_create, GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -timer_t __compat_timer_list[OLD_TIMER_MAX] attribute_hidden;
> -
> -
> -int
> -__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
> -{
> -  timer_t newp;
> -
> -  int res = __timer_create_new (clock_id, evp, &newp);
> -  if (res == 0)
> -    {
> -      int i;
> -      for (i = 0; i < OLD_TIMER_MAX; ++i)
> -	if (__compat_timer_list[i] == NULL
> -	    && ! atomic_compare_and_exchange_bool_acq (&__compat_timer_list[i],
> -						       newp, NULL))
> -	  {
> -	    *timerid = i;
> -	    break;
> -	  }
> -
> -      if (__glibc_unlikely (i == OLD_TIMER_MAX))
> -	{
> -	  /* No free slot.  */
> -	  (void) __timer_delete_new (newp);
> -	  __set_errno (EINVAL);
> -	  res = -1;
> -	}
> -    }
> -
> -  return res;
> -}
> -compat_symbol (librt, __timer_create_old, timer_create, GLIBC_2_2);
> -#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_delete.c b/sysdeps/unix/sysv/linux/x86_64/timer_delete.c
> deleted file mode 100644
> index 7fc37fc1a7..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_delete.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 "compat-timer.h"
> -
> -
> -#define timer_delete_alias __timer_delete_new
> -#include <sysdeps/unix/sysv/linux/timer_delete.c>
> -
> -#undef timer_delete
> -versioned_symbol (librt, __timer_delete_new, timer_delete, GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -int
> -__timer_delete_old (int timerid)
> -{
> -  int res = __timer_delete_new (__compat_timer_list[timerid]);
> -
> -  if (res == 0)
> -    /* Successful timer deletion, now free the index.  We only need to
> -       store a word and that better be atomic.  */
> -    __compat_timer_list[timerid] = NULL;
> -
> -  return res;
> -}
> -compat_symbol (librt, __timer_delete_old, timer_delete, GLIBC_2_2);
> -#endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> index 9b4c1b2235..fb6e631a00 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> +++ b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> @@ -32,7 +32,7 @@ versioned_symbol (librt, __timer_getoverrun_new, timer_getoverrun,
>  int
>  __timer_getoverrun_old (int timerid)
>  {
> -  return __timer_getoverrun_new (__compat_timer_list[timerid]);
> +  return __timer_getoverrun_new (__timer_compat_list[timerid]);
>  }
>  compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, GLIBC_2_2);
>  #endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> index 107b1f97c7..06ccbc40bd 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> +++ b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> @@ -35,7 +35,7 @@ versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3);
>  int
>  __timer_gettime_old (int timerid, struct itimerspec *value)
>  {
> -  return __timer_gettime_new (__compat_timer_list[timerid], value);
> +  return __timer_gettime_new (__timer_compat_list[timerid], value);
>  }
>  compat_symbol (librt, __timer_gettime_old, timer_gettime, GLIBC_2_2);
>  #endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> index f987cd16d3..dd7d01e849 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> +++ b/sysdeps/unix/sysv/linux/x86_64/timer_settime.c
> @@ -37,7 +37,7 @@ int
>  __timer_settime_old (int timerid, int flags, const struct itimerspec *value,
>  		     struct itimerspec *ovalue)
>  {
> -  return __timer_settime_new (__compat_timer_list[timerid], flags,
> +  return __timer_settime_new (__timer_compat_list[timerid], flags,
>  			      value, ovalue);
>  }
>  compat_symbol (librt, __timer_settime_old, timer_settime, GLIBC_2_2);

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index d67ef0b6d5..620f35836c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2011,6 +2011,8 @@ GLIBC_2.16 tfind F
>  GLIBC_2.16 time F
>  GLIBC_2.16 timegm F
>  GLIBC_2.16 timelocal F
> +GLIBC_2.16 timer_create F
> +GLIBC_2.16 timer_delete F
>  GLIBC_2.16 timerfd_create F
>  GLIBC_2.16 timerfd_gettime F
>  GLIBC_2.16 timerfd_settime F
> @@ -2544,6 +2546,8 @@ GLIBC_2.34 thrd_create F
>  GLIBC_2.34 thrd_detach F
>  GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
> +GLIBC_2.34 timer_create F
> +GLIBC_2.34 timer_delete 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 3144e2e290..4b3e816fdd 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,5 +1,3 @@
> -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
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 31/34] Linux: Move timer_getoverrun from librt to libc
  2021-06-17 18:59 ` [PATCH 31/34] Linux: Move timer_getoverrun " Florian Weimer
@ 2021-06-24 17:26   ` Adhemerval Zanella
  2021-06-24 17:38   ` Adhemerval Zanella
  1 sibling, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:26 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbol was 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.


LGTM, thanks. There is only a nit below.

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

> ---
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  4 +-
>  sysdeps/unix/sysv/linux/Versions              |  1 +
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
>  sysdeps/unix/sysv/linux/alpha/Versions        |  2 +-
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  .../unix/sysv/linux/alpha/timer_getoverr.c    |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/ia64/Versions         |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/timer_getoverr.c |  1 -
>  sysdeps/unix/sysv/linux/kernel-posix-timers.h |  2 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/be/librt.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/le/librt.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../linux/powerpc/powerpc32/librt.abilist     |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../sysv/linux/powerpc/powerpc64/Versions     |  2 +-
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  3 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
>  .../linux/powerpc/powerpc64/timer_getoverr.c  |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/Versions |  2 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  .../sysv/linux/s390/s390-64/timer_getoverr.c  |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  2 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  3 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../sysv/linux/sparc/sparc64/timer_getoverr.c |  1 -
>  sysdeps/unix/sysv/linux/timer_getoverr.c      | 32 ++++++++++++----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/x86_64/Versions       |  2 +-
>  .../unix/sysv/linux/x86_64/timer_getoverr.c   | 38 -------------------
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
>  79 files changed, 107 insertions(+), 95 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index d2ff0221c7..1eadb94ea8 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  timer_getoverr \
>    timer_gettime \
>    timer_settime \
>  
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    mq_unlink \
>    timer_create \
>    timer_delete \
> +  timer_getoverr \
>  
>  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 fca804148c..de78be15dc 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -24,6 +24,7 @@ libc {
>  %if PTHREAD_IN_LIBC
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -85,6 +86,7 @@ libc {
>      mq_unlink;
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -131,8 +133,8 @@ librt {
>  %if !PTHREAD_IN_LIBC
>      timer_create;
>      timer_delete;
> -%endif
>      timer_getoverrun;
> +%endif
>      timer_gettime;
>      timer_settime;
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 0db1b9c31c..31fb4a437b 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -125,6 +125,7 @@ libc {
>      # Changed timer_t.  Only used by some 64-bit targets.
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 17779baac1..9426bbe3f8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2008,6 +2008,7 @@ GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> +GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2533,6 +2534,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 34768d1472..493768f440 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index d4bd056f64..dd5b365d77 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -104,7 +104,7 @@ librt {
>    }
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 985a1deca9..50ab6f3fc1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2095,6 +2095,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2357,6 +2358,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 _OtsAddX F
>  GLIBC_2.3.4 _OtsConvertFloatTX F
>  GLIBC_2.3.4 _OtsConvertFloatXT F
> @@ -2629,6 +2631,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 3b744cf5a1..34d42d122b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,9 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c b/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 22fa42dfc3..aafc056267 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1942,6 +1942,7 @@ GLIBC_2.32 timegm F
>  GLIBC_2.32 timelocal F
>  GLIBC_2.32 timer_create F
>  GLIBC_2.32 timer_delete F
> +GLIBC_2.32 timer_getoverrun F
>  GLIBC_2.32 timerfd_create F
>  GLIBC_2.32 timerfd_gettime F
>  GLIBC_2.32 timerfd_settime F
> @@ -2292,6 +2293,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 7bc7c57bf0..14ae3d7c65 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.32 timer_getoverrun F
>  GLIBC_2.32 timer_gettime F
>  GLIBC_2.32 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index c8ff2a0b74..ac73d766ba 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -436,6 +436,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2354,6 +2355,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 b237b78f85..96ad967292 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -433,6 +433,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2351,6 +2352,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 c1b6927cea..980ac9c497 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2032,6 +2032,7 @@ GLIBC_2.29 timegm F
>  GLIBC_2.29 timelocal F
>  GLIBC_2.29 timer_create F
>  GLIBC_2.29 timer_delete F
> +GLIBC_2.29 timer_getoverrun F
>  GLIBC_2.29 timerfd_create F
>  GLIBC_2.29 timerfd_gettime F
>  GLIBC_2.29 timerfd_settime F
> @@ -2555,6 +2556,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 3d7c839b9b..9f89eb4e8b 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.29 timer_getoverrun F
>  GLIBC_2.29 timer_gettime F
>  GLIBC_2.29 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index c5021c8109..0e6e1444d6 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1746,6 +1746,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2508,6 +2509,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 8055ea6984..d8693b0c7b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2108,6 +2108,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2692,6 +2693,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F

OK.

> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index 29b0d98cc6..1d09fca7e3 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -30,7 +30,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 4cf1da5b62..984b58be61 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1767,6 +1767,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2222,6 +2223,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2467,6 +2469,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 74a4971070..c56040a5f9 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime 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 __librt_version_placeholder F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c b/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 99a2937458..a976b028e0 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -52,6 +52,8 @@ extern __typeof (timer_create) __timer_create;
>  libc_hidden_proto (__timer_create)
>  extern __typeof (timer_delete) __timer_delete;
>  libc_hidden_proto (__timer_delete)
> +extern __typeof (timer_getoverrun) __timer_getoverrun;
> +libc_hidden_proto (__timer_getoverrun)
>  
>  /* Type of timers in the kernel.  */
>  typedef int kernel_timer_t;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index e7c0a81f37..a8d6ad9a4f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -437,6 +437,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2334,6 +2335,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 b82f6366ee..62590726a8 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2064,6 +2064,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2635,6 +2636,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 3f9dfa7664..3fd1621454 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
> +GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index bb2fd6251f..2b839a784d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
> +GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2603,6 +2604,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 938142fb4a..ac623acbd3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1995,6 +1995,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2600,6 +2601,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 d62382883b..776b30b48a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1993,6 +1993,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2598,6 +2599,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 28a8a5d294..1ffaa8e684 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1991,6 +1991,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 6748f9beef..b0c5d0a636 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1987,6 +1987,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2521,6 +2522,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 00fd77bbab..a92565949e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 03d13e5ee1..77778d11f3 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2054,6 +2054,7 @@ GLIBC_2.21 timegm F
>  GLIBC_2.21 timelocal F
>  GLIBC_2.21 timer_create F
>  GLIBC_2.21 timer_delete F
> +GLIBC_2.21 timer_getoverrun F
>  GLIBC_2.21 timerfd_create F
>  GLIBC_2.21 timerfd_gettime F
>  GLIBC_2.21 timerfd_settime F
> @@ -2645,6 +2646,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 a83ae32d03..8ab5ece2b0 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.21 timer_getoverrun F
>  GLIBC_2.21 timer_gettime F
>  GLIBC_2.21 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c9a45ecb17..5562012575 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2069,6 +2069,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2662,6 +2663,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 c7fbc347a1..f0adf7b58b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2073,6 +2073,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2695,6 +2696,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F

OK.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> index 4eb22c11ac..a69927d41d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -29,7 +29,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      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 fb5eb9c67e..e74ecec60f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1888,6 +1888,7 @@ GLIBC_2.3 timegm F
>  GLIBC_2.3 timelocal F
>  GLIBC_2.3 timer_create F
>  GLIBC_2.3 timer_delete F
> +GLIBC_2.3 timer_getoverrun F
>  GLIBC_2.3 times F
>  GLIBC_2.3 timezone D 0x8
>  GLIBC_2.3 tmpfile F
> @@ -2166,6 +2167,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2431,6 +2433,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 914203b043..dd8b2ad6ef 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.3 timer_getoverrun F
>  GLIBC_2.3 timer_gettime F
>  GLIBC_2.3 timer_settime 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 __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 b89256aba0..2a0c06b881 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2096,6 +2096,7 @@ GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> +GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2729,6 +2730,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 34768d1472..493768f440 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index c653f52373..3e0e33bbb3 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1952,6 +1952,7 @@ GLIBC_2.33 timegm F
>  GLIBC_2.33 timelocal F
>  GLIBC_2.33 timer_create F
>  GLIBC_2.33 timer_delete F
> +GLIBC_2.33 timer_getoverrun F
>  GLIBC_2.33 timerfd_create F
>  GLIBC_2.33 timerfd_gettime F
>  GLIBC_2.33 timerfd_settime F
> @@ -2294,6 +2295,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 09bbee0960..de338094e1 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.33 timer_getoverrun F
>  GLIBC_2.33 timer_gettime F
>  GLIBC_2.33 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 711484eee5..1092e5a170 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2018,6 +2018,7 @@ GLIBC_2.27 timegm F
>  GLIBC_2.27 timelocal F
>  GLIBC_2.27 timer_create F
>  GLIBC_2.27 timer_delete F
> +GLIBC_2.27 timer_getoverrun F
>  GLIBC_2.27 timerfd_create F
>  GLIBC_2.27 timerfd_gettime F
>  GLIBC_2.27 timerfd_settime F
> @@ -2494,6 +2495,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 8e1d8b21fe..624ab969d8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.27 timer_getoverrun F
>  GLIBC_2.27 timer_gettime F
>  GLIBC_2.27 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 4040312275..710cafe7c0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2067,6 +2067,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2660,6 +2661,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 5989ac75a9..e7f968fcdf 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> @@ -9,7 +9,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      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 4cf6a5ea09..6b2c7e7d68 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1763,6 +1763,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2212,6 +2213,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2468,6 +2470,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 34e8d31133..35dc39d27d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 6fd93a5445..51a493aadb 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2515,6 +2516,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 c5c41bf0e6..cb37ba55cb 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2512,6 +2513,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 132470d40b..05b4e88794 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2062,6 +2062,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2655,6 +2656,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 d8ff3b0988..0de56c2c15 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> index 358081399a..d04738fafc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -14,7 +14,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 6ee552611b..72591794e8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1793,6 +1793,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2246,6 +2247,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2490,6 +2492,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 3b744cf5a1..34d42d122b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,9 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_getoverr.c b/sysdeps/unix/sysv/linux/timer_getoverr.c
> index b997290768..accec3757d 100644
> --- a/sysdeps/unix/sysv/linux/timer_getoverr.c
> +++ b/sysdeps/unix/sysv/linux/timer_getoverr.c
> @@ -20,17 +20,33 @@
>  #include <time.h>
>  #include <sysdep.h>
>  #include <kernel-posix-timers.h>
> -
> -
> -#ifdef timer_getoverrun_alias
> -# define timer_getoverrun timer_getoverrun_alias
> -#endif
> -
> +#include <shlib-compat.h>
>  
>  int
> -timer_getoverrun (timer_t timerid)
> +___timer_getoverrun (timer_t timerid)
>  {
> -#undef timer_getoverrun
>    kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
>    return INLINE_SYSCALL_CALL (timer_getoverrun, ktimerid);
>  }
> +versioned_symbol (libc, ___timer_getoverrun, timer_getoverrun, GLIBC_2_34);
> +libc_hidden_ver (___timer_getoverrun, __timer_getoverrun)
> +
> +#if TIMER_T_WAS_INT_COMPAT
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, GLIBC_2_3_3);
> +# endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +int
> +__timer_getoverrun_old (int timerid)
> +{
> +  return __timer_getoverrun (__timer_compat_list[timerid]);
> +}
> +compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, GLIBC_2_2);
> +# endif /* OTHER_SHLIB_COMPAT */
> +
> +#else /* !TIMER_T_WAS_INT_COMPAT */
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, 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 377d35a04f..92f4369765 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1762,6 +1762,7 @@ GLIBC_2.2.5 timegm F
>  GLIBC_2.2.5 timelocal F
>  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 times F
>  GLIBC_2.2.5 timezone D 0x8
>  GLIBC_2.2.5 tmpfile F
> @@ -2200,6 +2201,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2446,6 +2448,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 13a2bf2022..379fa6930c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2.5 timer_getoverrun F
>  GLIBC_2.2.5 timer_gettime F
>  GLIBC_2.2.5 timer_settime 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
> index c4d1c5fb79..a97b6c7413 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/Versions
> +++ b/sysdeps/unix/sysv/linux/x86_64/Versions
> @@ -11,7 +11,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> deleted file mode 100644
> index fb6e631a00..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> +++ /dev/null
> @@ -1,38 +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 "compat-timer.h"
> -
> -
> -#define timer_getoverrun_alias __timer_getoverrun_new
> -#include <sysdeps/unix/sysv/linux/timer_getoverr.c>
> -
> -#undef timer_getoverrun
> -versioned_symbol (librt, __timer_getoverrun_new, timer_getoverrun,
> -		  GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -int
> -__timer_getoverrun_old (int timerid)
> -{
> -  return __timer_getoverrun_new (__timer_compat_list[timerid]);
> -}
> -compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, 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 620f35836c..25b177fda0 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2013,6 +2013,7 @@ GLIBC_2.16 timegm F
>  GLIBC_2.16 timelocal F
>  GLIBC_2.16 timer_create F
>  GLIBC_2.16 timer_delete F
> +GLIBC_2.16 timer_getoverrun F
>  GLIBC_2.16 timerfd_create F
>  GLIBC_2.16 timerfd_gettime F
>  GLIBC_2.16 timerfd_settime F
> @@ -2548,6 +2549,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 4b3e816fdd..0b969910ba 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.16 timer_getoverrun F
>  GLIBC_2.16 timer_gettime F
>  GLIBC_2.16 timer_settime F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 from librt to libc
  2021-06-17 18:59 ` [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 " Florian Weimer
@ 2021-06-24 17:36   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:36 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



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.


LGTM, thanks. There is only a nit below.

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

> ---
>  include/time.h                                |  6 +-
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  4 +-
>  sysdeps/unix/sysv/linux/Versions              |  3 +-
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
>  sysdeps/unix/sysv/linux/alpha/Versions        |  1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/alpha/timer_gettime.c |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  3 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  3 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/Versions         |  1 -
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 +
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/timer_gettime.c  |  1 -
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  3 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  2 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  3 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  3 +
>  .../sysv/linux/microblaze/be/librt.abilist    |  2 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  3 +
>  .../sysv/linux/microblaze/le/librt.abilist    |  2 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  3 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  2 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  3 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  3 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  2 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  3 +
>  .../linux/powerpc/powerpc32/librt.abilist     |  2 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  3 +
>  .../sysv/linux/powerpc/powerpc64/Versions     |  1 -
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  3 +
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
>  .../linux/powerpc/powerpc64/timer_gettime.c   |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  3 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |  2 -
>  sysdeps/unix/sysv/linux/s390/s390-64/Versions |  1 -
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 +
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  .../sysv/linux/s390/s390-64/timer_gettime.c   |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  3 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  2 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  2 -
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  1 -
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  3 +
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../sysv/linux/sparc/sparc64/timer_gettime.c  |  1 -
>  sysdeps/unix/sysv/linux/timer_gettime.c       | 63 ++++++++++++++++---
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 +
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/x86_64/Versions       |  1 -
>  .../unix/sysv/linux/x86_64/timer_gettime.c    | 41 ------------
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
>  79 files changed, 153 insertions(+), 119 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_gettime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_gettime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> 
> diff --git a/include/time.h b/include/time.h
> index 980c6bd924..3f4ff44ac3 100644
> --- a/include/time.h
> +++ b/include/time.h
> @@ -218,7 +218,11 @@ libc_hidden_proto (__futimens64);
>  #else
>  extern int __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value);
>  extern int __timerfd_gettime64 (int fd, struct __itimerspec64 *value);
> -librt_hidden_proto (__timer_gettime64);
> +# if PTHREAD_IN_LIBC
> +libc_hidden_proto (__timer_gettime64)
> +# else
> +librt_hidden_proto (__timer_gettime64)
> +# endif
>  libc_hidden_proto (__timerfd_gettime64);
>  #endif
>  

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index 1eadb94ea8..e2ef5f4b0b 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  timer_gettime \
>    timer_settime \
>  
>  librt-shared-only-routines = librt-compat
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    timer_create \
>    timer_delete \
>    timer_getoverr \
> +  timer_gettime \
>  
>  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 de78be15dc..d1f05af013 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -25,6 +25,7 @@ libc {
>      timer_create;
>      timer_delete;
>      timer_getoverrun;
> +    timer_gettime;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -87,6 +88,7 @@ libc {
>      timer_create;
>      timer_delete;
>      timer_getoverrun;
> +    timer_gettime;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -134,8 +136,8 @@ librt {
>      timer_create;
>      timer_delete;
>      timer_getoverrun;
> -%endif
>      timer_gettime;
> +%endif
>      timer_settime;
>    }
>    GLIBC_2.3.4 {

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 31fb4a437b..9bb9d955a5 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -126,6 +126,7 @@ libc {
>      timer_create;
>      timer_delete;
>      timer_getoverrun;
> +    timer_gettime;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;
> @@ -267,6 +268,7 @@ libc {
>      __thrd_sleep64;
>      __time64;
>      __timegm64;
> +    __timer_gettime64;
>      __timerfd_gettime64;
>      __timerfd_settime64;
>      __timespec_get64;
> @@ -308,7 +310,6 @@ librt {
>    GLIBC_2.34 {
>  %ifdef TIME64_NON_DEFAULT
>      # 64-bit time_t support
> -    __timer_gettime64;
>      __timer_settime64;
>  %endif
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 9426bbe3f8..23130c3c9e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2009,6 +2009,7 @@ GLIBC_2.17 timelocal F
>  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 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2535,6 +2536,7 @@ GLIBC_2.34 thrd_join F
>  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 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 493768f440..2cb1369ddb 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index dd5b365d77..0359822d6d 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -104,7 +104,6 @@ librt {
>    }
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 50ab6f3fc1..1f2fff3443 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2096,6 +2096,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2359,6 +2360,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 _OtsAddX F
>  GLIBC_2.3.4 _OtsConvertFloatTX F
>  GLIBC_2.3.4 _OtsConvertFloatXT F
> @@ -2632,6 +2634,7 @@ GLIBC_2.34 thrd_join F
>  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 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 34d42d122b..a2de1ecd94 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_gettime.c b/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
> deleted file mode 100644
> index cea524bae5..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index aafc056267..8ece5c40fb 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1943,6 +1943,7 @@ GLIBC_2.32 timelocal F
>  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 timerfd_create F
>  GLIBC_2.32 timerfd_gettime F
>  GLIBC_2.32 timerfd_settime F
> @@ -2294,6 +2295,7 @@ GLIBC_2.34 thrd_join F
>  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 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 14ae3d7c65..0023244be6 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.32 timer_gettime F
>  GLIBC_2.32 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index ac73d766ba..515c3a224a 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -271,6 +271,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -437,6 +438,7 @@ GLIBC_2.34 thrd_join F
>  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 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2356,6 +2358,7 @@ GLIBC_2.4 timelocal F
>  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 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 78152d8fa3..2f84162558 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 96ad967292..7b7ca7d348 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -268,6 +268,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -434,6 +435,7 @@ GLIBC_2.34 thrd_join F
>  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 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2353,6 +2355,7 @@ GLIBC_2.4 timelocal F
>  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 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 78152d8fa3..2f84162558 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 980ac9c497..d53acb2c08 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2033,6 +2033,7 @@ GLIBC_2.29 timelocal F
>  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 timerfd_create F
>  GLIBC_2.29 timerfd_gettime F
>  GLIBC_2.29 timerfd_settime F
> @@ -2391,6 +2392,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2557,6 +2559,7 @@ GLIBC_2.34 thrd_join F
>  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 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 9f89eb4e8b..52b2819a7d 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,4 +1,2 @@
> -GLIBC_2.29 timer_gettime F
>  GLIBC_2.29 timer_settime F
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 0e6e1444d6..a592e3f628 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1747,6 +1747,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2344,6 +2345,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2510,6 +2512,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 d8693b0c7b..bd3824cb88 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2109,6 +2109,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2528,6 +2529,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2694,6 +2696,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 1d09fca7e3..9a7faf067a 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -30,7 +30,6 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 984b58be61..d589ce16d6 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1768,6 +1768,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2224,6 +2225,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2470,6 +2472,7 @@ GLIBC_2.34 thrd_join F
>  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 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 c56040a5f9..7d8e91b0d9 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,7 +1,5 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_gettime.c b/sysdeps/unix/sysv/linux/ia64/timer_gettime.c
> deleted file mode 100644
> index cea524bae5..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_gettime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index a8d6ad9a4f..7e986dcfd5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -272,6 +272,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -438,6 +439,7 @@ GLIBC_2.34 thrd_join F
>  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 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2336,6 +2338,7 @@ GLIBC_2.4 timelocal F
>  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 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 78152d8fa3..2f84162558 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,5 +1,3 @@
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 62590726a8..97fe827b8d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2065,6 +2065,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2471,6 +2472,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2637,6 +2639,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 3fd1621454..56b5f885b7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2013,6 +2013,7 @@ GLIBC_2.18 timelocal F
>  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 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2442,6 +2443,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2608,6 +2610,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f308a63244..8a4faf155c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,4 +1,2 @@
> -GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 2b839a784d..8910180ff8 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2013,6 +2013,7 @@ GLIBC_2.18 timelocal F
>  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 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2439,6 +2440,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2605,6 +2607,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f308a63244..8a4faf155c 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,4 +1,2 @@
> -GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index ac623acbd3..e81456caf7 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1996,6 +1996,7 @@ GLIBC_2.2 tdestroy F
>  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 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2436,6 +2437,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2602,6 +2604,7 @@ GLIBC_2.34 thrd_join F
>  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 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 af07e28f55..211a60584c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 776b30b48a..ecbad99217 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1994,6 +1994,7 @@ GLIBC_2.2 tdestroy F
>  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 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2434,6 +2435,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2600,6 +2602,7 @@ GLIBC_2.34 thrd_join F
>  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 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 1ffaa8e684..986b16ece3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1992,6 +1992,7 @@ GLIBC_2.2 tdestroy F
>  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 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2442,6 +2443,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2608,6 +2610,7 @@ GLIBC_2.34 thrd_join F
>  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 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 af07e28f55..211a60584c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 b0c5d0a636..141e1b295f 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1988,6 +1988,7 @@ GLIBC_2.2 tdestroy F
>  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 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2523,6 +2524,7 @@ GLIBC_2.34 thrd_join F
>  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 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 a92565949e..406120e1d8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 77778d11f3..71dc98ecf7 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2055,6 +2055,7 @@ GLIBC_2.21 timelocal F
>  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 timerfd_create F
>  GLIBC_2.21 timerfd_gettime F
>  GLIBC_2.21 timerfd_settime F
> @@ -2481,6 +2482,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2647,6 +2649,7 @@ GLIBC_2.34 thrd_join F
>  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 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 8ab5ece2b0..c162738eae 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,4 +1,2 @@
> -GLIBC_2.21 timer_gettime F
>  GLIBC_2.21 timer_settime F
> -GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 5562012575..03a0a0579a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2070,6 +2070,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2498,6 +2499,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2664,6 +2666,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 f0adf7b58b..793531d9c4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2074,6 +2074,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2531,6 +2532,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2697,6 +2699,7 @@ GLIBC_2.34 thrd_join F
>  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 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 a69927d41d..8607ac1012 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -29,7 +29,6 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      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 e74ecec60f..21763f0238 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1889,6 +1889,7 @@ GLIBC_2.3 timelocal F
>  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 times F
>  GLIBC_2.3 timezone D 0x8
>  GLIBC_2.3 tmpfile F
> @@ -2168,6 +2169,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2434,6 +2436,7 @@ GLIBC_2.34 thrd_join F
>  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 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 dd8b2ad6ef..bfaae8ac0e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.3 timer_gettime F
>  GLIBC_2.3 timer_settime F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __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 2a0c06b881..ec8a207385 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2097,6 +2097,7 @@ GLIBC_2.17 timelocal F
>  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 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2731,6 +2732,7 @@ GLIBC_2.34 thrd_join F
>  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 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 493768f440..2cb1369ddb 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
> deleted file mode 100644
> index cea524bae5..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 3e0e33bbb3..c7b749f6a7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1953,6 +1953,7 @@ GLIBC_2.33 timelocal F
>  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 timerfd_create F
>  GLIBC_2.33 timerfd_gettime F
>  GLIBC_2.33 timerfd_settime F
> @@ -2296,6 +2297,7 @@ GLIBC_2.34 thrd_join F
>  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 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 de338094e1..c59f14490e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.33 timer_gettime F
>  GLIBC_2.33 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 1092e5a170..33e13783fc 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2019,6 +2019,7 @@ GLIBC_2.27 timelocal F
>  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 timerfd_create F
>  GLIBC_2.27 timerfd_gettime F
>  GLIBC_2.27 timerfd_settime F
> @@ -2496,6 +2497,7 @@ GLIBC_2.34 thrd_join F
>  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 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 624ab969d8..62ff23fd04 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.27 timer_gettime F
>  GLIBC_2.27 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 710cafe7c0..6681f84af2 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2068,6 +2068,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2496,6 +2497,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2662,6 +2664,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 e7f968fcdf..5c682764ad 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> @@ -9,7 +9,6 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      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 6b2c7e7d68..e97c113408 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1764,6 +1764,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2214,6 +2215,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2471,6 +2473,7 @@ GLIBC_2.34 thrd_join F
>  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 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 35dc39d27d..f851eea81e 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
> deleted file mode 100644
> index cea524bae5..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 51a493aadb..360802cf78 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1751,6 +1751,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2351,6 +2352,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2517,6 +2519,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 cb37ba55cb..e9cb3ff8f1 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1751,6 +1751,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2348,6 +2349,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2514,6 +2516,7 @@ GLIBC_2.34 thrd_join F
>  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 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 f04b1e7978..179d1d53da 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 05b4e88794..2af5948dd7 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2063,6 +2063,7 @@ GLIBC_2.2 swscanf F
>  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 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2491,6 +2492,7 @@ GLIBC_2.34 __stat64_time64 F
>  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 __timerfd_gettime64 F
>  GLIBC_2.34 __timerfd_settime64 F
>  GLIBC_2.34 __timespec_get64 F
> @@ -2657,6 +2659,7 @@ GLIBC_2.34 thrd_join F
>  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 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 0de56c2c15..dc0a3c4dfb 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,9 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
>  GLIBC_2.3.4 __librt_version_placeholder F
> -GLIBC_2.34 __timer_gettime64 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 d04738fafc..5e8f59ceae 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -14,7 +14,6 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 72591794e8..fde5b780a6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1794,6 +1794,7 @@ GLIBC_2.2 timelocal F
>  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 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2248,6 +2249,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2493,6 +2495,7 @@ GLIBC_2.34 thrd_join F
>  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 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 34d42d122b..a2de1ecd94 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
> deleted file mode 100644
> index cea524bae5..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_gettime.c>
> diff --git a/sysdeps/unix/sysv/linux/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c
> index 0b31324da7..993bef8c6a 100644
> --- a/sysdeps/unix/sysv/linux/timer_gettime.c
> +++ b/sysdeps/unix/sysv/linux/timer_gettime.c
> @@ -22,17 +22,19 @@
>  #include <sysdep.h>
>  #include <kernel-features.h>
>  #include <kernel-posix-timers.h>
> +#include <shlib-compat.h>
>  
> +#if !TIMER_T_WAS_INT_COMPAT
>  int
> -__timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
> +___timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
>  {
>    kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
>  
> -#ifndef __NR_timer_gettime64
> -# define __NR_timer_gettime64 __NR_timer_gettime
> -#endif
> +# ifndef __NR_timer_gettime64
> +#  define __NR_timer_gettime64 __NR_timer_gettime
> +# endif
>    int ret = INLINE_SYSCALL_CALL (timer_gettime64, ktimerid, value);
> -#ifndef __ASSUME_TIME64_SYSCALLS
> +# ifndef __ASSUME_TIME64_SYSCALLS
>    if (ret == 0 || errno != ENOSYS)
>      return ret;
>  
> @@ -43,12 +45,19 @@ __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value)
>        value->it_interval = valid_timespec_to_timespec64 (its32.it_interval);
>        value->it_value = valid_timespec_to_timespec64 (its32.it_value);
>      }
> -#endif
> +# endif
>    return ret;
>  }
>  
> -#if __TIMESIZE != 64
> -librt_hidden_def (__timer_gettime64)
> +# if __TIMESIZE == 64
> +versioned_symbol (libc, ___timer_gettime64, timer_gettime, GLIBC_2_34);
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_gettime64, timer_gettime, GLIBC_2_2);
> +#  endif
> +
> +# else /* __TIMESIZE != 64 */
> +libc_hidden_ver (___timer_gettime64, __timer_gettime64)
> +versioned_symbol (libc, ___timer_gettime64, __timer_gettime64, GLIBC_2_34);
>  

Ok.

>  int
>  __timer_gettime (timer_t timerid, struct itimerspec *value)
> @@ -63,5 +72,39 @@ __timer_gettime (timer_t timerid, struct itimerspec *value)
>  
>    return retval;
>  }
> -#endif
> -weak_alias (__timer_gettime, timer_gettime)
> +versioned_symbol (libc, __timer_gettime, timer_gettime, GLIBC_2_34);
> +
> +#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, __timer_gettime, timer_gettime, GLIBC_2_2);
> +#  endif
> +# endif /* __TIMESIZE != 64 */
> +
> +#else /* TIMER_T_WAS_INT_COMPAT */
> +
> +extern __typeof (timer_gettime) __timer_gettime_new;
> +libc_hidden_proto (__timer_gettime_new)
> +
> +int
> +___timer_gettime_new (timer_t timerid, struct itimerspec *value)
> +{
> +  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
> +
> +  return INLINE_SYSCALL_CALL (timer_gettime, ktimerid, value);
> +}
> +versioned_symbol (libc, ___timer_gettime_new, timer_gettime, GLIBC_2_34);
> +libc_hidden_ver (___timer_gettime_new, __timer_gettime_new)
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_gettime_new, timer_gettime, GLIBC_2_3_3);
> +# endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +int
> +__timer_gettime_old (int timerid, struct itimerspec *value)
> +{
> +  return __timer_gettime_new (__timer_compat_list[timerid], value);
> +}
> +compat_symbol (librt, __timer_gettime_old, timer_gettime, 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 92f4369765..87dc534709 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1763,6 +1763,7 @@ GLIBC_2.2.5 timelocal F
>  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 times F
>  GLIBC_2.2.5 timezone D 0x8
>  GLIBC_2.2.5 tmpfile F
> @@ -2202,6 +2203,7 @@ GLIBC_2.3.3 sys_siglist D 0x208
>  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.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2449,6 +2451,7 @@ GLIBC_2.34 thrd_join F
>  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 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 379fa6930c..913835d267 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,6 +1,4 @@
> -GLIBC_2.2.5 timer_gettime F
>  GLIBC_2.2.5 timer_settime F
> -GLIBC_2.3.3 timer_gettime F
>  GLIBC_2.3.3 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
>  GLIBC_2.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
> index a97b6c7413..8deeb8908a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/Versions
> +++ b/sysdeps/unix/sysv/linux/x86_64/Versions
> @@ -11,7 +11,6 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c b/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> deleted file mode 100644
> index 06ccbc40bd..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_gettime.c
> +++ /dev/null
> @@ -1,41 +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_gettime_new (timer_t timerid, struct itimerspec *value)
> -{
> -  kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
> -
> -  return INLINE_SYSCALL_CALL (timer_gettime, ktimerid, value);
> -}
> -versioned_symbol (librt, __timer_gettime_new, timer_gettime, GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -int
> -__timer_gettime_old (int timerid, struct itimerspec *value)
> -{
> -  return __timer_gettime_new (__timer_compat_list[timerid], value);
> -}
> -compat_symbol (librt, __timer_gettime_old, timer_gettime, 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 25b177fda0..143b8d602c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2014,6 +2014,7 @@ GLIBC_2.16 timelocal F
>  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 timerfd_create F
>  GLIBC_2.16 timerfd_gettime F
>  GLIBC_2.16 timerfd_settime F
> @@ -2550,6 +2551,7 @@ GLIBC_2.34 thrd_join F
>  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 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 0b969910ba..50f2032de7 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,2 +1 @@
> -GLIBC_2.16 timer_gettime F
>  GLIBC_2.16 timer_settime F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 31/34] Linux: Move timer_getoverrun from librt to libc
  2021-06-17 18:59 ` [PATCH 31/34] Linux: Move timer_getoverrun " Florian Weimer
  2021-06-24 17:26   ` Adhemerval Zanella
@ 2021-06-24 17:38   ` Adhemerval Zanella
  1 sibling, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:38 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 15:59, Florian Weimer via Libc-alpha wrote:
> The symbol was 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.


LGTM, thanks.

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

> ---
>  rt/Makefile                                   |  2 +-
>  rt/Versions                                   |  4 +-
>  sysdeps/unix/sysv/linux/Versions              |  1 +
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  2 +
>  sysdeps/unix/sysv/linux/aarch64/librt.abilist |  1 -
>  sysdeps/unix/sysv/linux/alpha/Versions        |  2 +-
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  3 ++
>  sysdeps/unix/sysv/linux/alpha/librt.abilist   |  2 -
>  .../unix/sysv/linux/alpha/timer_getoverr.c    |  1 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  2 +
>  sysdeps/unix/sysv/linux/arc/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |  1 -
>  sysdeps/unix/sysv/linux/ia64/Versions         |  2 +-
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  3 ++
>  sysdeps/unix/sysv/linux/ia64/librt.abilist    |  2 -
>  sysdeps/unix/sysv/linux/ia64/timer_getoverr.c |  1 -
>  sysdeps/unix/sysv/linux/kernel-posix-timers.h |  2 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  2 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |  1 -
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |  1 -
>  .../sysv/linux/microblaze/be/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/be/librt.abilist    |  1 -
>  .../sysv/linux/microblaze/le/libc.abilist     |  2 +
>  .../sysv/linux/microblaze/le/librt.abilist    |  1 -
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |  1 -
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  1 -
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
>  .../sysv/linux/mips/mips64/n64/librt.abilist  |  1 -
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |  1 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
>  .../linux/powerpc/powerpc32/librt.abilist     |  1 -
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
>  .../sysv/linux/powerpc/powerpc64/Versions     |  2 +-
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  3 ++
>  .../linux/powerpc/powerpc64/be/librt.abilist  |  2 -
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  2 +
>  .../linux/powerpc/powerpc64/le/librt.abilist  |  1 -
>  .../linux/powerpc/powerpc64/timer_getoverr.c  |  1 -
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv32/librt.abilist  |  1 -
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  2 +
>  .../unix/sysv/linux/riscv/rv64/librt.abilist  |  1 -
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  2 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
>  sysdeps/unix/sysv/linux/s390/s390-64/Versions |  2 +-
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |  3 ++
>  .../sysv/linux/s390/s390-64/librt.abilist     |  2 -
>  .../sysv/linux/s390/s390-64/timer_getoverr.c  |  1 -
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  1 -
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  2 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  1 -
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |  1 -
>  .../unix/sysv/linux/sparc/sparc64/Versions    |  2 +-
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  3 ++
>  .../sysv/linux/sparc/sparc64/librt.abilist    |  2 -
>  .../sysv/linux/sparc/sparc64/timer_getoverr.c |  1 -
>  sysdeps/unix/sysv/linux/timer_getoverr.c      | 32 ++++++++++++----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  3 ++
>  .../unix/sysv/linux/x86_64/64/librt.abilist   |  2 -
>  sysdeps/unix/sysv/linux/x86_64/Versions       |  2 +-
>  .../unix/sysv/linux/x86_64/timer_getoverr.c   | 38 -------------------
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 +
>  .../unix/sysv/linux/x86_64/x32/librt.abilist  |  1 -
>  79 files changed, 107 insertions(+), 95 deletions(-)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index d2ff0221c7..1eadb94ea8 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -30,7 +30,6 @@ routines = \
>  
>  librt-routines = \
>    librt-compat \
> -  timer_getoverr \
>    timer_gettime \
>    timer_settime \
>  
> @@ -63,6 +62,7 @@ $(librt-routines-var) += \
>    mq_unlink \
>    timer_create \
>    timer_delete \
> +  timer_getoverr \
>  
>  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 fca804148c..de78be15dc 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -24,6 +24,7 @@ libc {
>  %if PTHREAD_IN_LIBC
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -85,6 +86,7 @@ libc {
>      mq_unlink;
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>  %endif
>      shm_open;
>      shm_unlink;
> @@ -131,8 +133,8 @@ librt {
>  %if !PTHREAD_IN_LIBC
>      timer_create;
>      timer_delete;
> -%endif
>      timer_getoverrun;
> +%endif
>      timer_gettime;
>      timer_settime;
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 0db1b9c31c..31fb4a437b 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -125,6 +125,7 @@ libc {
>      # Changed timer_t.  Only used by some 64-bit targets.
>      timer_create;
>      timer_delete;
> +    timer_getoverrun;
>    }
>    GLIBC_2.3.4 {
>      sched_getaffinity; sched_setaffinity;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 17779baac1..9426bbe3f8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2008,6 +2008,7 @@ GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> +GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2533,6 +2534,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> index 34768d1472..493768f440 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
> index d4bd056f64..dd5b365d77 100644
> --- a/sysdeps/unix/sysv/linux/alpha/Versions
> +++ b/sysdeps/unix/sysv/linux/alpha/Versions
> @@ -104,7 +104,7 @@ librt {
>    }
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index 985a1deca9..50ab6f3fc1 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2095,6 +2095,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2357,6 +2358,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 _OtsAddX F
>  GLIBC_2.3.4 _OtsConvertFloatTX F
>  GLIBC_2.3.4 _OtsConvertFloatXT F
> @@ -2629,6 +2631,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> index 3b744cf5a1..34d42d122b 100644
> --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist
> @@ -1,9 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c b/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index 22fa42dfc3..aafc056267 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -1942,6 +1942,7 @@ GLIBC_2.32 timegm F
>  GLIBC_2.32 timelocal F
>  GLIBC_2.32 timer_create F
>  GLIBC_2.32 timer_delete F
> +GLIBC_2.32 timer_getoverrun F
>  GLIBC_2.32 timerfd_create F
>  GLIBC_2.32 timerfd_gettime F
>  GLIBC_2.32 timerfd_settime F
> @@ -2292,6 +2293,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 7bc7c57bf0..14ae3d7c65 100644
> --- a/sysdeps/unix/sysv/linux/arc/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.32 timer_getoverrun F
>  GLIBC_2.32 timer_gettime F
>  GLIBC_2.32 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index c8ff2a0b74..ac73d766ba 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -436,6 +436,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2354,6 +2355,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 b237b78f85..96ad967292 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -433,6 +433,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2351,6 +2352,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 c1b6927cea..980ac9c497 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2032,6 +2032,7 @@ GLIBC_2.29 timegm F
>  GLIBC_2.29 timelocal F
>  GLIBC_2.29 timer_create F
>  GLIBC_2.29 timer_delete F
> +GLIBC_2.29 timer_getoverrun F
>  GLIBC_2.29 timerfd_create F
>  GLIBC_2.29 timerfd_gettime F
>  GLIBC_2.29 timerfd_settime F
> @@ -2555,6 +2556,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 3d7c839b9b..9f89eb4e8b 100644
> --- a/sysdeps/unix/sysv/linux/csky/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.29 timer_getoverrun F
>  GLIBC_2.29 timer_gettime F
>  GLIBC_2.29 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index c5021c8109..0e6e1444d6 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -1746,6 +1746,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2508,6 +2509,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 8055ea6984..d8693b0c7b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2108,6 +2108,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2692,6 +2693,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/i386/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions
> index 29b0d98cc6..1d09fca7e3 100644
> --- a/sysdeps/unix/sysv/linux/ia64/Versions
> +++ b/sysdeps/unix/sysv/linux/ia64/Versions
> @@ -30,7 +30,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 4cf1da5b62..984b58be61 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1767,6 +1767,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2222,6 +2223,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2467,6 +2469,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 74a4971070..c56040a5f9 100644
> --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist
> @@ -1,8 +1,6 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c b/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/ia64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 99a2937458..a976b028e0 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -52,6 +52,8 @@ extern __typeof (timer_create) __timer_create;
>  libc_hidden_proto (__timer_create)
>  extern __typeof (timer_delete) __timer_delete;
>  libc_hidden_proto (__timer_delete)
> +extern __typeof (timer_getoverrun) __timer_getoverrun;
> +libc_hidden_proto (__timer_getoverrun)
>  
>  /* Type of timers in the kernel.  */
>  typedef int kernel_timer_t;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index e7c0a81f37..a8d6ad9a4f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -437,6 +437,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun F
>  GLIBC_2.34 timespec_getres F
>  GLIBC_2.34 tss_create F
>  GLIBC_2.34 tss_delete F
> @@ -2334,6 +2335,7 @@ GLIBC_2.4 timegm F
>  GLIBC_2.4 timelocal F
>  GLIBC_2.4 timer_create F
>  GLIBC_2.4 timer_delete F
> +GLIBC_2.4 timer_getoverrun 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 0887259367..78152d8fa3 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -1,6 +1,5 @@
>  GLIBC_2.34 __timer_gettime64 F
>  GLIBC_2.34 __timer_settime64 F
> -GLIBC_2.4 timer_getoverrun F
>  GLIBC_2.4 timer_gettime F
>  GLIBC_2.4 timer_settime 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 b82f6366ee..62590726a8 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2064,6 +2064,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2635,6 +2636,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 3f9dfa7664..3fd1621454 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
> +GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index bb2fd6251f..2b839a784d 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2012,6 +2012,7 @@ GLIBC_2.18 timegm F
>  GLIBC_2.18 timelocal F
>  GLIBC_2.18 timer_create F
>  GLIBC_2.18 timer_delete F
> +GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timerfd_create F
>  GLIBC_2.18 timerfd_gettime F
>  GLIBC_2.18 timerfd_settime F
> @@ -2603,6 +2604,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 2efee3a326..f308a63244 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.18 timer_getoverrun F
>  GLIBC_2.18 timer_gettime F
>  GLIBC_2.18 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 938142fb4a..ac623acbd3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1995,6 +1995,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2600,6 +2601,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 d62382883b..776b30b48a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1993,6 +1993,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2598,6 +2599,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 28a8a5d294..1ffaa8e684 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1991,6 +1991,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2606,6 +2607,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 dbc81ebe4b..af07e28f55 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 6748f9beef..b0c5d0a636 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1987,6 +1987,7 @@ GLIBC_2.2 tcgetsid F
>  GLIBC_2.2 tdestroy F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 tmpfile F
>  GLIBC_2.2 tmpfile64 F
>  GLIBC_2.2 truncate64 F
> @@ -2521,6 +2522,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 00fd77bbab..a92565949e 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 03d13e5ee1..77778d11f3 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2054,6 +2054,7 @@ GLIBC_2.21 timegm F
>  GLIBC_2.21 timelocal F
>  GLIBC_2.21 timer_create F
>  GLIBC_2.21 timer_delete F
> +GLIBC_2.21 timer_getoverrun F
>  GLIBC_2.21 timerfd_create F
>  GLIBC_2.21 timerfd_gettime F
>  GLIBC_2.21 timerfd_settime F
> @@ -2645,6 +2646,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 a83ae32d03..8ab5ece2b0 100644
> --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
> @@ -1,4 +1,3 @@
> -GLIBC_2.21 timer_getoverrun F
>  GLIBC_2.21 timer_gettime F
>  GLIBC_2.21 timer_settime F
>  GLIBC_2.34 __timer_gettime64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index c9a45ecb17..5562012575 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2069,6 +2069,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2662,6 +2663,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 c7fbc347a1..f0adf7b58b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2073,6 +2073,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2695,6 +2696,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 4eb22c11ac..a69927d41d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
> @@ -29,7 +29,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      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 fb5eb9c67e..e74ecec60f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -1888,6 +1888,7 @@ GLIBC_2.3 timegm F
>  GLIBC_2.3 timelocal F
>  GLIBC_2.3 timer_create F
>  GLIBC_2.3 timer_delete F
> +GLIBC_2.3 timer_getoverrun F
>  GLIBC_2.3 times F
>  GLIBC_2.3 timezone D 0x8
>  GLIBC_2.3 tmpfile F
> @@ -2166,6 +2167,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2431,6 +2433,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 914203b043..dd8b2ad6ef 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.3 timer_getoverrun F
>  GLIBC_2.3 timer_gettime F
>  GLIBC_2.3 timer_settime 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 __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 b89256aba0..2a0c06b881 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2096,6 +2096,7 @@ GLIBC_2.17 timegm F
>  GLIBC_2.17 timelocal F
>  GLIBC_2.17 timer_create F
>  GLIBC_2.17 timer_delete F
> +GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timerfd_create F
>  GLIBC_2.17 timerfd_gettime F
>  GLIBC_2.17 timerfd_settime F
> @@ -2729,6 +2730,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 34768d1472..493768f440 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.17 timer_getoverrun F
>  GLIBC_2.17 timer_gettime F
>  GLIBC_2.17 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index c653f52373..3e0e33bbb3 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -1952,6 +1952,7 @@ GLIBC_2.33 timegm F
>  GLIBC_2.33 timelocal F
>  GLIBC_2.33 timer_create F
>  GLIBC_2.33 timer_delete F
> +GLIBC_2.33 timer_getoverrun F
>  GLIBC_2.33 timerfd_create F
>  GLIBC_2.33 timerfd_gettime F
>  GLIBC_2.33 timerfd_settime F
> @@ -2294,6 +2295,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 09bbee0960..de338094e1 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.33 timer_getoverrun F
>  GLIBC_2.33 timer_gettime F
>  GLIBC_2.33 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 711484eee5..1092e5a170 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2018,6 +2018,7 @@ GLIBC_2.27 timegm F
>  GLIBC_2.27 timelocal F
>  GLIBC_2.27 timer_create F
>  GLIBC_2.27 timer_delete F
> +GLIBC_2.27 timer_getoverrun F
>  GLIBC_2.27 timerfd_create F
>  GLIBC_2.27 timerfd_gettime F
>  GLIBC_2.27 timerfd_settime F
> @@ -2494,6 +2495,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 8e1d8b21fe..624ab969d8 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.27 timer_getoverrun F
>  GLIBC_2.27 timer_gettime F
>  GLIBC_2.27 timer_settime F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 4040312275..710cafe7c0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2067,6 +2067,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 versionsort64 F
>  GLIBC_2.2 vfwprintf F
> @@ -2660,6 +2661,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 5989ac75a9..e7f968fcdf 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
> @@ -9,7 +9,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      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 4cf6a5ea09..6b2c7e7d68 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -1763,6 +1763,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2212,6 +2213,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2468,6 +2470,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 34e8d31133..35dc39d27d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c b/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index 6fd93a5445..51a493aadb 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2515,6 +2516,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __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 c5c41bf0e6..cb37ba55cb 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -1750,6 +1750,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x4
>  GLIBC_2.2 tmpfile F
> @@ -2512,6 +2513,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 1268c7fc38..f04b1e7978 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3.4 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 132470d40b..05b4e88794 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2062,6 +2062,7 @@ GLIBC_2.2 swprintf F
>  GLIBC_2.2 swscanf F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 ungetwc F
>  GLIBC_2.2 vfwprintf F
>  GLIBC_2.2 vfwscanf F
> @@ -2655,6 +2656,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 d8ff3b0988..0de56c2c15 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
> @@ -1,5 +1,4 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> index 358081399a..d04738fafc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
> @@ -14,7 +14,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 6ee552611b..72591794e8 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -1793,6 +1793,7 @@ GLIBC_2.2 timegm F
>  GLIBC_2.2 timelocal F
>  GLIBC_2.2 timer_create F
>  GLIBC_2.2 timer_delete F
> +GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 times F
>  GLIBC_2.2 timezone D 0x8
>  GLIBC_2.2 tmpfile F
> @@ -2246,6 +2247,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2490,6 +2492,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 3b744cf5a1..34d42d122b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
> @@ -1,9 +1,7 @@
>  GLIBC_2.1 __librt_version_placeholder F
> -GLIBC_2.2 timer_getoverrun F
>  GLIBC_2.2 timer_gettime F
>  GLIBC_2.2 timer_settime F
>  GLIBC_2.3 __librt_version_placeholder 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
> deleted file mode 100644
> index 22eaff5cda..0000000000
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include <sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c>

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_getoverr.c b/sysdeps/unix/sysv/linux/timer_getoverr.c
> index b997290768..accec3757d 100644
> --- a/sysdeps/unix/sysv/linux/timer_getoverr.c
> +++ b/sysdeps/unix/sysv/linux/timer_getoverr.c
> @@ -20,17 +20,33 @@
>  #include <time.h>
>  #include <sysdep.h>
>  #include <kernel-posix-timers.h>
> -
> -
> -#ifdef timer_getoverrun_alias
> -# define timer_getoverrun timer_getoverrun_alias
> -#endif
> -
> +#include <shlib-compat.h>
>  
>  int
> -timer_getoverrun (timer_t timerid)
> +___timer_getoverrun (timer_t timerid)
>  {
> -#undef timer_getoverrun
>    kernel_timer_t ktimerid = timerid_to_kernel_timer (timerid);
>    return INLINE_SYSCALL_CALL (timer_getoverrun, ktimerid);
>  }
> +versioned_symbol (libc, ___timer_getoverrun, timer_getoverrun, GLIBC_2_34);
> +libc_hidden_ver (___timer_getoverrun, __timer_getoverrun)
> +
> +#if TIMER_T_WAS_INT_COMPAT
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_3, GLIBC_2_34)
> +compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, GLIBC_2_3_3);
> +# endif
> +
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> +int
> +__timer_getoverrun_old (int timerid)
> +{
> +  return __timer_getoverrun (__timer_compat_list[timerid]);
> +}
> +compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, GLIBC_2_2);
> +# endif /* OTHER_SHLIB_COMPAT */
> +
> +#else /* !TIMER_T_WAS_INT_COMPAT */
> +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (librt, ___timer_getoverrun, timer_getoverrun, 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 377d35a04f..92f4369765 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1762,6 +1762,7 @@ GLIBC_2.2.5 timegm F
>  GLIBC_2.2.5 timelocal F
>  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 times F
>  GLIBC_2.2.5 timezone D 0x8
>  GLIBC_2.2.5 tmpfile F
> @@ -2200,6 +2201,7 @@ GLIBC_2.3.3 sys_sigabbrev D 0x208
>  GLIBC_2.3.3 sys_siglist D 0x208
>  GLIBC_2.3.3 timer_create F
>  GLIBC_2.3.3 timer_delete F
> +GLIBC_2.3.3 timer_getoverrun F
>  GLIBC_2.3.4 __chk_fail F
>  GLIBC_2.3.4 __fprintf_chk F
>  GLIBC_2.3.4 __gets_chk F
> @@ -2446,6 +2448,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 13a2bf2022..379fa6930c 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist
> @@ -1,7 +1,5 @@
> -GLIBC_2.2.5 timer_getoverrun F
>  GLIBC_2.2.5 timer_gettime F
>  GLIBC_2.2.5 timer_settime 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 __librt_version_placeholder F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions
> index c4d1c5fb79..a97b6c7413 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/Versions
> +++ b/sysdeps/unix/sysv/linux/x86_64/Versions
> @@ -11,7 +11,7 @@ libc {
>  librt {
>    GLIBC_2.3.3 {
>      # Changed timer_t.
> -    timer_getoverrun; timer_gettime;
> +    timer_gettime;
>      timer_settime;
>    }
>  }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c b/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> deleted file mode 100644
> index fb6e631a00..0000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c
> +++ /dev/null
> @@ -1,38 +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 "compat-timer.h"
> -
> -
> -#define timer_getoverrun_alias __timer_getoverrun_new
> -#include <sysdeps/unix/sysv/linux/timer_getoverr.c>
> -
> -#undef timer_getoverrun
> -versioned_symbol (librt, __timer_getoverrun_new, timer_getoverrun,
> -		  GLIBC_2_3_3);
> -
> -
> -#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -int
> -__timer_getoverrun_old (int timerid)
> -{
> -  return __timer_getoverrun_new (__timer_compat_list[timerid]);
> -}
> -compat_symbol (librt, __timer_getoverrun_old, timer_getoverrun, 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 620f35836c..25b177fda0 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2013,6 +2013,7 @@ GLIBC_2.16 timegm F
>  GLIBC_2.16 timelocal F
>  GLIBC_2.16 timer_create F
>  GLIBC_2.16 timer_delete F
> +GLIBC_2.16 timer_getoverrun F
>  GLIBC_2.16 timerfd_create F
>  GLIBC_2.16 timerfd_gettime F
>  GLIBC_2.16 timerfd_settime F
> @@ -2548,6 +2549,7 @@ GLIBC_2.34 thrd_exit F
>  GLIBC_2.34 thrd_join F
>  GLIBC_2.34 timer_create F
>  GLIBC_2.34 timer_delete F
> +GLIBC_2.34 timer_getoverrun 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 4b3e816fdd..0b969910ba 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist
> @@ -1,3 +1,2 @@
> -GLIBC_2.16 timer_getoverrun F
>  GLIBC_2.16 timer_gettime F
>  GLIBC_2.16 timer_settime F
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 from librt to libc
  2021-06-17 18:59 ` [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 " Florian Weimer
@ 2021-06-24 17:42   ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:42 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



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.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 34/34] Linux: Cleanups after librt move
  2021-06-17 19:00 ` [PATCH 34/34] Linux: Cleanups after librt move Florian Weimer
@ 2021-06-24 17:45   ` Adhemerval Zanella
  2021-06-25  8:53     ` Florian Weimer
  0 siblings, 1 reply; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:45 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 17/06/2021 16:00, Florian Weimer via Libc-alpha wrote:
> librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
> are not linked against it.
> 
> GLIBC_PRIVATE symbols that were needed during the transition are
> removed again.

There are some more leftover I recently added to add timers on time64
tests:

  ifeq (yes,$(build-shared))
  librt = $(common-objpfx)rt/librt.so
  else
  librt = $(common-objpfx)rt/librt.a
  endif

The patch looks ok, but you might want to update it against master.

> ---
>  elf/Makefile                                  |  4 +-
>  nptl/Makefile                                 |  9 ----
>  rt/Makefile                                   | 13 ++++--
>  rt/Versions                                   | 13 ------
>  rt/aio_misc.c                                 | 14 ------
>  rt/aio_notify.c                               |  8 ----
>  rt/aio_sigqueue.c                             |  1 -
>  sysdeps/generic/aio_misc.h                    | 43 ++++++-------------
>  sysdeps/pthread/Makefile                      |  2 +
>  sysdeps/unix/sysv/linux/Versions              |  6 ---
>  sysdeps/unix/sysv/linux/aio_sigqueue.c        |  1 -
>  sysdeps/unix/sysv/linux/kernel-posix-timers.h | 19 +++-----
>  sysdeps/unix/sysv/linux/timer_create.c        |  3 +-
>  sysdeps/unix/sysv/linux/timer_routines.c      | 10 +----
>  14 files changed, 37 insertions(+), 109 deletions(-)
> 
> diff --git a/elf/Makefile b/elf/Makefile
> index 38d08e03b8..f9dac8dcc9 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -1179,7 +1179,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
>  				  libc.so \
>  				  elf/ld.so \
>  				  math/libm.so \
> -				  rt/librt.so \
>  				  dlfcn/libdl.so \
>  				  resolv/libresolv.so \
>  		       )
> @@ -1192,6 +1191,9 @@ endif
>  ifeq ($(build-crypt),yes)
>  localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
>  endif
> +ifneq ($(pthread-in-libc),yes)
> +localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
> +endif
>  
>  vpath localplt.data $(+sysdep_dirs)
>  

Ok.

> diff --git a/nptl/Makefile b/nptl/Makefile
> index bbaf796771..17a4b63730 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -536,15 +536,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
>  	$(evaluate-test)
>  endif
>  
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
> -
> -$(objpfx)tst-cancel17: $(librt)
> -$(objpfx)tst-cancelx17: $(librt)
> -
>  LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
>  LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
>  

Ok.

> diff --git a/rt/Makefile b/rt/Makefile
> index c1e989ede8..8945fbf94d 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -28,9 +28,7 @@ routines = \
>    shm_open \
>    shm_unlink \
>  
> -librt-routines = \
> -  librt-compat \
> -
> +librt-routines = librt-compat
>  librt-shared-only-routines = librt-compat
>  
>  $(librt-routines-var) += \
> @@ -64,6 +62,13 @@ $(librt-routines-var) += \
>    timer_gettime \
>    timer_settime \
>  
> +ifeq ($(pthread-in-libc),yes)
> +# Pretend that libdl.so is a linker script, so that the symbolic
> +# link is not installed.
> +install-lib-ldscripts = librt.so
> +$(inst_libdir)/librt.so:
> +endif
> +
>  tests := tst-shm tst-timer tst-timer2 \
>  	 tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
>  	 tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
> @@ -96,6 +101,7 @@ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
>  
>  $(objpfx)librt.so: $(shared-thread-library)
>  
> +ifneq ($(pthread-in-libc),yes)
>  ifeq (yes,$(build-shared))
>  $(addprefix $(objpfx),$(tests) $(tests-internal)): \
>  	$(objpfx)librt.so $(shared-thread-library)
> @@ -103,5 +109,6 @@ else
>  $(addprefix $(objpfx),$(tests)) $(tests-internal): \
>  	$(objpfx)librt.a $(static-thread-library)
>  endif
> +endif # !$(pthread-in-libc)
>  
>  tst-mqueue7-ARGS = -- $(host-test-program-cmd)


Ok.

> diff --git a/rt/Versions b/rt/Versions
> index 7e41beae06..a3dc72cff4 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -95,19 +95,6 @@ libc {
>      shm_open;
>      shm_unlink;
>    }
> -%if PTHREAD_IN_LIBC
> -  GLIBC_PRIVATE {
> -    __aio_enqueue_request;
> -    __aio_find_req;
> -    __aio_find_req_fd;
> -    __aio_free_request;
> -    __aio_notify;
> -    __aio_notify_only;
> -    __aio_remove_request;
> -    __aio_requests_mutex;
> -    __aio_sigqueue;
> -  }
> -%endif
>  }
>  librt {
>    GLIBC_2.1 {

Ok.

> diff --git a/rt/aio_misc.c b/rt/aio_misc.c
> index d9be8ac33d..856a1b2755 100644
> --- a/rt/aio_misc.c
> +++ b/rt/aio_misc.c
> @@ -735,24 +735,10 @@ add_request_to_runlist (struct requestlist *newrequest)
>  }
>  
>  #if PTHREAD_IN_LIBC
> -libc_hidden_data_def (__aio_requests_mutex)
> -libc_hidden_def (__aio_enqueue_request)
> -libc_hidden_def (__aio_find_req)
> -libc_hidden_def (__aio_find_req_fd)
> -libc_hidden_def (__aio_free_request)
> -libc_hidden_def (__aio_remove_request)
> -
>  versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
>  # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
>  compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
>  # endif
> -
>  #else /* !PTHREAD_IN_LIBC */
> -librt_hidden_data_def (__aio_requests_mutex)
> -librt_hidden_def (__aio_enqueue_request)
> -librt_hidden_def (__aio_find_req)
> -librt_hidden_def (__aio_find_req_fd)
> -librt_hidden_def (__aio_free_request)
> -librt_hidden_def (__aio_remove_request)
>  weak_alias (__aio_init, aio_init)
>  #endif /* !PTHREAD_IN_LIBC */

Ok.

> diff --git a/rt/aio_notify.c b/rt/aio_notify.c
> index 432000e34b..0fa84f203c 100644
> --- a/rt/aio_notify.c
> +++ b/rt/aio_notify.c
> @@ -160,11 +160,3 @@ __aio_notify (struct requestlist *req)
>        waitlist = next;
>      }
>  }
> -
> -#if PTHREAD_IN_LIBC
> -libc_hidden_def (__aio_notify)
> -libc_hidden_def (__aio_notify_only)
> -#else
> -librt_hidden_def (__aio_notify)
> -librt_hidden_def (__aio_notify_only)
> -#endif

Ok.

> diff --git a/rt/aio_sigqueue.c b/rt/aio_sigqueue.c
> index 0ad95ae04c..84848bacd8 100644
> --- a/rt/aio_sigqueue.c
> +++ b/rt/aio_sigqueue.c
> @@ -28,5 +28,4 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>    __set_errno (ENOSYS);
>    return -1;
>  }
> -librt_hidden_def (__aio_sigqueue)
>  stub_warning (__aio_sigqueue)

Ok.

> diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
> index d9bff36e50..4d05b8cdd6 100644
> --- a/sysdeps/generic/aio_misc.h
> +++ b/sysdeps/generic/aio_misc.h
> @@ -87,55 +87,36 @@ struct requestlist
>  
>  
>  /* Lock for global I/O list of requests.  */
> -extern pthread_mutex_t __aio_requests_mutex;
> +extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
>  
>  
>  /* Enqueue request.  */
>  extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
> -						  int operation);
> +						  int operation)
> +  attribute_hidden;
>  
>  /* Find request entry for given AIO control block.  */
> -extern struct requestlist *__aio_find_req (aiocb_union *elem);
> +extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
>  
>  /* Find request entry for given file descriptor.  */
> -extern struct requestlist *__aio_find_req_fd (int fildes);
> +extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
>  
>  /* Remove request from the list.  */
>  extern void __aio_remove_request (struct requestlist *last,
> -				  struct requestlist *req, int all);
> +				  struct requestlist *req, int all)
> +  attribute_hidden;
>  
>  /* Release the entry for the request.  */
> -extern void __aio_free_request (struct requestlist *req);
> +extern void __aio_free_request (struct requestlist *req) attribute_hidden;
>  
>  /* Notify initiator of request and tell this everybody listening.  */
> -extern void __aio_notify (struct requestlist *req);
> +extern void __aio_notify (struct requestlist *req) attribute_hidden;
>  
>  /* Notify initiator of request.  */
> -extern int __aio_notify_only (struct sigevent *sigev);
> +extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
>  
>  /* Send the signal.  */
> -extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
> -
> -#if PTHREAD_IN_LIBC
> -libc_hidden_proto (__aio_enqueue_request)
> -libc_hidden_proto (__aio_find_req)
> -libc_hidden_proto (__aio_find_req_fd)
> -libc_hidden_proto (__aio_free_request)
> -libc_hidden_proto (__aio_notify)
> -libc_hidden_proto (__aio_notify_only)
> -libc_hidden_proto (__aio_remove_request)
> -libc_hidden_proto (__aio_requests_mutex)
> -libc_hidden_proto (__aio_sigqueue)
> -#else
> -librt_hidden_proto (__aio_enqueue_request)
> -librt_hidden_proto (__aio_find_req)
> -librt_hidden_proto (__aio_find_req_fd)
> -librt_hidden_proto (__aio_free_request)
> -librt_hidden_proto (__aio_notify)
> -librt_hidden_proto (__aio_notify_only)
> -librt_hidden_proto (__aio_remove_request)
> -librt_hidden_proto (__aio_requests_mutex)
> -librt_hidden_proto (__aio_sigqueue)
> -#endif
> +extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
> +  attribute_hidden;
>  
>  #endif /* aio_misc.h */

Ok.

> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 9e6ed3c6f7..cca0d4da0d 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -18,11 +18,13 @@
>  
>  ifeq ($(subdir),rt)
>  
> +ifneq ($(pthread-in-libc),yes)
>  ifeq (yes,$(build-shared))
>  $(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
>  else
>  $(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
>  endif
> +endif # !$(pthread-in-libc)
>  
>  endif
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 578d55e7fd..29ed24591d 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -291,12 +291,6 @@ libc {
>      __pread64_nocancel;
>      __close_nocancel;
>      __sigtimedwait;
> -    __timer_active_sigev_thread;
> -    __timer_active_sigev_thread_lock;
> -    __timer_compat_list;
> -    __timer_helper_once;
> -    __timer_helper_tid;
> -    __timer_start_helper_thread;
>      # functions used by nscd
>      __netlink_assert_response;
>    }

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> index bd0da6e763..0b0f347197 100644
> --- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
> +++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> @@ -44,4 +44,3 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>  
>    return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
>  }
> -libc_hidden_def (__aio_sigqueue)
> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index a976b028e0..0f7eff1794 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -26,27 +26,23 @@
>  extern int __no_posix_timers attribute_hidden;
>  
>  /* Callback to start helper thread.  */
> -extern void __timer_start_helper_thread (void);
> -libc_hidden_proto (__timer_start_helper_thread)
> +extern void __timer_start_helper_thread (void) attribute_hidden;
>  
>  /* Control variable for helper thread creation.  */
> -extern pthread_once_t __timer_helper_once;
> -libc_hidden_proto (__timer_helper_once)
> +extern pthread_once_t __timer_helper_once attribute_hidden;
>  
>  /* Called from fork so that the new subprocess re-creates the
>     notification thread if necessary.  */
>  void __timer_fork_subprocess (void) attribute_hidden;
>  
>  /* TID of the helper thread.  */
> -extern pid_t __timer_helper_tid;
> -libc_hidden_proto (__timer_helper_tid)
> +extern pid_t __timer_helper_tid attribute_hidden;
>  
>  /* List of active SIGEV_THREAD timers.  */
> -extern struct timer *__timer_active_sigev_thread;
> -libc_hidden_proto (__timer_active_sigev_thread)
> +extern struct timer *__timer_active_sigev_thread attribute_hidden;
> +
>  /* Lock for __timer_active_sigev_thread.  */
> -extern pthread_mutex_t __timer_active_sigev_thread_lock;
> -libc_hidden_proto (__timer_active_sigev_thread_lock)
> +extern pthread_mutex_t __timer_active_sigev_thread_lock attribute_hidden;
>  
>  extern __typeof (timer_create) __timer_create;
>  libc_hidden_proto (__timer_create)
> @@ -117,5 +113,4 @@ timerid_to_kernel_timer (timer_t timerid)
>  
>  /* Used if an override sets TIMER_T_WAS_INT_COMPAT to 1.  */
>  #define OLD_TIMER_MAX 256
> -extern timer_t __timer_compat_list[OLD_TIMER_MAX];
> -libc_hidden_proto (__timer_compat_list)
> +extern timer_t __timer_compat_list[OLD_TIMER_MAX] attribute_hidden;

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
> index 9861177cf2..230bc45083 100644
> --- a/sysdeps/unix/sysv/linux/timer_create.c
> +++ b/sysdeps/unix/sysv/linux/timer_create.c
> @@ -146,8 +146,7 @@ compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
>  # endif
>  
>  # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_compat_list)
> +timer_t __timer_compat_list[OLD_TIMER_MAX];
>  
>  int
>  __timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)

Ok.

> diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
> index fc3aa894ab..3a509d8ace 100644
> --- a/sysdeps/unix/sysv/linux/timer_routines.c
> +++ b/sysdeps/unix/sysv/linux/timer_routines.c
> @@ -26,13 +26,10 @@
>  
>  
>  /* List of active SIGEV_THREAD timers.  */
> -struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_active_sigev_thread)
> +struct timer *__timer_active_sigev_thread;
>  
>  /* Lock for _timer_active_sigev_thread.  */
> -pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
> -  = PTHREAD_MUTEX_INITIALIZER;
> -libc_hidden_data_def (__timer_active_sigev_thread_lock)
> +pthread_mutex_t __timer_active_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
>  
>  struct thread_start_data
>  {
> @@ -112,12 +109,10 @@ timer_helper_thread (void *arg)
>  /* Control variable for helper thread creation.  */
>  pthread_once_t __timer_helper_once __attribute__ ((nocommon))
>    = PTHREAD_ONCE_INIT;
> -libc_hidden_data_def (__timer_helper_once)
>  
>  
>  /* TID of the helper thread.  */
>  pid_t __timer_helper_tid __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_helper_tid)
>  
>  
>  /* Reset variables so that after a fork a new helper thread gets started.  */
> @@ -159,4 +154,3 @@ __timer_start_helper_thread (void)
>    /* No need for the attribute anymore.  */
>    (void) __pthread_attr_destroy (&attr);
>  }
> -libc_hidden_def (__timer_start_helper_thread)
> 

Ok.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH v2 00/34] Move librt into libc
  2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
                   ` (33 preceding siblings ...)
  2021-06-17 19:00 ` [PATCH 34/34] Linux: Cleanups after librt move Florian Weimer
@ 2021-06-24 17:49 ` Adhemerval Zanella
  34 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-24 17:49 UTC (permalink / raw)
  To: libc-alpha, Florian Weimer



On 17/06/2021 15:56, Florian Weimer via Libc-alpha wrote:
> This series contains the adjustments for time64 support.  I had to redo
> the symbol moves with my local version of the symbol moving scripts to
> be sure, but the results look consistent.

Ok, I finished reviewing and it does look good. Only two patches I think it will
need a bit more work:

 1. [29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h [1]

 I think it would be better to move this to its own file, so there is no need to
 include, undef, define on each arch-specific files.


 2. [34/34] Linux: Cleanups after librt move

 I think you will need to update against master, I have added some more librt
 linking to add support to timer on some 64-bit time_t tests.


[1] https://patchwork.sourceware.org/project/glibc/patch/2f9bd5a3dabea786c943c4a000ac6a1022685e84.1623956058.git.fweimer@redhat.com/
[2] https://patchwork.sourceware.org/project/glibc/patch/df24df16f8483370f9310303f3c54acf010d585.1623956058.git.fweimer@redhat.com/

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 34/34] Linux: Cleanups after librt move
  2021-06-24 17:45   ` Adhemerval Zanella
@ 2021-06-25  8:53     ` Florian Weimer
  0 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-25  8:53 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

> On 17/06/2021 16:00, Florian Weimer via Libc-alpha wrote:
>> librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
>> are not linked against it.
>> 
>> GLIBC_PRIVATE symbols that were needed during the transition are
>> removed again.
>
> There are some more leftover I recently added to add timers on time64
> tests:
>
>   ifeq (yes,$(build-shared))
>   librt = $(common-objpfx)rt/librt.so
>   else
>   librt = $(common-objpfx)rt/librt.a
>   endif
>
> The patch looks ok, but you might want to update it against master.

Okay, given that those are in generic code, we need to bring back
$(librt).

Thanks,
Florian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 14/34] Linux: Move aio_read, aio_read64 into libc
  2021-06-23 17:51   ` Adhemerval Zanella
@ 2021-06-25  9:53     ` Florian Weimer
  2021-06-25 12:36       ` Adhemerval Zanella
  0 siblings, 1 reply; 72+ messages in thread
From: Florian Weimer @ 2021-06-25  9:53 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> diff --git a/rt/Versions b/rt/Versions
>> index 1a0aa77fd0..6db40bebc4 100644
>> --- a/rt/Versions
>> +++ b/rt/Versions
>> @@ -8,6 +8,8 @@ libc {
>>      aio_error64;
>>      aio_fsync;
>>      aio_fsync64;
>> +    aio_read;
>> +    aio_read64;
>>  %endif
>>    }
>>    GLIBC_2.2 {
>> @@ -23,6 +25,8 @@ libc {
>>      aio_error64;
>>      aio_fsync;
>>      aio_fsync64;
>> +    aio_read;
>> +    aio_read64;
>>  %endif
>>      shm_open;
>>      shm_unlink;
>> @@ -51,9 +55,9 @@ librt {
>>      aio_fsync;
>>      aio_fsync64;
>>      aio_init;
>> -%endif
>>      aio_read;
>>      aio_read64;
>> +%endif
>>      aio_return;
>>      aio_return64;
>>      aio_suspend;
> __WORDSIZE

>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>> index f4dd36f97b..2afa483191 100644
>> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>> @@ -1,5 +1,3 @@
>> -GLIBC_2.1 aio_read F
>> -GLIBC_2.1 aio_read64 F
>>  GLIBC_2.1 aio_return F
>>  GLIBC_2.1 aio_return64 F
>>  GLIBC_2.1 aio_suspend F
>
> __WORDSIZE

Sorry, what do you mean by these two comments?

Thanks,
Florian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 21/34] Linux: Move mq_setattr from librt to libc
  2021-06-24 14:02   ` Adhemerval Zanella
@ 2021-06-25 10:02     ` Florian Weimer
  0 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-25 10:02 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> +int
>> +__mq_setattr (mqd_t mqdes, const struct mq_attr *__restrict mqstat,
>> +              struct mq_attr *__restrict omqstat)
>
> I think there is no need to use reserved identifiers here, so we can
> use 'restrict' directly.

It's meaningless anyway given the function body, so I have removed it.

>> +{
>> +  return INLINE_SYSCALL_CALL (mq_getsetattr, mqdes, mqstat, omqstat);
>> +}

Thanks,
Flroian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 23/34] Linux: Move mq_notify from librt to libc
  2021-06-24 14:05   ` Adhemerval Zanella
@ 2021-06-25 11:37     ` Florian Weimer
  0 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-25 11:37 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>>    /* The parent thread has all signals blocked.  This is probably a
>>       bit surprising for this thread.  So we unblock all of them.  */
>> @@ -125,8 +125,8 @@ helper_thread (void *arg)
>>  	  /* Just create the thread as instructed.  There is no way to
>>  	     report a problem with creating a thread.  */
>>  	  pthread_t th;
>> -	  if (__builtin_expect (pthread_create (&th, data.attr,
>> -						notification_function, &data)
>> +	  if (__builtin_expect (__pthread_create (&th, data.attr,
>> +						  notification_function, &data)
>>  				== 0, 0))
>>  	    /* Since we passed a pointer to DATA to the new thread we have
>>  	       to wait until it is done with it.  */
>
> Use __glibc_likely.

The old code is equivalent to __glibc_unlikely, though.  I'm just going
to remove it.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 28/34] Linux: Move timer helper routines from librt to libc
  2021-06-24 14:41   ` Adhemerval Zanella
@ 2021-06-25 11:38     ` Florian Weimer
  0 siblings, 0 replies; 72+ messages in thread
From: Florian Weimer @ 2021-06-25 11:38 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

>> +/* Lock for _timer_active_sigev_thread.  */
>> +pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
>> +  = PTHREAD_MUTEX_INITIALIZER;
>> +libc_hidden_data_def (__timer_active_sigev_thread_lock)
>>  
>>  struct thread_start_data
>>  {
>
> Ok.  I think we should either use a macro initializer for global without
> an initialization or add a attribute macro on cdef.h for 
> __attribute__ ((nocommon).

My plan is to submit a patch to build with -fno-common by default, then
all this won't be necessary.  -fno-common has been supported by GCC for
a long time, it just hasn't been the default.  But all of glibc can now
build with -fcommon.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: [PATCH 14/34] Linux: Move aio_read, aio_read64 into libc
  2021-06-25  9:53     ` Florian Weimer
@ 2021-06-25 12:36       ` Adhemerval Zanella
  0 siblings, 0 replies; 72+ messages in thread
From: Adhemerval Zanella @ 2021-06-25 12:36 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha



On 25/06/2021 06:53, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>>> diff --git a/rt/Versions b/rt/Versions
>>> index 1a0aa77fd0..6db40bebc4 100644
>>> --- a/rt/Versions
>>> +++ b/rt/Versions
>>> @@ -8,6 +8,8 @@ libc {
>>>      aio_error64;
>>>      aio_fsync;
>>>      aio_fsync64;
>>> +    aio_read;
>>> +    aio_read64;
>>>  %endif
>>>    }
>>>    GLIBC_2.2 {
>>> @@ -23,6 +25,8 @@ libc {
>>>      aio_error64;
>>>      aio_fsync;
>>>      aio_fsync64;
>>> +    aio_read;
>>> +    aio_read64;
>>>  %endif
>>>      shm_open;
>>>      shm_unlink;
>>> @@ -51,9 +55,9 @@ librt {
>>>      aio_fsync;
>>>      aio_fsync64;
>>>      aio_init;
>>> -%endif
>>>      aio_read;
>>>      aio_read64;
>>> +%endif
>>>      aio_return;
>>>      aio_return64;
>>>      aio_suspend;
>> __WORDSIZE
> 
>>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>>> index f4dd36f97b..2afa483191 100644
>>> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist
>>> @@ -1,5 +1,3 @@
>>> -GLIBC_2.1 aio_read F
>>> -GLIBC_2.1 aio_read64 F
>>>  GLIBC_2.1 aio_return F
>>>  GLIBC_2.1 aio_return64 F
>>>  GLIBC_2.1 aio_suspend F
>>
>> __WORDSIZE
> 

My mistake here, it should be 'Ok'.

^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2021-06-25 12:36 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 18:56 [PATCH v2 00/34] Move librt into libc Florian Weimer
2021-06-17 18:56 ` [PATCH 01/34] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
2021-06-17 18:56 ` [PATCH 02/34] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
2021-06-17 18:56 ` [PATCH 03/34] rt: Replace generic stub of shm_open with the posix version Florian Weimer
2021-06-17 18:57 ` [PATCH 04/34] rt: Replace generic stub of shm_unlink " Florian Weimer
2021-06-17 18:57 ` [PATCH 05/34] rt: Move shm_open into libc Florian Weimer
2021-06-17 18:57 ` [PATCH 06/34] rt: Move shm_unlink " Florian Weimer
2021-06-17 18:57 ` [PATCH 07/34] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
2021-06-21 18:37   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 08/34] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
2021-06-22  0:57   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 09/34] Add hidden prototypes for fsync, fdatasync Florian Weimer
2021-06-22  0:58   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 10/34] Linux: Move aio_init from librt into libc Florian Weimer
2021-06-23 13:22   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 11/34] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
2021-06-23 17:26   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 12/34] Linux: Move aio_error, aio_error64 " Florian Weimer
2021-06-23 17:43   ` Adhemerval Zanella
2021-06-17 18:57 ` [PATCH 13/34] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
2021-06-23 17:46   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 14/34] Linux: Move aio_read, aio_read64 " Florian Weimer
2021-06-23 17:51   ` Adhemerval Zanella
2021-06-25  9:53     ` Florian Weimer
2021-06-25 12:36       ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 15/34] Linux: Move aio_return, aio_return64 " Florian Weimer
2021-06-23 19:44   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 16/34] Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc Florian Weimer
2021-06-23 19:52   ` Adhemerval Zanella
2021-06-23 19:59     ` Florian Weimer
2021-06-17 18:58 ` [PATCH 17/34] Linux: Move aio_write, aio_write64 into libc Florian Weimer
2021-06-23 20:02   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 18/34] rt: Rework lio_listio implementation Florian Weimer
2021-06-23 20:10   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 19/34] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
2021-06-23 20:12   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 20/34] Linux: Move mq_close " Florian Weimer
2021-06-24 14:00   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 21/34] Linux: Move mq_setattr " Florian Weimer
2021-06-24 14:02   ` Adhemerval Zanella
2021-06-25 10:02     ` Florian Weimer
2021-06-17 18:58 ` [PATCH 22/34] Linux: Move mq_getattr " Florian Weimer
2021-06-24 14:02   ` Adhemerval Zanella
2021-06-17 18:58 ` [PATCH 23/34] Linux: Move mq_notify " Florian Weimer
2021-06-24 14:05   ` Adhemerval Zanella
2021-06-25 11:37     ` Florian Weimer
2021-06-17 18:59 ` [PATCH 24/34] Linux: Move mq_open, __mq_open_2 " Florian Weimer
2021-06-24 14:07   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 25/34] Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 " Florian Weimer
2021-06-24 14:14   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 26/34] Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 " Florian Weimer
2021-06-24 14:22   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 27/34] Linux: Move mq_unlink from librt " Florian Weimer
2021-06-24 14:31   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 28/34] Linux: Move timer helper routines " Florian Weimer
2021-06-24 14:41   ` Adhemerval Zanella
2021-06-25 11:38     ` Florian Weimer
2021-06-17 18:59 ` [PATCH 29/34] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
2021-06-24 16:21   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 30/34] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
2021-06-24 17:18   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 31/34] Linux: Move timer_getoverrun " Florian Weimer
2021-06-24 17:26   ` Adhemerval Zanella
2021-06-24 17:38   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 32/34] Linux: Move timer_gettime, __timer_gettime64 " Florian Weimer
2021-06-24 17:36   ` Adhemerval Zanella
2021-06-17 18:59 ` [PATCH 33/34] Linux: Move timer_settime, __timer_settime64 " Florian Weimer
2021-06-24 17:42   ` Adhemerval Zanella
2021-06-17 19:00 ` [PATCH 34/34] Linux: Cleanups after librt move Florian Weimer
2021-06-24 17:45   ` Adhemerval Zanella
2021-06-25  8:53     ` Florian Weimer
2021-06-24 17:49 ` [PATCH v2 00/34] Move librt into libc Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).