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

This series moves librt into libc.

Two functions, shm_open and shm_unlink, are also moved on Hurd.  The
rest is Linux only.

There is some odd stuff going on with 64-bit off_t ABIs with the aio_*
functions.  I tried to make things a little bit more consistent.

mq_notify and timer_create can be simplfied a bit because the fork
handler can be called directly.

For timer_create MIPS N64 is an outlier, so I had to introduce
TIMER_T_WAS_INT_COMPAT to flag those 64-bit architectures that underwent
the int → timer_t transition.

Tested on i686-linux-gnu and x86_64-linux-gnu.  Built with
build-many-glibcs.py.

Thanks,
Florian

Florian Weimer (35):
  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
  nptl: Add internal macro definition of pthread_self
  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 from librt 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 from librt to libc
  Linux: Move mq_send, mq_timedsend from librt 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 from librt to libc
  Linux: Move timer_settime 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/pthread_self.c                           |   2 +-
 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             |   8 +-
 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              |  16 +
 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   |  70 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  37 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  70 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  37 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  70 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  36 +-
 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     |  72 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |  42 +-
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  72 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist    |  42 +-
 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     |  70 ++
 .../sysv/linux/m68k/coldfire/librt.abilist    |  37 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  72 ++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  42 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  70 ++
 .../sysv/linux/microblaze/be/librt.abilist    |  36 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  70 ++
 .../sysv/linux/microblaze/le/librt.abilist    |  36 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  72 ++
 .../unix/sysv/linux/mips/mips32/librt.abilist |  41 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  72 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  41 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  72 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  72 ++
 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     |  36 +-
 sysdeps/unix/sysv/linux/mq_timedsend.c        |  36 +-
 sysdeps/unix/sysv/linux/mq_unlink.c           |   7 +-
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  70 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  36 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  72 ++
 .../linux/powerpc/powerpc32/librt.abilist     |  42 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  72 ++
 .../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 |  72 ++
 .../sysv/linux/s390/s390-32/librt.abilist     |  42 +-
 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    |  72 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |  42 +-
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  72 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |  42 +-
 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     |  74 ++
 .../sysv/linux/sparc/sparc32/librt.abilist    |  45 +-
 .../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       |  62 +-
 sysdeps/unix/sysv/linux/timer_routines.c      |  57 +-
 sysdeps/unix/sysv/linux/timer_settime.c       |  72 +-
 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, 5461 insertions(+), 4081 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] 45+ messages in thread

* [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
@ 2021-06-03 23:14 ` Florian Weimer
  2021-06-17 11:05   ` Adhemerval Zanella
  2021-06-03 23:14 ` [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
                   ` (34 subsequent siblings)
  35 siblings, 1 reply; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:14 UTC (permalink / raw)
  To: libc-alpha

---
 rt/Makefile | 46 ++++++++++++++++++++++++++++++++--------------
 rt/Versions | 45 +++++++++++++++++++++++++++++++++------------
 2 files changed, 65 insertions(+), 26 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 97c9bbd9de..d19314b7dc 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] 45+ messages in thread

* [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
  2021-06-03 23:14 ` [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
@ 2021-06-03 23:14 ` Florian Weimer
  2021-06-17 11:07   ` Adhemerval Zanella
  2021-06-03 23:15 ` [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version Florian Weimer
                   ` (33 subsequent siblings)
  35 siblings, 1 reply; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:14 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.
---
 Makeconfig  | 2 +-
 rt/Makefile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makeconfig b/Makeconfig
index c3496452b6..6a334fa296 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1330,7 +1330,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 d19314b7dc..baec51b40a 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] 45+ messages in thread

* [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
  2021-06-03 23:14 ` [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
  2021-06-03 23:14 ` [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-17 11:08   ` Adhemerval Zanella
  2021-06-03 23:15 ` [PATCH 04/35] rt: Replace generic stub of shm_unlink " Florian Weimer
                   ` (32 subsequent siblings)
  35 siblings, 1 reply; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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.
---
 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] 45+ messages in thread

* [PATCH 04/35] rt: Replace generic stub of shm_unlink with the posix version
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (2 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-17 11:08   ` Adhemerval Zanella
  2021-06-03 23:15 ` [PATCH 05/35] rt: Move shm_open into libc Florian Weimer
                   ` (31 subsequent siblings)
  35 siblings, 1 reply; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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.
---
 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] 45+ messages in thread

* [PATCH 05/35] rt: Move shm_open into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (3 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 04/35] rt: Replace generic stub of shm_unlink " Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-17 11:12   ` Adhemerval Zanella
  2021-06-17 12:25   ` Adhemerval Zanella
  2021-06-03 23:15 ` [PATCH 06/35] rt: Move shm_unlink " Florian Weimer
                   ` (30 subsequent siblings)
  35 siblings, 2 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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.
---
 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist   |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist     |  2 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist     |  2 ++
 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 -
 66 files changed, 86 insertions(+), 40 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index baec51b40a..0628ae8aa8 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 bee807a6f8..11a93b4f47 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
@@ -2463,6 +2464,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 43dd600039..622f5ecdb1 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
@@ -2556,6 +2557,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 033ed08877..0c7b210b97 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
@@ -2222,6 +2223,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 f66ee7aab1..855501dd12 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -319,6 +319,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
@@ -2023,6 +2024,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 3c0647b251..fc89b71b2b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -25,7 +25,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 3798b32830..6bdb09d974 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -316,6 +316,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
@@ -2020,6 +2021,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 3c0647b251..fc89b71b2b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -25,7 +25,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 ba53b61ea6..9188a21281 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
@@ -2406,6 +2407,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 c6690ef7c1..31482a39b6 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 9783504c93..038a2b432e 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
@@ -2360,6 +2361,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 bb03781dcc..fc899622c3 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 c223c360ff..113202ad27 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
@@ -2544,6 +2545,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 bb03781dcc..fc899622c3 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 ea2be9ead2..7b2e27901a 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
@@ -2396,6 +2397,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 3cb4279b41..9544632fa0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -320,6 +320,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
@@ -2003,6 +2004,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 3c0647b251..fc89b71b2b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -25,7 +25,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 94a718ff58..0dbccbd651 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
@@ -2487,6 +2488,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 bb03781dcc..fc899622c3 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 5823bf18ef..33c00287a5 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
@@ -2457,6 +2458,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 889dfbc0ee..4fd9af2b2d 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 723c4bcb09..f0a3bd844b 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..4fd9af2b2d 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 f67da8f37a..cfb82eb1b9 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
@@ -2452,6 +2453,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 1539c1cef9..e62ed45d14 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 e44a6be8aa..a00a18a8bb 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
@@ -2450,6 +2451,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 1539c1cef9..e62ed45d14 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 21cbe39166..22f37a4d5e 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
@@ -2458,6 +2459,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index a271342813..5df30910b8 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
@@ -2452,6 +2453,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 9429209215..5448a51818 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
@@ -2496,6 +2497,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 b4ae7a2dc2..77170f30d8 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 eaca8e4b0c..64d8eecd31 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
@@ -2514,6 +2515,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 bb03781dcc..fc899622c3 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 c754a181da..14b5eb792a 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
@@ -2547,6 +2548,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 98bd6bea39..6fc6134b68 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
@@ -2360,6 +2361,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 d27f7448ed..1bfa23792e 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
@@ -2659,6 +2660,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 33c9f98bf5..89d2efa8c3 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
@@ -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/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 9902603cd4..1d5ed0960f 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
@@ -2424,6 +2425,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 963e27571d..4b7c3ddda8 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
@@ -2512,6 +2513,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 bb03781dcc..fc899622c3 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 17c56a2658..da934580c3 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
@@ -2397,6 +2398,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 456abfb5bb..eca39dbda8 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
@@ -2367,6 +2368,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 bb03781dcc..fc899622c3 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 45e59f1821..662e99dec5 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
@@ -2364,6 +2365,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 bb03781dcc..fc899622c3 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 734e1f38b6..749ea6eb02 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
@@ -2505,6 +2506,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 38f0aad791..355a98faa0 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 9edf5ff234..6875623afc 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
@@ -2417,6 +2418,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 bc8535fbed..c79b6c1006 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
@@ -2375,6 +2376,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 669cc664f5..bf02471db3 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
@@ -2478,6 +2479,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] 45+ messages in thread

* [PATCH 06/35] rt: Move shm_unlink into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (4 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 05/35] rt: Move shm_open into libc Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-17 18:00   ` Adhemerval Zanella
  2021-06-03 23:15 ` [PATCH 07/35] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
                   ` (29 subsequent siblings)
  35 siblings, 1 reply; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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.
---
 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/librt.abilist      |  1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
 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 -
 66 files changed, 77 insertions(+), 34 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 0628ae8aa8..e4ef06a6c5 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 11a93b4f47..0561deac68 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
@@ -2465,6 +2466,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 622f5ecdb1..cabce7f1ca 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
@@ -2558,6 +2559,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 0c7b210b97..ba1304fb27 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
@@ -2224,6 +2225,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 855501dd12..7f828e63e5 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -320,6 +320,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
@@ -2025,6 +2026,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 fc89b71b2b..126250a101 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -25,7 +25,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 6bdb09d974..9f732ace57 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -317,6 +317,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
@@ -2022,6 +2023,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 fc89b71b2b..126250a101 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -25,7 +25,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 9188a21281..2894e35611 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
@@ -2408,6 +2409,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 31482a39b6..0eeb9046d1 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 038a2b432e..8f7c22c85c 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
@@ -2362,6 +2363,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 fc899622c3..065f613969 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 113202ad27..b238823ad9 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
@@ -2546,6 +2547,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 fc899622c3..065f613969 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 7b2e27901a..e46802188e 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
@@ -2398,6 +2399,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 9544632fa0..4c7be2d991 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -321,6 +321,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
@@ -2005,6 +2006,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 fc89b71b2b..126250a101 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -25,7 +25,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 0dbccbd651..a3bff03a44 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
@@ -2489,6 +2490,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 fc899622c3..065f613969 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 33c00287a5..967ac92bea 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
@@ -2459,6 +2460,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 4fd9af2b2d..451966eab1 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 f0a3bd844b..b193aa15c7 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 4fd9af2b2d..451966eab1 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 cfb82eb1b9..ef44bc1731 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
@@ -2454,6 +2455,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 e62ed45d14..2c7d661e56 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 a00a18a8bb..c3b28b1a34 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
@@ -2452,6 +2453,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index e62ed45d14..2c7d661e56 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 22f37a4d5e..f47a436839 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
@@ -2460,6 +2461,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 5df30910b8..11f8b90995 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
@@ -2454,6 +2455,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 5448a51818..68d6138627 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
@@ -2498,6 +2499,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 77170f30d8..5865026423 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 64d8eecd31..134bdda2cb 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
@@ -2516,6 +2517,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 fc899622c3..065f613969 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 14b5eb792a..778e34aab2 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
@@ -2549,6 +2550,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 6fc6134b68..083831b889 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
@@ -2362,6 +2363,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 1bfa23792e..0d56d2a9f2 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
@@ -2661,6 +2662,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 89d2efa8c3..a6e7c7c968 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
@@ -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/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 1d5ed0960f..2bbb45524d 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
@@ -2426,6 +2427,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 4b7c3ddda8..a9fd5ae173 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
@@ -2514,6 +2515,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 fc899622c3..065f613969 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 da934580c3..64b72211aa 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
@@ -2399,6 +2400,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 eca39dbda8..38aa765be4 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
@@ -2369,6 +2370,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 fc899622c3..065f613969 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 662e99dec5..d31fe21e3f 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
@@ -2366,6 +2367,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 fc899622c3..065f613969 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 749ea6eb02..84b73842aa 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
@@ -2507,6 +2508,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 355a98faa0..2c5e7950b7 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 6875623afc..4af8b9a1eb 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
@@ -2419,6 +2420,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 c79b6c1006..3c482047f7 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
@@ -2377,6 +2378,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 bf02471db3..302b0d52e2 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
@@ -2480,6 +2481,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] 45+ messages in thread

* [PATCH 07/35] rt: Move generic implementation from sysdeps/pthread to rt
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (5 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 06/35] rt: Move shm_unlink " Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 08/35] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
                   ` (28 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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] 45+ messages in thread

* [PATCH 08/35] nptl: Move pthreadP.h into sysdeps directory
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (6 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 07/35] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 09/35] nptl: Add internal macro definition of pthread_self Florian Weimer
                   ` (27 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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 1f7790297f..76f5b79b96 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 c579c65f78..29e914685b 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 05f2bae521..5c2fd64d58 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] 45+ messages in thread

* [PATCH 09/35] nptl: Add internal macro definition of pthread_self
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (7 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 08/35] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 10/35] Add hidden prototypes for fsync, fdatasync Florian Weimer
                   ` (26 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 UTC (permalink / raw)
  To: libc-alpha

The old __pthread_self hidden prototype did not work because there
was no implementation.  (Hurd uses __pthread_self as a variable,
so it's prudent to avoid this identifier on Linux.)  A macro is needed
so that nptl/pthread_self.c can still be built (static inline would
prevent that) and __extern_inline does not work due to the definition
of THREAD_SELF on hppa.
---
 nptl/pthread_self.c     | 2 +-
 sysdeps/nptl/pthreadP.h | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/nptl/pthread_self.c b/nptl/pthread_self.c
index f877a2e6bd..c0d136be41 100644
--- a/nptl/pthread_self.c
+++ b/nptl/pthread_self.c
@@ -20,7 +20,7 @@
 #include <tls.h>
 
 pthread_t
-pthread_self (void)
+(pthread_self) (void)
 {
   return (pthread_t) THREAD_SELF;
 }
diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
index 5c2fd64d58..f4a5f70f60 100644
--- a/sysdeps/nptl/pthreadP.h
+++ b/sysdeps/nptl/pthreadP.h
@@ -520,7 +520,6 @@ extern int __pthread_once (pthread_once_t *once_control,
 libc_hidden_proto (__pthread_once)
 extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
 			     void (*child) (void));
-extern pthread_t __pthread_self (void);
 extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
 extern int __pthread_detach (pthread_t th);
 libc_hidden_proto (__pthread_detach)
@@ -698,6 +697,10 @@ int __pthread_attr_extension (struct pthread_attr *attr) attribute_hidden
 int __pthread_attr_copy (pthread_attr_t *target, const pthread_attr_t *source);
 libc_hidden_proto (__pthread_attr_copy)
 
+/* This cannot be an inline function because a static inline conflict
+   on hppa.  */
+#define pthread_self() ((pthread_t) THREAD_SELF)
+
 /* Returns 0 if POL is a valid scheduling policy.  */
 static inline int
 check_sched_policy_attr (int pol)
-- 
2.31.1



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

* [PATCH 10/35] Add hidden prototypes for fsync, fdatasync
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (8 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 09/35] nptl: Add internal macro definition of pthread_self Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 11/35] Linux: Move aio_init from librt into libc Florian Weimer
                   ` (25 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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] 45+ messages in thread

* [PATCH 11/35] Linux: Move aio_init from librt into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (9 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 10/35] Add hidden prototypes for fsync, fdatasync Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 12/35] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
                   ` (24 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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                                 | 105 ++++++++++++------
 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 +
 .../unix/sysv/linux/mips/mips64/librt.abilist |   1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |   2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |   2 +
 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 -
 72 files changed, 221 insertions(+), 91 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 e4ef06a6c5..f6f7900a29 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..634456d489 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;
 }
@@ -485,7 +498,7 @@ handle_fildes_io (void *arg)
   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 f4a5f70f60..2958d8bbea 100644
--- a/sysdeps/nptl/pthreadP.h
+++ b/sysdeps/nptl/pthreadP.h
@@ -349,6 +349,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 0561deac68..9771dec2d9 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
@@ -2346,6 +2347,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 cabce7f1ca..eb606a5ace 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
@@ -2439,6 +2440,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 ba1304fb27..30ba5ad683 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
@@ -2105,6 +2106,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 7f828e63e5..aec5cc13d4 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -200,6 +200,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -903,6 +904,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 126250a101..739573ba0d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -4,7 +4,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 9f732ace57..dad3c2028f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -197,6 +197,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -900,6 +901,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 126250a101..739573ba0d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -4,7 +4,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 2894e35611..b294ade233 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
@@ -2289,6 +2290,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 0eeb9046d1..26dcba0488 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 8f7c22c85c..3794805eea 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
@@ -2243,6 +2244,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 b238823ad9..3c4d4e03ee 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
@@ -2427,6 +2428,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 e46802188e..5557ac1330 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
@@ -2279,6 +2280,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 4c7be2d991..bd922aa71a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -201,6 +201,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -891,6 +892,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 126250a101..739573ba0d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -4,7 +4,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 a3bff03a44..30f26f4875 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
@@ -2370,6 +2371,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 967ac92bea..3731d5340e 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
@@ -2340,6 +2341,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 451966eab1..6eb17cedbc 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 b193aa15c7..b14b9ba0e5 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
@@ -2337,6 +2338,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 451966eab1..6eb17cedbc 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 ef44bc1731..11f60b0399 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
@@ -2335,6 +2336,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 2c7d661e56..40749a395c 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 c3b28b1a34..de2cb5fb4d 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
@@ -2333,6 +2334,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 2c7d661e56..40749a395c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index f47a436839..5e76f90af3 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
@@ -2341,6 +2342,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 11f8b90995..4e1fedf92e 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
@@ -2335,6 +2336,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 68d6138627..e88575f475 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
@@ -2379,6 +2380,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5865026423..f626834a28 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 134bdda2cb..cbb206812d 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
@@ -2397,6 +2398,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 778e34aab2..bc37392916 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
@@ -2430,6 +2431,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 083831b889..6054621b47 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
@@ -2243,6 +2244,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 0d56d2a9f2..49f5140023 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
@@ -2542,6 +2543,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 a6e7c7c968..5347a99441 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
@@ -2107,6 +2108,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 2bbb45524d..ef2bd64a0c 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
@@ -2307,6 +2308,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 a9fd5ae173..5da99f41d1 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
@@ -2395,6 +2396,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 64b72211aa..7582590fc7 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
@@ -2280,6 +2281,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 38aa765be4..429fa14f73 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
@@ -2250,6 +2251,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 d31fe21e3f..1d1d227771 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
@@ -2247,6 +2248,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 065f613969..5668fd660c 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 84b73842aa..cc29540151 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
@@ -2388,6 +2389,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 2c5e7950b7..c9d92e6d1a 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 4af8b9a1eb..a9c67ea157 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
@@ -2300,6 +2301,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 3c482047f7..e340fbc8dd 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
@@ -2258,6 +2259,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 302b0d52e2..9e488ae963 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
@@ -2361,6 +2362,7 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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] 45+ messages in thread

* [PATCH 12/35] Linux: Move aio_cancel, aio_cancel64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (10 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 11/35] Linux: Move aio_init from librt into libc Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 13/35] Linux: Move aio_error, aio_error64 " Florian Weimer
                   ` (23 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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 +++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 +++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 +++
 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 --
 71 files changed, 284 insertions(+), 101 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 f6f7900a29..0ea824ebe8 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 9771dec2d9..d9a45228b8 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
@@ -2347,6 +2349,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 eb606a5ace..d7a8dbb2f6 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
@@ -2440,6 +2444,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 30ba5ad683..22b501ea2b 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
@@ -2106,6 +2108,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 aec5cc13d4..1eb18fc392 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -200,6 +200,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -904,6 +906,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 739573ba0d..216950b6c1 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.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 dad3c2028f..97d104e75d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -197,6 +197,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -901,6 +903,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 739573ba0d..216950b6c1 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.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 b294ade233..d74047a014 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
@@ -2290,6 +2292,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 26dcba0488..2d13281a1f 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 3794805eea..46e9b50a10 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
@@ -2244,6 +2246,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 3c4d4e03ee..9417531a3a 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
@@ -2428,6 +2430,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 5557ac1330..dab468ed14 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
@@ -2280,6 +2282,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 bd922aa71a..3376822cb8 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -201,6 +201,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -892,6 +894,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 739573ba0d..216950b6c1 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.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 30f26f4875..647dbd8445 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
@@ -2371,6 +2373,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 3731d5340e..741775f9af 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
@@ -2341,6 +2343,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 6eb17cedbc..867c912709 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 b14b9ba0e5..e5d1aaad59 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
@@ -2338,6 +2340,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 6eb17cedbc..867c912709 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 11f60b0399..a081b0e93e 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
@@ -2336,6 +2338,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 40749a395c..c9e82563c1 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 de2cb5fb4d..d86a4d79cf 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
@@ -2334,6 +2336,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 40749a395c..c9e82563c1 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5e76f90af3..bd9c354b2a 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
@@ -2342,6 +2344,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4e1fedf92e..de45c2d3b6 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
@@ -2336,6 +2338,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index e88575f475..2e3b269283 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
@@ -2380,6 +2382,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 f626834a28..bcdf31b913 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 cbb206812d..5e4042229d 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
@@ -2398,6 +2400,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 bc37392916..5eb4991123 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
@@ -2431,6 +2433,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 6054621b47..f475d03e11 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
@@ -2244,6 +2246,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 49f5140023..c324cb8f92 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
@@ -2543,6 +2545,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5347a99441..939e61bb67 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
@@ -2108,6 +2110,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 ef2bd64a0c..8d34e34e38 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
@@ -2308,6 +2310,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5da99f41d1..97f20d7152 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
@@ -2396,6 +2398,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 7582590fc7..c9c74df986 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
@@ -2281,6 +2283,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 429fa14f73..07241a3bba 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
@@ -2251,6 +2253,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 1d1d227771..6c53ff3b36 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
@@ -2248,6 +2250,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 5668fd660c..9c7f42e69d 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 cc29540151..b2413a6c4a 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
@@ -2389,6 +2393,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 c9d92e6d1a..e00686e679 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 a9c67ea157..69b05f17b2 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
@@ -2301,6 +2305,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 e340fbc8dd..bcb7d29a0f 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
@@ -2259,6 +2261,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9e488ae963..bfb215dd72 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
@@ -2362,6 +2364,8 @@ GLIBC_2.34 __pthread_register_cancel_defer F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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] 45+ messages in thread

* [PATCH 13/35] Linux: Move aio_error, aio_error64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (11 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 12/35] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:15 ` [PATCH 14/35] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
                   ` (22 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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 ++++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 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 --
 64 files changed, 150 insertions(+), 65 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 0ea824ebe8..c6f5c9479c 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 d9a45228b8..ffc94d2742 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
@@ -2351,6 +2353,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 d7a8dbb2f6..868a4abc54 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
@@ -2446,6 +2448,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 22b501ea2b..f3b9d0c8e4 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
@@ -2110,6 +2112,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 1eb18fc392..7f4a4f51e5 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -202,6 +202,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -908,6 +910,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 216950b6c1..b8081e304a 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.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 97d104e75d..16b91f58ae 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -199,6 +199,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -905,6 +907,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 216950b6c1..b8081e304a 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.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 d74047a014..492983f360 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
@@ -2294,6 +2296,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 2d13281a1f..ec63519cd6 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 46e9b50a10..b7b896e7cc 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
@@ -2248,6 +2250,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 9417531a3a..b28c17f976 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
@@ -2432,6 +2434,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 dab468ed14..7f98c27b56 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
@@ -2284,6 +2286,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 3376822cb8..8dc58eb02c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -203,6 +203,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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
@@ -896,6 +898,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 216950b6c1..b8081e304a 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.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 647dbd8445..431461a210 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
@@ -2375,6 +2377,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 741775f9af..7399736f5d 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
@@ -2345,6 +2347,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 867c912709..f4016ecd1a 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 e5d1aaad59..03813fdf73 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
@@ -2342,6 +2344,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 867c912709..f4016ecd1a 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 a081b0e93e..e1259a6228 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
@@ -2340,6 +2342,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 c9e82563c1..fbd1bb1039 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 d86a4d79cf..63648b7397 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
@@ -2338,6 +2340,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index c9e82563c1..fbd1bb1039 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index bd9c354b2a..d06e870726 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
@@ -2346,6 +2348,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index de45c2d3b6..fccad2d8c1 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
@@ -2340,6 +2342,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 2e3b269283..60fd4bb0bd 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
@@ -2384,6 +2386,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 bcdf31b913..6b4c98e612 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 5e4042229d..8ac20ba20c 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
@@ -2402,6 +2404,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 5eb4991123..d5a727b626 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
@@ -2435,6 +2437,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 f475d03e11..d3e0096381 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
@@ -2248,6 +2250,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 c324cb8f92..5d624a4fab 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
@@ -2547,6 +2549,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 939e61bb67..c7cdf0726a 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
@@ -2112,6 +2114,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 8d34e34e38..75d9cca676 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
@@ -2312,6 +2314,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 97f20d7152..c222b5a0f8 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
@@ -2400,6 +2402,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 c9c74df986..aaf49a20e1 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
@@ -2285,6 +2287,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 07241a3bba..9258bf0be6 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
@@ -2255,6 +2257,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 6c53ff3b36..ba4449093b 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
@@ -2252,6 +2254,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 9c7f42e69d..32ea1d31f1 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 b2413a6c4a..c723475029 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
@@ -2395,6 +2397,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 e00686e679..91529f13ea 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 69b05f17b2..6b7a16e0ff 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
@@ -2307,6 +2309,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 bcb7d29a0f..16c57f88f5 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
@@ -2263,6 +2265,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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 bfb215dd72..7cb88b0158 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
@@ -2366,6 +2368,8 @@ GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next 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] 45+ messages in thread

* [PATCH 14/35] Linux: Move aio_fsync, aio_fsync64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (12 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 13/35] Linux: Move aio_error, aio_error64 " Florian Weimer
@ 2021-06-03 23:15 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 15/35] Linux: Move aio_read, aio_read64 " Florian Weimer
                   ` (21 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:15 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 ++++
 .../unix/sysv/linux/mips/mips64/librt.abilist  |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist    |  4 ++++
 .../sysv/linux/mips/mips64/n64/libc.abilist    |  4 ++++
 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 --
 64 files changed, 147 insertions(+), 65 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index c6f5c9479c..a8d9ef7d18 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 ffc94d2742..c8d6f0deda 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
@@ -2355,6 +2357,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 868a4abc54..3dc95a54f7 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
@@ -2450,6 +2452,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 f3b9d0c8e4..0391848260 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
@@ -2114,6 +2116,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 7f4a4f51e5..ba86272d7e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -204,6 +204,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
@@ -912,6 +914,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 b8081e304a..14a2ef9d59 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.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 16b91f58ae..221549e103 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -201,6 +201,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
@@ -909,6 +911,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 b8081e304a..14a2ef9d59 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.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 492983f360..cb8da82bfd 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
@@ -2298,6 +2300,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 ec63519cd6..17ca6c5342 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 b7b896e7cc..424d496daa 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
@@ -2252,6 +2254,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 32ea1d31f1..57ff2fb6b5 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 b28c17f976..a740412d24 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
@@ -2436,6 +2438,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 32ea1d31f1..57ff2fb6b5 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 7f98c27b56..c38e449fed 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
@@ -2288,6 +2290,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 8dc58eb02c..ba5c89d5a0 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -205,6 +205,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
@@ -900,6 +902,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 b8081e304a..14a2ef9d59 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.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 431461a210..941c3acd5e 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
@@ -2379,6 +2381,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 32ea1d31f1..57ff2fb6b5 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 7399736f5d..92221a8a6a 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
@@ -2349,6 +2351,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 f4016ecd1a..391cc68456 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 03813fdf73..4452e387f8 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index f4016ecd1a..391cc68456 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 e1259a6228..1ee605dd66 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
@@ -2344,6 +2346,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 fbd1bb1039..848a39faae 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 63648b7397..99e171def4 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
@@ -2342,6 +2344,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index fbd1bb1039..848a39faae 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index d06e870726..79b7a173a4 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
@@ -2350,6 +2352,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index fccad2d8c1..6132f8ec4c 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
@@ -2344,6 +2346,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 60fd4bb0bd..ad3f2d37c9 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
@@ -2388,6 +2390,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 6b4c98e612..e38236b56c 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 8ac20ba20c..fc8351ee69 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
@@ -2406,6 +2408,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 32ea1d31f1..57ff2fb6b5 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 d5a727b626..f07cdf4d36 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
@@ -2439,6 +2441,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 d3e0096381..9bae232cc5 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
@@ -2252,6 +2254,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 5d624a4fab..5f82539e80 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
@@ -2551,6 +2553,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 c7cdf0726a..4a3e053a61 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
@@ -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/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 75d9cca676..b1691a2db6 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
@@ -2316,6 +2318,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 c222b5a0f8..2a63ac491c 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
@@ -2404,6 +2406,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 32ea1d31f1..57ff2fb6b5 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 aaf49a20e1..ac68fb5c62 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
@@ -2289,6 +2291,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 9258bf0be6..c7e721edab 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
@@ -2259,6 +2261,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 32ea1d31f1..57ff2fb6b5 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 ba4449093b..f919d8b939 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
@@ -2256,6 +2258,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 32ea1d31f1..57ff2fb6b5 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 c723475029..64fb6aaa88 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
@@ -2399,6 +2401,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 91529f13ea..1bb92a6ad8 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 6b7a16e0ff..e5002c509e 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
@@ -2311,6 +2313,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 16c57f88f5..98f8000a05 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
@@ -2267,6 +2269,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 7cb88b0158..cd1d4aeb88 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
@@ -2370,6 +2372,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] 45+ messages in thread

* [PATCH 15/35] Linux: Move aio_read, aio_read64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (13 preceding siblings ...)
  2021-06-03 23:15 ` [PATCH 14/35] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 16/35] Linux: Move aio_return, aio_return64 " Florian Weimer
                   ` (20 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 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 -
 67 files changed, 185 insertions(+), 76 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 a8d9ef7d18..9372fbc100 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 c8d6f0deda..eaf9b0976f 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
@@ -2360,6 +2362,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 3dc95a54f7..3284cc7f34 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
@@ -2455,6 +2457,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 0391848260..8577b14ad3 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
@@ -2119,6 +2121,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 ba86272d7e..625ee667e3 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -207,6 +207,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
@@ -917,6 +919,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 14a2ef9d59..1b717f254d 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.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 221549e103..3dcecd838b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -204,6 +204,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
@@ -914,6 +916,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 14a2ef9d59..1b717f254d 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.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 cb8da82bfd..b8bd7d5fa1 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
@@ -2303,6 +2305,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 17ca6c5342..457f9debe6 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 424d496daa..c740a0dbf0 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
@@ -2257,6 +2259,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 57ff2fb6b5..decc08762e 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 a740412d24..6f55f0cf86 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
@@ -2441,6 +2443,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 57ff2fb6b5..decc08762e 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 c38e449fed..56b02ca57f 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
@@ -2293,6 +2295,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 ba5c89d5a0..b2d37e273e 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -208,6 +208,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
@@ -905,6 +907,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 14a2ef9d59..1b717f254d 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.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 941c3acd5e..fe3b59b149 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
@@ -2384,6 +2386,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 57ff2fb6b5..decc08762e 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 92221a8a6a..900a746b57 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
@@ -2354,6 +2356,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 391cc68456..6f0c3e8d85 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 4452e387f8..e71ea0c415 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 391cc68456..6f0c3e8d85 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 1ee605dd66..f611855cbc 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
@@ -2349,6 +2351,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 848a39faae..6c94c34024 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 99e171def4..a6e671f1a9 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
@@ -2347,6 +2349,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 848a39faae..6c94c34024 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 79b7a173a4..9ee47a0326 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
@@ -2355,6 +2357,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 6132f8ec4c..9b6472a730 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
@@ -2349,6 +2351,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index ad3f2d37c9..4a1dc57844 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
@@ -2393,6 +2395,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 e38236b56c..e56abf0e35 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 fc8351ee69..71483dab4c 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
@@ -2411,6 +2413,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 57ff2fb6b5..decc08762e 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 f07cdf4d36..783a066f16 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
@@ -2444,6 +2446,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 9bae232cc5..4dc88f7a12 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
@@ -2257,6 +2259,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 5f82539e80..1a0c35ec91 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
@@ -2556,6 +2558,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 4a3e053a61..14826bd89d 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
@@ -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/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 b1691a2db6..ccc5710cf0 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
@@ -2321,6 +2323,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 2a63ac491c..0ef5c9f63d 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
@@ -2409,6 +2411,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 57ff2fb6b5..decc08762e 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 ac68fb5c62..f8a810b521 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
@@ -2294,6 +2296,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 c7e721edab..205086b90f 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
@@ -2264,6 +2266,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 57ff2fb6b5..decc08762e 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 f919d8b939..816bd19400 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
@@ -2261,6 +2263,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 57ff2fb6b5..decc08762e 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 64fb6aaa88..d74b04d5b5 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
@@ -2404,6 +2406,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 1bb92a6ad8..8e45a7572e 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 e5002c509e..273635024f 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
@@ -2316,6 +2318,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 98f8000a05..bb3779c66a 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
@@ -2272,6 +2274,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 cd1d4aeb88..6cec697516 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
@@ -2375,6 +2377,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] 45+ messages in thread

* [PATCH 16/35] Linux: Move aio_return, aio_return64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (14 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 15/35] Linux: Move aio_read, aio_read64 " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 17/35] Linux: Move aio_suspend, aio_suspend64 from librt to libc Florian Weimer
                   ` (19 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++++
 sysdeps/unix/sysv/linux/mips/mips64/librt.abilist |  2 --
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist  |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist  |  4 ++++
 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 --
 64 files changed, 147 insertions(+), 62 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 9372fbc100..da8c380f6a 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 eaf9b0976f..8edf21ded7 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
@@ -2364,6 +2366,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 3284cc7f34..9a9ce357e1 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
@@ -2459,6 +2461,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 8577b14ad3..79e9b9268e 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
@@ -2123,6 +2125,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 625ee667e3..145c21ba78 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -209,6 +209,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
@@ -921,6 +923,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 1b717f254d..a6bb9af91a 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.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 3dcecd838b..d291fa6f22 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -206,6 +206,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
@@ -918,6 +920,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 1b717f254d..a6bb9af91a 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.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 b8bd7d5fa1..f78a9600da 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
@@ -2307,6 +2309,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 457f9debe6..56820c51ce 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 c740a0dbf0..81f98766c5 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
@@ -2261,6 +2263,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 decc08762e..af67fafe9b 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 6f55f0cf86..122b0367fa 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
@@ -2445,6 +2447,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 decc08762e..af67fafe9b 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 56b02ca57f..d1f2dd29be 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
@@ -2297,6 +2299,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 b2d37e273e..cf2b31e55c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -210,6 +210,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
@@ -909,6 +911,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 1b717f254d..a6bb9af91a 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.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 fe3b59b149..d81f39b4fa 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
@@ -2388,6 +2390,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 decc08762e..af67fafe9b 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 900a746b57..e2ebe74ea3 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
@@ -2358,6 +2360,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 6f0c3e8d85..f78336c1fa 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 e71ea0c415..07afe2ffc6 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 6f0c3e8d85..f78336c1fa 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 f611855cbc..adacc7fc59 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
@@ -2353,6 +2355,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 6c94c34024..293b92eaec 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 a6e671f1a9..adf9f5a761 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
@@ -2351,6 +2353,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 6c94c34024..293b92eaec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 9ee47a0326..c66bd5e186 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
@@ -2359,6 +2361,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9b6472a730..920cb20b32 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
@@ -2353,6 +2355,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 4a1dc57844..ec95695394 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
@@ -2397,6 +2399,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 e56abf0e35..ddbdd5e7d8 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 71483dab4c..073ba747b2 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
@@ -2415,6 +2417,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 decc08762e..af67fafe9b 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 783a066f16..b08dae1606 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
@@ -2448,6 +2450,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 4dc88f7a12..1a03002c00 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
@@ -2261,6 +2263,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 1a0c35ec91..8402c23940 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
@@ -2560,6 +2562,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 14826bd89d..476f40cebb 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
@@ -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/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 ccc5710cf0..b2726977bc 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
@@ -2325,6 +2327,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 0ef5c9f63d..81cbe208a5 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
@@ -2413,6 +2415,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 decc08762e..af67fafe9b 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 f8a810b521..6db461e329 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
@@ -2298,6 +2300,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 205086b90f..976b90e77f 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
@@ -2268,6 +2270,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 decc08762e..af67fafe9b 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 816bd19400..a05abc6949 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
@@ -2265,6 +2267,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 decc08762e..af67fafe9b 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 d74b04d5b5..e3265c1106 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
@@ -2408,6 +2410,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 8e45a7572e..0c25f4ea3d 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 273635024f..e2de386040 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
@@ -2320,6 +2322,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 bb3779c66a..423a028d24 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
@@ -2276,6 +2278,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 6cec697516..dd956a41b4 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
@@ -2379,6 +2381,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] 45+ messages in thread

* [PATCH 17/35] Linux: Move aio_suspend, aio_suspend64 from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (15 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 16/35] Linux: Move aio_return, aio_return64 " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 18/35] Linux: Move aio_write, aio_write64 into libc Florian Weimer
                   ` (18 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 UTC (permalink / raw)
  To: libc-alpha

The symbols were moved using scripts/move-symbol-to-libc.py.
---
 include/aio.h                                 |  4 ++
 rt/Makefile                                   |  2 +-
 rt/Versions                                   |  6 ++-
 rt/aio_suspend.c                              | 49 +++++++++++++++----
 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 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, 177 insertions(+), 70 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 da8c380f6a..40159e6659 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..906613a709 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 /* __TIMESPEC64 != 64 */
+# if PTHREAD_IN_LIBC
+libc_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
+# else
+librt_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
+# endif
+# ifndef SHARED
+strong_alias (___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/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 8edf21ded7..8b32d969c2 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
@@ -2368,6 +2370,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 9a9ce357e1..6cdec57370 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
@@ -2463,6 +2465,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 79e9b9268e..480bfcb4d4 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
@@ -2127,6 +2129,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 145c21ba78..0ead74ac80 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -211,6 +211,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
@@ -925,6 +927,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 a6bb9af91a..72fdc18d83 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.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 d291fa6f22..9ea02dccbc 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -208,6 +208,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
@@ -922,6 +924,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 a6bb9af91a..72fdc18d83 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.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 f78a9600da..f2d1cef0d1 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
@@ -2311,6 +2313,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 56820c51ce..9cb53aecc9 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
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 81f98766c5..8d2f9be2e6 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
@@ -2265,6 +2267,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 122b0367fa..915619ea46 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
@@ -2449,6 +2451,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index d1f2dd29be..629c703539 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
@@ -2301,6 +2303,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 cf2b31e55c..1e5dbe3b82 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -212,6 +212,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
@@ -913,6 +915,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 a6bb9af91a..72fdc18d83 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.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 d81f39b4fa..2f04dd9f9d 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
@@ -2392,6 +2394,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e2ebe74ea3..2206a5a019 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
@@ -2362,6 +2364,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 f78336c1fa..83f58c4466 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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 07afe2ffc6..424aae99ab 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index f78336c1fa..83f58c4466 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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index adacc7fc59..9f806233ad 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
@@ -2357,6 +2359,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 293b92eaec..7d7be4d9ec 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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index adf9f5a761..f42bea7f3f 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
@@ -2355,6 +2357,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 293b92eaec..7d7be4d9ec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index c66bd5e186..0b94c8807f 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
@@ -2363,6 +2365,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 920cb20b32..8250ec944c 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
@@ -2357,6 +2359,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index ec95695394..42d7e3f4d0 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
@@ -2401,6 +2403,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 ddbdd5e7d8..0c656d887e 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 073ba747b2..22b5da8a91 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
@@ -2419,6 +2421,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index b08dae1606..9eb496335e 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
@@ -2452,6 +2454,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 1a03002c00..b74d9de03e 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
@@ -2265,6 +2267,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 8402c23940..00580a8d73 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
@@ -2564,6 +2566,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 476f40cebb..41a87fa8a3 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
@@ -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/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 b2726977bc..ae8203a8e3 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
@@ -2329,6 +2331,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 81cbe208a5..90a7d47f59 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
@@ -2417,6 +2419,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 6db461e329..8f3feb4224 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
@@ -2302,6 +2304,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 976b90e77f..a4bd693268 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
@@ -2272,6 +2274,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a05abc6949..1150d1ee54 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
@@ -2269,6 +2271,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 af67fafe9b..f0d68d65d1 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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e3265c1106..8518f28688 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
@@ -2412,6 +2414,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 0c25f4ea3d..3436b1c79d 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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index e2de386040..efe3b9dd47 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
@@ -2324,6 +2326,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 423a028d24..9c7ad981e1 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
@@ -2280,6 +2282,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 dd956a41b4..0e9278c659 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
@@ -2383,6 +2385,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] 45+ messages in thread

* [PATCH 18/35] Linux: Move aio_write, aio_write64 into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (16 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 17/35] Linux: Move aio_suspend, aio_suspend64 from librt to libc Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 19/35] rt: Rework lio_listio implementation Florian Weimer
                   ` (17 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 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 -
 67 files changed, 186 insertions(+), 77 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 40159e6659..362ce31834 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 8b32d969c2..db6ba5f81c 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
@@ -2372,6 +2374,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 6cdec57370..03ff54e3ee 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
@@ -2467,6 +2469,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 480bfcb4d4..448ddee2a6 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
@@ -2131,6 +2133,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 0ead74ac80..e926eacc06 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -213,6 +213,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
@@ -929,6 +931,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 72fdc18d83..818fdf1797 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.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 9ea02dccbc..857c1546ba 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -210,6 +210,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
@@ -926,6 +928,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 72fdc18d83..818fdf1797 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.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 f2d1cef0d1..719441a127 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
@@ -2315,6 +2317,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 9cb53aecc9..4d00665a0c 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 8d2f9be2e6..39d391d78b 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
@@ -2269,6 +2271,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 f0d68d65d1..fa648b6ecf 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 915619ea46..ffe1befcd0 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
@@ -2453,6 +2455,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 f0d68d65d1..fa648b6ecf 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 629c703539..0a4c82d8b0 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
@@ -2305,6 +2307,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 1e5dbe3b82..b475cf1f35 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -214,6 +214,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
@@ -917,6 +919,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 72fdc18d83..818fdf1797 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.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 2f04dd9f9d..d935d2024d 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
@@ -2396,6 +2398,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 f0d68d65d1..fa648b6ecf 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 2206a5a019..1ee908c1c7 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
@@ -2366,6 +2368,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 83f58c4466..fd29f320e6 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 424aae99ab..869264be57 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 83f58c4466..fd29f320e6 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 9f806233ad..82fc943f43 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
@@ -2361,6 +2363,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 7d7be4d9ec..f2cda0ef51 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 f42bea7f3f..b6bae3f9ae 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
@@ -2359,6 +2361,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 7d7be4d9ec..f2cda0ef51 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 0b94c8807f..bd0d2d147b 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
@@ -2367,6 +2369,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 8250ec944c..edad39fe2d 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
@@ -2361,6 +2363,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 42d7e3f4d0..501e6cc216 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
@@ -2405,6 +2407,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 0c656d887e..6f34788abc 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 22b5da8a91..9daf696ceb 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
@@ -2423,6 +2425,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 f0d68d65d1..fa648b6ecf 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 9eb496335e..3a31b4b343 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
@@ -2456,6 +2458,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 b74d9de03e..877f9db62b 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
@@ -2269,6 +2271,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 00580a8d73..faabb1e79b 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
@@ -2568,6 +2570,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 41a87fa8a3..08c30656d9 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
@@ -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/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 ae8203a8e3..e89f358a2c 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
@@ -2333,6 +2335,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 90a7d47f59..2b5eff6fbf 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
@@ -2421,6 +2423,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 f0d68d65d1..fa648b6ecf 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 8f3feb4224..e84eb20c4f 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
@@ -2306,6 +2308,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 a4bd693268..0891906730 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
@@ -2276,6 +2278,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 f0d68d65d1..fa648b6ecf 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 1150d1ee54..b16fb34a1d 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
@@ -2273,6 +2275,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 f0d68d65d1..fa648b6ecf 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 8518f28688..ce74524b55 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
@@ -2416,6 +2418,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 3436b1c79d..659154799d 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 efe3b9dd47..80e82903d8 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
@@ -2328,6 +2330,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 9c7ad981e1..1f27b3dd10 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
@@ -2284,6 +2286,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 0e9278c659..4bf905845b 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
@@ -2387,6 +2389,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] 45+ messages in thread

* [PATCH 19/35] rt: Rework lio_listio implementation
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (17 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 18/35] Linux: Move aio_write, aio_write64 into libc Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 20/35] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
                   ` (16 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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] 45+ messages in thread

* [PATCH 20/35] Linux: Move lio_listio, lio_listio64 from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (18 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 19/35] rt: Rework lio_listio implementation Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 21/35] Linux: Move mq_close " Florian Weimer
                   ` (15 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  5 +---
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  6 ++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  6 ++++
 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 --
 65 files changed, 247 insertions(+), 101 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 362ce31834..6229254f76 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 db6ba5f81c..e23cd193e1 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
@@ -2393,6 +2395,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 03ff54e3ee..8c7c3b52e2 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
@@ -2488,6 +2490,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
@@ -2773,6 +2777,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 448ddee2a6..137815f56d 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
@@ -2152,6 +2154,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 e926eacc06..4c9422464d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -232,6 +232,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
@@ -1564,6 +1566,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 818fdf1797..6ccd6bbf6f 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.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 857c1546ba..eb6810600c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -229,6 +229,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
@@ -1561,6 +1563,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 818fdf1797..6ccd6bbf6f 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.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 719441a127..f3ad5400b8 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
@@ -2336,6 +2338,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 4d00665a0c..0b883fb981 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 39d391d78b..49afe32f2a 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
@@ -2290,6 +2292,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
@@ -2466,6 +2470,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index ffe1befcd0..91ac83fb03 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
@@ -2474,6 +2476,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
@@ -2650,6 +2654,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 0a4c82d8b0..9dcbd5a3b2 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
@@ -2326,6 +2328,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
@@ -2502,6 +2506,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 b475cf1f35..ffdeb0f95a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -233,6 +233,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
@@ -1548,6 +1550,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 818fdf1797..6ccd6bbf6f 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.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 d935d2024d..35e5487976 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
@@ -2417,6 +2419,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
@@ -2593,6 +2597,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 1ee908c1c7..225add14a2 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
@@ -2387,6 +2389,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 fd29f320e6..84fc5aa572 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 869264be57..90ee7f0620 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
@@ -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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index fd29f320e6..84fc5aa572 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 82fc943f43..43a8d84d75 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
@@ -2382,6 +2384,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
@@ -2556,6 +2560,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 f2cda0ef51..cb685723d6 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
@@ -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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b6bae3f9ae..b2f9e8336d 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
@@ -2380,6 +2382,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
@@ -2554,6 +2558,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index f2cda0ef51..cb685723d6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index bd0d2d147b..29676b339f 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
@@ -2388,6 +2390,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
@@ -2562,6 +2566,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index edad39fe2d..9b6f8879b0 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
@@ -2382,6 +2384,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
@@ -2556,6 +2560,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/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 501e6cc216..a9c98a973e 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
@@ -2426,6 +2428,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 6f34788abc..d67daa3f0f 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 9daf696ceb..be88d12aac 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
@@ -2444,6 +2446,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 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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 3a31b4b343..d1dbb2f3ed 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
@@ -2477,6 +2479,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
@@ -2774,6 +2778,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 877f9db62b..cbca8335bd 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
@@ -2290,6 +2292,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
@@ -2575,6 +2579,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 faabb1e79b..20d106a01a 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
@@ -2589,6 +2591,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 08c30656d9..c891a47b22 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
@@ -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/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 e89f358a2c..c90a5e24e7 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
@@ -2354,6 +2356,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 2b5eff6fbf..b5ace97b06 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
@@ -2442,6 +2444,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
@@ -2727,6 +2731,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index e84eb20c4f..c113468de7 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
@@ -2327,6 +2329,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
@@ -2612,6 +2616,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 0891906730..2e96bf4ac4 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
@@ -2297,6 +2299,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
@@ -2473,6 +2477,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index b16fb34a1d..84366bcdf7 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
@@ -2294,6 +2296,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
@@ -2470,6 +2474,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 fa648b6ecf..32beefa377 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
@@ -15,6 +14,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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index ce74524b55..0db72aa031 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
@@ -2437,6 +2439,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
@@ -2748,6 +2752,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 659154799d..c0184e3f5a 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
@@ -16,6 +15,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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 80e82903d8..06f37cde44 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
@@ -2349,6 +2351,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
@@ -2525,6 +2529,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 1f27b3dd10..a938914044 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
@@ -2305,6 +2307,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
@@ -2481,6 +2485,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 4bf905845b..643c84336b 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
@@ -2408,6 +2410,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] 45+ messages in thread

* [PATCH 21/35] Linux: Move mq_close from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (19 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 20/35] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 22/35] Linux: Move mq_setattr " Florian Weimer
                   ` (14 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
 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 -
 64 files changed, 79 insertions(+), 31 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 6229254f76..6cf0c753e5 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 e23cd193e1..ebe826a72f 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
@@ -2397,6 +2398,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 8c7c3b52e2..f1e6362196 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
@@ -2492,6 +2493,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 137815f56d..0310b11697 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
@@ -2156,6 +2157,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 4c9422464d..574254fc32 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -234,6 +234,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
@@ -1647,6 +1648,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 6ccd6bbf6f..52097ef71e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-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 eb6810600c..b2b0dce8dc 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -231,6 +231,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
@@ -1644,6 +1645,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 6ccd6bbf6f..52097ef71e 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-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 f3ad5400b8..18615c70fa 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
@@ -2340,6 +2341,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 0b883fb981..44bbcd92d2 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 49afe32f2a..f006462ffa 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
@@ -2294,6 +2295,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 32beefa377..b0fbc2a294 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 91ac83fb03..888de296f7 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
@@ -2478,6 +2479,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 32beefa377..b0fbc2a294 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 9dcbd5a3b2..be0140efb8 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
@@ -2330,6 +2331,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 ffdeb0f95a..89c2fe1fdb 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -235,6 +235,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
@@ -1631,6 +1632,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 6ccd6bbf6f..52097ef71e 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-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 35e5487976..793e7fd467 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
@@ -2421,6 +2422,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 32beefa377..b0fbc2a294 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 225add14a2..f69321e254 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
@@ -2391,6 +2392,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 84fc5aa572..34f4d18f18 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 90ee7f0620..0cbc16c11a 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 84fc5aa572..34f4d18f18 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 43a8d84d75..5cd14de6d3 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
@@ -2386,6 +2387,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 cb685723d6..df7de1fd21 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 b2f9e8336d..31db916285 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
@@ -2384,6 +2385,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index cb685723d6..df7de1fd21 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 29676b339f..99227a360f 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
@@ -2392,6 +2393,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9b6f8879b0..7f378d4cb0 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
@@ -2386,6 +2387,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/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 a9c98a973e..7b98df7c56 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
@@ -2430,6 +2431,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 d67daa3f0f..0093c4a352 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 be88d12aac..0a03d5c56a 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
@@ -2448,6 +2449,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 32beefa377..b0fbc2a294 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 d1dbb2f3ed..24ed2eb836 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
@@ -2481,6 +2482,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 cbca8335bd..08da95d04f 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
@@ -2294,6 +2295,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 20d106a01a..fa9eff0d6f 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
@@ -2593,6 +2594,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 c891a47b22..34ee61172b 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
@@ -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/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 c90a5e24e7..5d320a747f 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
@@ -2358,6 +2359,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 b5ace97b06..0db60dab82 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
@@ -2446,6 +2447,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 32beefa377..b0fbc2a294 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 c113468de7..ec26c28f5f 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
@@ -2331,6 +2332,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 2e96bf4ac4..277261820b 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
@@ -2301,6 +2302,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 32beefa377..b0fbc2a294 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 84366bcdf7..5399cd5e3d 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
@@ -2298,6 +2299,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 32beefa377..b0fbc2a294 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 0db72aa031..13a750d4f2 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
@@ -2441,6 +2442,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 c0184e3f5a..9633980206 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 06f37cde44..f5b2861596 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
@@ -2353,6 +2354,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 a938914044..0dbc0cb1a2 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
@@ -2309,6 +2310,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 643c84336b..d1a3e6ca22 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
@@ -2412,6 +2413,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] 45+ messages in thread

* [PATCH 22/35] Linux: Move mq_setattr from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (20 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 21/35] Linux: Move mq_close " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 23/35] Linux: Move mq_getattr " Florian Weimer
                   ` (13 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
 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 -
 66 files changed, 108 insertions(+), 33 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 6cf0c753e5..629d0855db 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 ebe826a72f..fa9c7c62a1 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
@@ -2399,6 +2400,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 f1e6362196..efc4511be9 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
@@ -2494,6 +2495,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 0310b11697..fd71e6e37a 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
@@ -2158,6 +2159,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 574254fc32..324c9a87b7 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -235,6 +235,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
@@ -1649,6 +1650,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 52097ef71e..ff9140c24f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -3,7 +3,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 b2b0dce8dc..9bb9303b28 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -232,6 +232,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
@@ -1646,6 +1647,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 52097ef71e..ff9140c24f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -3,7 +3,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 18615c70fa..a5b523b9f0 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
@@ -2342,6 +2343,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 44bbcd92d2..76ff130d09 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 f006462ffa..0716b8850a 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
@@ -2296,6 +2297,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 b0fbc2a294..798e4488c8 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 888de296f7..bbc5b694f3 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
@@ -2480,6 +2481,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 b0fbc2a294..798e4488c8 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 be0140efb8..4442c7901d 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
@@ -2332,6 +2333,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 89c2fe1fdb..02e9ce73ac 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -236,6 +236,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
@@ -1633,6 +1634,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 52097ef71e..ff9140c24f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -3,7 +3,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 793e7fd467..ccb77676a0 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
@@ -2423,6 +2424,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 b0fbc2a294..798e4488c8 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 f69321e254..6b64225a65 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
@@ -2393,6 +2394,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 34f4d18f18..128059b053 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 0cbc16c11a..5865b804cf 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 34f4d18f18..128059b053 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 5cd14de6d3..bcaf07ac85 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
@@ -2388,6 +2389,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 df7de1fd21..6957efa4dd 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 31db916285..9a13848933 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
@@ -2386,6 +2387,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index df7de1fd21..6957efa4dd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 99227a360f..a9e4f98a20 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
@@ -2394,6 +2395,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 7f378d4cb0..9cee9e6383 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
@@ -2388,6 +2389,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/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 7b98df7c56..5c7f6118c5 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
@@ -2432,6 +2433,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 0093c4a352..3f9b40a1a2 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 0a03d5c56a..bd4cabfa1a 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
@@ -2450,6 +2451,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 b0fbc2a294..798e4488c8 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 24ed2eb836..6af1a56f74 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
@@ -2483,6 +2484,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 08da95d04f..eac3865fd3 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
@@ -2296,6 +2297,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 fa9eff0d6f..3c432f1ffe 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
@@ -2595,6 +2596,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 34ee61172b..21a8aae119 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
@@ -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/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 5d320a747f..a49a7fbb76 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
@@ -2360,6 +2361,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 0db60dab82..4260925e51 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
@@ -2448,6 +2449,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 b0fbc2a294..798e4488c8 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 ec26c28f5f..dbffb9d2ac 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
@@ -2333,6 +2334,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 277261820b..ba278810ee 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
@@ -2303,6 +2304,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 b0fbc2a294..798e4488c8 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 5399cd5e3d..c0ba685cb8 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
@@ -2300,6 +2301,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 b0fbc2a294..798e4488c8 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 13a750d4f2..6f8af4233f 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
@@ -2443,6 +2444,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 9633980206..2668338eb0 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 f5b2861596..48e113a3d1 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
@@ -2355,6 +2356,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 0dbc0cb1a2..ec030e244a 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
@@ -2311,6 +2312,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 d1a3e6ca22..4a7630d3e8 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
@@ -2414,6 +2415,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] 45+ messages in thread

* [PATCH 23/35] Linux: Move mq_getattr from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (21 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 22/35] Linux: Move mq_setattr " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 24/35] Linux: Move mq_notify " Florian Weimer
                   ` (12 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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/librt.abilist         | 1 -
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist      | 2 ++
 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 -
 64 files changed, 75 insertions(+), 32 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 629d0855db..a1d5661216 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 fa9c7c62a1..e192480e09 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
@@ -2400,6 +2401,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 efc4511be9..d937d5b1f8 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
@@ -2495,6 +2496,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 fd71e6e37a..31f687ab4f 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
@@ -2159,6 +2160,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 324c9a87b7..e49023b653 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -235,6 +235,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
@@ -1650,6 +1651,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 ff9140c24f..019efdeb89 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-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 9bb9303b28..1e903842d2 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -232,6 +232,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
@@ -1647,6 +1648,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 ff9140c24f..019efdeb89 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-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 a5b523b9f0..8fb5aaf4be 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
@@ -2343,6 +2344,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 76ff130d09..a44c501d49 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 0716b8850a..d3f2a9fbed 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
@@ -2297,6 +2298,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 798e4488c8..3618d3e898 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 bbc5b694f3..d23ded400b 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
@@ -2481,6 +2482,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 798e4488c8..3618d3e898 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 4442c7901d..a84e585a5a 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
@@ -2333,6 +2334,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 02e9ce73ac..a8b6530236 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -236,6 +236,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
@@ -1634,6 +1635,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 ff9140c24f..019efdeb89 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-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 ccb77676a0..2099088d48 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
@@ -2424,6 +2425,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 798e4488c8..3618d3e898 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 6b64225a65..480542425a 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
@@ -2394,6 +2395,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 128059b053..a03da76f76 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 5865b804cf..f66c0d5641 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 128059b053..a03da76f76 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 bcaf07ac85..173f533387 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
@@ -2389,6 +2390,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 6957efa4dd..a249a4623f 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 9a13848933..dd536cdd7a 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
@@ -2387,6 +2388,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 6957efa4dd..a249a4623f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index a9e4f98a20..ec9ea80650 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
@@ -2395,6 +2396,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 9cee9e6383..500cf81644 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
@@ -2389,6 +2390,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/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 5c7f6118c5..5b22c05d1a 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
@@ -2433,6 +2434,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 3f9b40a1a2..54faf2191a 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 bd4cabfa1a..a4f07abfcb 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
@@ -2451,6 +2452,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 798e4488c8..3618d3e898 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 6af1a56f74..5f3f7e0a65 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
@@ -2484,6 +2485,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 eac3865fd3..45da3fd0a5 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
@@ -2297,6 +2298,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 3c432f1ffe..c21e33b002 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
@@ -2596,6 +2597,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 21a8aae119..ec447c1929 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
@@ -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/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 a49a7fbb76..7996483bbc 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
@@ -2361,6 +2362,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 4260925e51..25dd65a559 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
@@ -2449,6 +2450,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 798e4488c8..3618d3e898 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 dbffb9d2ac..fafa8db1e6 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
@@ -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_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 ba278810ee..31731a61d8 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
@@ -2304,6 +2305,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 798e4488c8..3618d3e898 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 c0ba685cb8..b96bdc0a90 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
@@ -2301,6 +2302,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 798e4488c8..3618d3e898 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 6f8af4233f..49709c7654 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
@@ -2444,6 +2445,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 2668338eb0..31311e85b9 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 48e113a3d1..5c2a1a0235 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
@@ -2356,6 +2357,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 ec030e244a..f006d8985f 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
@@ -2312,6 +2313,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 4a7630d3e8..b08c38fa7c 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
@@ -2415,6 +2416,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] 45+ messages in thread

* [PATCH 24/35] Linux: Move mq_notify from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (22 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 23/35] Linux: Move mq_getattr " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:16 ` [PATCH 25/35] Linux: Move mq_open, __mq_open_2 " Florian Weimer
                   ` (11 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 +
 .../unix/sysv/linux/mips/mips64/librt.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 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 -
 67 files changed, 100 insertions(+), 64 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 a3e1cf51b0..b8167b8d69 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 a1d5661216..2376415a38 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 e192480e09..368ed7453b 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
@@ -2402,6 +2403,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 d937d5b1f8..d26f035f0a 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
@@ -2497,6 +2498,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 31f687ab4f..d8e431bc13 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
@@ -2161,6 +2162,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 e49023b653..a97e9d40ae 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -236,6 +236,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
@@ -1652,6 +1653,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 019efdeb89..16c562cc57 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-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 1e903842d2..0b957d1f10 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -233,6 +233,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
@@ -1649,6 +1650,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 019efdeb89..16c562cc57 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-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 8fb5aaf4be..6f6bc16b0e 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
@@ -2345,6 +2346,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 a44c501d49..cb268470a2 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 d3f2a9fbed..a5d44d7394 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
@@ -2299,6 +2300,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 3618d3e898..56e82a8a53 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 d23ded400b..7758073583 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
@@ -2483,6 +2484,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 3618d3e898..56e82a8a53 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 a84e585a5a..ae6d041f13 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
@@ -2335,6 +2336,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 a8b6530236..9bbcd02ff2 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -237,6 +237,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
@@ -1636,6 +1637,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 019efdeb89..16c562cc57 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-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 2099088d48..7ada87505b 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
@@ -2426,6 +2427,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 3618d3e898..56e82a8a53 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 480542425a..86422132f3 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
@@ -2396,6 +2397,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 a03da76f76..039871a931 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 f66c0d5641..6bab3fea30 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
@@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index a03da76f76..039871a931 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 173f533387..750d4e704c 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
@@ -2391,6 +2392,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 a249a4623f..7afe4e83cf 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 dd536cdd7a..13fc078266 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
@@ -2389,6 +2390,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index a249a4623f..7afe4e83cf 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index ec9ea80650..f310320334 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
@@ -2397,6 +2398,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 500cf81644..ea8a8d4a4e 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
@@ -2391,6 +2392,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/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
index e22850a910..473621f590 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 5b22c05d1a..9331ef54cf 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
@@ -2435,6 +2436,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 54faf2191a..552ee96b30 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 a4f07abfcb..f09b309ea5 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
@@ -2453,6 +2454,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 3618d3e898..56e82a8a53 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 5f3f7e0a65..b3b4167fab 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
@@ -2486,6 +2487,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 45da3fd0a5..bef39a8377 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
@@ -2299,6 +2300,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 c21e33b002..73ad8e24f1 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
@@ -2598,6 +2599,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 ec447c1929..793b3d7ff2 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
@@ -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/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 7996483bbc..442faab40d 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
@@ -2363,6 +2364,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 25dd65a559..58167f046f 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
@@ -2451,6 +2452,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 3618d3e898..56e82a8a53 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 fafa8db1e6..8bfa413e81 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
@@ -2336,6 +2337,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 31731a61d8..312f0fd5fc 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
@@ -2306,6 +2307,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 3618d3e898..56e82a8a53 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 b96bdc0a90..a857b38453 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
@@ -2303,6 +2304,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 3618d3e898..56e82a8a53 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 49709c7654..e4c661632e 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
@@ -2446,6 +2447,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 31311e85b9..0990953ee9 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 5c2a1a0235..ecec2ef922 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
@@ -2358,6 +2359,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 f006d8985f..4277301a21 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
@@ -2314,6 +2315,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 b08c38fa7c..6d7a7f41a8 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
@@ -2417,6 +2418,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] 45+ messages in thread

* [PATCH 25/35] Linux: Move mq_open, __mq_open_2 from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (23 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 24/35] Linux: Move mq_notify " Florian Weimer
@ 2021-06-03 23:16 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 26/35] Linux: Move mq_receive, mq_timedreceive " Florian Weimer
                   ` (10 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:16 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 ++++
 sysdeps/unix/sysv/linux/mips/mips64/librt.abilist  |  3 +--
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++++
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++++
 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 --
 65 files changed, 177 insertions(+), 62 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index 2376415a38..e4092c67b1 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 368ed7453b..7c65169382 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
@@ -2404,6 +2407,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 d26f035f0a..d8e9a84f1c 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
@@ -2499,6 +2501,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
@@ -2889,6 +2892,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 d8e431bc13..6f15a1aa2d 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
@@ -2163,6 +2166,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 a97e9d40ae..d9bae60a8f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -191,6 +191,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
@@ -237,6 +238,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
@@ -1654,6 +1656,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
@@ -2525,6 +2528,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 16c562cc57..5c7ced9ace 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -9,4 +8,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 0b957d1f10..f4f265420f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -188,6 +188,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
@@ -234,6 +235,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
@@ -1651,6 +1653,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
@@ -2522,6 +2525,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 16c562cc57..5c7ced9ace 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -9,4 +8,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 6f6bc16b0e..a6abf2353f 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
@@ -2301,6 +2303,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
@@ -2347,6 +2350,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 cb268470a2..9d21d0f5dc 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 a5d44d7394..3d142b2b69 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
@@ -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
@@ -2301,6 +2303,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
@@ -2540,6 +2543,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,11 +4,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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 7758073583..3a3f4ab126 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
@@ -2439,6 +2440,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
@@ -2485,6 +2487,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
@@ -2724,6 +2727,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,11 +4,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/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index ae6d041f13..17bba9dd74 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
@@ -2337,6 +2339,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
@@ -2576,6 +2579,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 9bbcd02ff2..366a0dad61 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -192,6 +192,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
@@ -238,6 +239,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
@@ -1638,6 +1640,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
@@ -2505,6 +2508,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 16c562cc57..5c7ced9ace 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.4 mq_open F
 GLIBC_2.4 mq_receive F
 GLIBC_2.4 mq_send F
 GLIBC_2.4 mq_timedreceive F
@@ -9,4 +8,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 7ada87505b..0657db94c2 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
@@ -2382,6 +2383,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
@@ -2428,6 +2430,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
@@ -2667,6 +2670,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,11 +4,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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 86422132f3..f584ccc897 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
@@ -2352,6 +2354,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
@@ -2398,6 +2401,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 039871a931..8a93e4ba3d 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 6bab3fea30..3d479526e1 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
@@ -2349,6 +2351,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 +2398,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 039871a931..8a93e4ba3d 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 750d4e704c..2f5b20d9c0 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
@@ -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
@@ -2393,6 +2395,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
@@ -2628,6 +2631,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 7afe4e83cf..8862820283 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 13fc078266..38248ca5f0 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
@@ -2345,6 +2346,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
@@ -2391,6 +2393,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/mips/mips64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 7afe4e83cf..8862820283 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index f310320334..253066f66d 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
@@ -2353,6 +2354,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
@@ -2399,6 +2401,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
@@ -2634,6 +2637,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index ea8a8d4a4e..3f559df025 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
@@ -2393,6 +2395,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
@@ -2628,6 +2631,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/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 9331ef54cf..12a6a284d4 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
@@ -2391,6 +2393,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
@@ -2437,6 +2440,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 552ee96b30..ec0882982a 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 f09b309ea5..f7af6f34c7 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
@@ -2409,6 +2410,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
@@ -2455,6 +2457,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
@@ -2847,6 +2850,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,11 +4,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/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index b3b4167fab..0ad9a6a5d5 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
@@ -2442,6 +2443,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
@@ -2488,6 +2490,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
@@ -2892,6 +2895,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 bef39a8377..e2bd0e982c 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
@@ -2301,6 +2303,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
@@ -2693,6 +2696,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 73ad8e24f1..b01e7a68c1 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
@@ -2600,6 +2603,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 793b3d7ff2..9109c9f917 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
@@ -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/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 442faab40d..484d3f3a30 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
@@ -2365,6 +2368,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 58167f046f..e3a4b818fb 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
@@ -2407,6 +2408,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
@@ -2453,6 +2455,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
@@ -2843,6 +2846,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,11 +4,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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 8bfa413e81..053647b6d8 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
@@ -2338,6 +2340,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
@@ -2728,6 +2731,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 312f0fd5fc..99c04ff452 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
@@ -2262,6 +2263,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
@@ -2308,6 +2310,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
@@ -2547,6 +2550,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,11 +4,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/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a857b38453..5a5b9d5086 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
@@ -2259,6 +2260,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
@@ -2305,6 +2307,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
@@ -2544,6 +2547,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 56e82a8a53..01ae077514 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,11 +4,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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e4c661632e..c811ee54e6 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
@@ -2402,6 +2403,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
@@ -2448,6 +2450,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
@@ -2864,6 +2867,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 0990953ee9..3df12a834a 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,11 +5,10 @@ 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
 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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index ecec2ef922..ddea8c5275 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
@@ -2360,6 +2362,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
@@ -2599,6 +2602,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 4277301a21..9b7da44dc2 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
@@ -2316,6 +2318,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
@@ -2555,6 +2558,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 6d7a7f41a8..7b5cb8e5ae 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
@@ -2419,6 +2422,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] 45+ messages in thread

* [PATCH 26/35] Linux: Move mq_receive, mq_timedreceive from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (24 preceding siblings ...)
  2021-06-03 23:16 ` [PATCH 25/35] Linux: Move mq_open, __mq_open_2 " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 27/35] Linux: Move mq_send, mq_timedsend " Florian Weimer
                   ` (9 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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/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 +++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 +++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/mq_receive.c          |  9 +++--
 sysdeps/unix/sysv/linux/mq_timedreceive.c     | 36 +++++++++++++------
 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 --
 66 files changed, 178 insertions(+), 77 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 e4092c67b1..72cdd648c3 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/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 7c65169382..e855de3b71 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
@@ -2408,7 +2410,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 d8e9a84f1c..255b23223e 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
@@ -2502,7 +2504,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 6f15a1aa2d..aa6a44204d 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
@@ -2167,7 +2169,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 d9bae60a8f..3bc0ddfe2c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -239,7 +239,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
@@ -1657,7 +1659,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 5c7ced9ace..688e576e26 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,6 +1,4 @@
-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 f4f265420f..32501ae7c9 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -236,7 +236,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
@@ -1654,7 +1656,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 5c7ced9ace..688e576e26 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,6 +1,4 @@
-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 a6abf2353f..130dac13c6 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
@@ -2351,7 +2353,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 9d21d0f5dc..a2fddc0c8e 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
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 3d142b2b69..23ff5af16c 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
@@ -2304,7 +2306,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,9 +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_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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 3a3f4ab126..c28ae0c712 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
@@ -2488,7 +2490,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,9 +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_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/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 17bba9dd74..b4b7bea2d8 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
@@ -2340,7 +2342,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 366a0dad61..0c708b427d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -240,7 +240,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
@@ -1641,7 +1643,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 5c7ced9ace..688e576e26 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,6 +1,4 @@
-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 0657db94c2..13117d8332 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
@@ -2431,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/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,9 +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_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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index f584ccc897..45d05b3077 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
@@ -2402,7 +2404,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 8a93e4ba3d..4c95f61cd5 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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 3d479526e1..79f2d051aa 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
@@ -2399,7 +2401,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 8a93e4ba3d..4c95f61cd5 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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 2f5b20d9c0..ef0ee9d68d 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
@@ -2396,7 +2398,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 8862820283..b5796aadb3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 38248ca5f0..92cf73c49e 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
@@ -2394,7 +2396,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 8862820283..b5796aadb3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 253066f66d..baccbedce8 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
@@ -2402,7 +2404,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 3f559df025..4d2c898966 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
@@ -2396,7 +2398,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/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..0b726ba716 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,23 @@ __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)
 
 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 +81,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 12a6a284d4..c56ef123bc 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
@@ -2441,7 +2443,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 ec0882982a..6f7e63316f 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index f7af6f34c7..5584f58cdd 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
@@ -2458,7 +2460,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,9 +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_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/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 0ad9a6a5d5..9aa7ad0ea9 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
@@ -2491,7 +2493,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 e2bd0e982c..3c5699ef11 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
@@ -2304,7 +2306,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 b01e7a68c1..12585936db 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
@@ -2604,7 +2606,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 9109c9f917..ffb3cc7364 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
@@ -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/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 484d3f3a30..086c508836 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
@@ -2369,7 +2371,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 e3a4b818fb..4b85fa5e9f 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
@@ -2456,7 +2458,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,9 +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_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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 053647b6d8..26f2756e62 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
@@ -2341,7 +2343,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 99c04ff452..bfdfabdb7a 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
@@ -2311,7 +2313,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,9 +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_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/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 5a5b9d5086..5481110df9 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
@@ -2308,7 +2310,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 01ae077514..04d8bff765 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,9 +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_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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c811ee54e6..275babc59f 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
@@ -2451,7 +2453,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 3df12a834a..a0682cde87 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,9 +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_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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index ddea8c5275..1736a832f3 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
@@ -2363,7 +2365,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 9b7da44dc2..904232ea5b 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
@@ -2319,7 +2321,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 7b5cb8e5ae..2f45055dbc 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
@@ -2423,7 +2425,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] 45+ messages in thread

* [PATCH 27/35] Linux: Move mq_send, mq_timedsend from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (25 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 26/35] Linux: Move mq_receive, mq_timedreceive " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 28/35] Linux: Move mq_unlink " Florian Weimer
                   ` (8 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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/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 +++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 --
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 +++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 +++
 sysdeps/unix/sysv/linux/mq_send.c             |  7 +++-
 sysdeps/unix/sysv/linux/mq_timedsend.c        | 36 +++++++++++++------
 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 --
 66 files changed, 174 insertions(+), 79 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 72cdd648c3..a6de82c270 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/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index e855de3b71..bc4524c3c8 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
@@ -2411,8 +2413,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 255b23223e..ebad573581 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
@@ -2505,8 +2507,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 aa6a44204d..b4bf198fd9 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
@@ -2170,8 +2172,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 3bc0ddfe2c..7d221d5a44 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -240,8 +240,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
@@ -1660,8 +1662,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 688e576e26..3f6cc02b8b 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.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 32501ae7c9..b13534180d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -237,8 +237,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
@@ -1657,8 +1659,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 688e576e26..3f6cc02b8b 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.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 130dac13c6..8ce2ac46dc 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
@@ -2354,8 +2356,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 a2fddc0c8e..6474e3bc74 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_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
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 23ff5af16c..b4cf7382d7 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
@@ -2307,8 +2309,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,8 +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_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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c28ae0c712..a100310b23 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
@@ -2491,8 +2493,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,8 +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_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/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b4b7bea2d8..8b3581d683 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
@@ -2343,8 +2345,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 0c708b427d..5669ca175a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -241,8 +241,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
@@ -1644,8 +1646,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 688e576e26..3f6cc02b8b 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.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 13117d8332..a3510a8da5 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
@@ -2434,8 +2436,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,8 +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_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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 45d05b3077..34ec16e64f 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
@@ -2405,8 +2407,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 4c95f61cd5..2fd2f0bdb4 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_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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 79f2d051aa..e0a37c49fc 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
@@ -2402,8 +2404,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 4c95f61cd5..2fd2f0bdb4 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_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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ef0ee9d68d..8497e83efc 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
@@ -2399,8 +2401,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 b5796aadb3..1daa0ecaef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 92cf73c49e..b16498fe37 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
@@ -2397,8 +2399,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index b5796aadb3..1daa0ecaef 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index baccbedce8..6ec26434ab 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
@@ -2405,8 +2407,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 4d2c898966..ecb3422205 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
@@ -2399,8 +2401,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/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..4e82e25b7f 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,21 @@ __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)
 
 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 +80,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 c56ef123bc..bf95d2a0a2 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
@@ -2444,8 +2446,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 6f7e63316f..156fde6484 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_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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 5584f58cdd..3dc4fd7ec5 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
@@ -2461,8 +2463,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,8 +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_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/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 9aa7ad0ea9..cd7953df77 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
@@ -2494,8 +2496,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 3c5699ef11..4c4c691f9b 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
@@ -2307,8 +2309,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 12585936db..5d5202c332 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
@@ -2607,8 +2609,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 ffb3cc7364..105ecfd046 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
@@ -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/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 086c508836..9c4e300735 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
@@ -2372,8 +2374,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 4b85fa5e9f..706a30e0f8 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
@@ -2459,8 +2461,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,8 +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_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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 26f2756e62..4f08e4d868 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
@@ -2344,8 +2346,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 bfdfabdb7a..398f540874 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
@@ -2314,8 +2316,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,8 +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_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/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 5481110df9..354ba17641 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
@@ -2311,8 +2313,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 04d8bff765..8260d89822 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,8 +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_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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 275babc59f..51a02a969c 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
@@ -2454,8 +2456,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 a0682cde87..fb1ab58411 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,8 +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_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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 1736a832f3..46a3b76412 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
@@ -2366,8 +2368,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 904232ea5b..d5bd8b2e9b 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
@@ -2322,8 +2324,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 2f45055dbc..a126fc0588 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
@@ -2426,8 +2428,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] 45+ messages in thread

* [PATCH 28/35] Linux: Move mq_unlink from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (26 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 27/35] Linux: Move mq_send, mq_timedsend " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 29/35] Linux: Move timer helper routines " Florian Weimer
                   ` (7 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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/librt.abilist         | 2 +-
 sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist      | 2 ++
 sysdeps/unix/sysv/linux/mips/mips64/n64/libc.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 -
 65 files changed, 99 insertions(+), 33 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile
index a6de82c270..0574f11b89 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 bc4524c3c8..4da2087b50 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
@@ -2417,6 +2418,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 ebad573581..09c6b46594 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
@@ -2511,6 +2512,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 b4bf198fd9..7bbea260c4 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
@@ -2176,6 +2177,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 7d221d5a44..a69ff1cfc6 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -244,6 +244,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
@@ -1666,6 +1667,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 3f6cc02b8b..0c58d2a925 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-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 b13534180d..5843fdd3ac 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -241,6 +241,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
@@ -1663,6 +1664,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 3f6cc02b8b..0c58d2a925 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-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 8ce2ac46dc..e367d19dcc 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
@@ -2360,6 +2361,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 6474e3bc74..a68d1c3ae3 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 b4cf7382d7..c08dcaffa0 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
@@ -2313,6 +2314,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -4,6 +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_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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a100310b23..4966f072a9 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
@@ -2497,6 +2498,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -4,6 +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_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/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 8b3581d683..f7c185d66a 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
@@ -2349,6 +2350,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 5669ca175a..1d5fa00384 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -245,6 +245,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
@@ -1650,6 +1651,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 3f6cc02b8b..0c58d2a925 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-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 a3510a8da5..481bac83eb 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
@@ -2440,6 +2441,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -4,6 +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_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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 34ec16e64f..6beb0360a8 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
@@ -2411,6 +2412,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 2fd2f0bdb4..97a6b25afb 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 e0a37c49fc..26d8885507 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
@@ -2408,6 +2409,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 2fd2f0bdb4..97a6b25afb 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 8497e83efc..17b0d0cc3e 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
@@ -2405,6 +2406,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 1daa0ecaef..51354b072d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b16498fe37..35f2808b65 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
@@ -2403,6 +2404,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 1daa0ecaef..51354b072d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 6ec26434ab..14b175c0e9 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
@@ -2411,6 +2412,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index ecb3422205..712773f831 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
@@ -2405,6 +2406,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/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 bf95d2a0a2..16bca8aa54 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
@@ -2450,6 +2451,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 156fde6484..3f1e6df810 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 3dc4fd7ec5..65d93709de 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
@@ -2467,6 +2468,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -4,6 +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_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/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index cd7953df77..6d0de94fa6 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
@@ -2500,6 +2501,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 4c4c691f9b..2df3507cb6 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
@@ -2313,6 +2314,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 5d5202c332..41d0bcea46 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
@@ -2613,6 +2614,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 105ecfd046..6f1b2cc4a2 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
@@ -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/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 9c4e300735..abfb3dac62 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
@@ -2378,6 +2379,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 706a30e0f8..787135a791 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
@@ -2465,6 +2466,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -4,6 +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_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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 4f08e4d868..817df83b6f 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
@@ -2350,6 +2351,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 398f540874..8073c87ef4 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
@@ -2320,6 +2321,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -4,6 +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_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/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 354ba17641..aac7df1b9c 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
@@ -2317,6 +2318,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 8260d89822..eea359a56e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -4,6 +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_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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 51a02a969c..0cde20d416 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
@@ -2460,6 +2461,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 fb1ab58411..745319ed5c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -5,6 +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_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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 46a3b76412..aa2ccd7777 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
@@ -2372,6 +2373,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 d5bd8b2e9b..69ea71b18c 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
@@ -2328,6 +2329,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 a126fc0588..8d186c3ceb 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
@@ -2432,6 +2433,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] 45+ messages in thread

* [PATCH 29/35] Linux: Move timer helper routines from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (27 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 28/35] Linux: Move mq_unlink " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 30/35] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
                   ` (6 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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 c864ad38ca..d7e8ee9d8b 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -194,6 +194,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] 45+ messages in thread

* [PATCH 30/35] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (28 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 29/35] Linux: Move timer helper routines " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 31/35] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
                   ` (5 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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] 45+ messages in thread

* [PATCH 31/35] Linux: Move timer_create, timer_delete from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (29 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 30/35] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 32/35] Linux: Move timer_getoverrun " Florian Weimer
                   ` (4 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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 ++
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  4 ++
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  4 ++
 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 -
 89 files changed, 275 insertions(+), 240 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 0574f11b89..2d0ad75f69 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 d7e8ee9d8b..573415ef3b 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -120,6 +120,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;
@@ -196,6 +200,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 4da2087b50..c4b0749b3f 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
@@ -2527,6 +2529,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 09c6b46594..3b1b10870c 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
@@ -2621,6 +2625,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 7bbea260c4..f3b60500e8 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
@@ -2286,6 +2288,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 a69ff1cfc6..e50811516d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -353,6 +353,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
@@ -2269,6 +2271,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 0c58d2a925..f9c27d7913 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.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 5843fdd3ac..22793bf139 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -350,6 +350,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
@@ -2266,6 +2268,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 0c58d2a925..f9c27d7913 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.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 e367d19dcc..20c8d77ad1 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
@@ -2470,6 +2472,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 a68d1c3ae3..19de53f9ad 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 c08dcaffa0..5ec5d10912 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
@@ -2423,6 +2425,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 eea359a56e..421fa4f34b 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 4966f072a9..231b2601a3 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
@@ -2607,6 +2609,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 eea359a56e..421fa4f34b 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 f7c185d66a..6673c5f715 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
@@ -2459,6 +2463,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 1d5fa00384..5a614614ff 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -354,6 +354,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
@@ -2249,6 +2251,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 0c58d2a925..f9c27d7913 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.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 481bac83eb..f535986d22 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
@@ -2550,6 +2552,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 eea359a56e..421fa4f34b 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 6beb0360a8..b388529f33 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
@@ -2521,6 +2523,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 97a6b25afb..2a70b5df18 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 26d8885507..e7a54683bd 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
@@ -2518,6 +2520,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 97a6b25afb..2a70b5df18 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 17b0d0cc3e..f626859e72 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
@@ -2515,6 +2517,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 51354b072d..00fd77bbab 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 35f2808b65..2857d72362 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
@@ -2513,6 +2515,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 51354b072d..00fd77bbab 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 14b175c0e9..d69903a236 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
@@ -2521,6 +2523,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 712773f831..cea7a13c44 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
@@ -2515,6 +2517,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 16bca8aa54..fc8f4b2a34 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
@@ -2560,6 +2562,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 3f1e6df810..926b8661b7 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 65d93709de..3a3453029b 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
@@ -2577,6 +2579,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 eea359a56e..421fa4f34b 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 6d0de94fa6..2ba21f757a 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
@@ -2610,6 +2612,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 2df3507cb6..66694044a4 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
@@ -2423,6 +2427,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 41d0bcea46..7ca6196a98 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
@@ -2723,6 +2725,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 6f1b2cc4a2..bef6b3bffe 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
@@ -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/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 abfb3dac62..16c290c4e4 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
@@ -2488,6 +2490,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 787135a791..74afe6a900 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
@@ -2575,6 +2577,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 eea359a56e..421fa4f34b 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 817df83b6f..30cc1dc7c9 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
@@ -2460,6 +2464,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 8073c87ef4..c14ecf0792 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
@@ -2430,6 +2432,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 eea359a56e..421fa4f34b 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 aac7df1b9c..8a8cd2fbf3 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
@@ -2427,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/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index eea359a56e..421fa4f34b 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 0cde20d416..b4c7658329 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
@@ -2570,6 +2572,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 745319ed5c..2db0b41152 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 aa2ccd7777..d67359a267 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
@@ -2482,6 +2486,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 69ea71b18c..2af1d79de7 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
@@ -2438,6 +2442,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 8d186c3ceb..c2e52cf10a 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
@@ -2542,6 +2544,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] 45+ messages in thread

* [PATCH 32/35] Linux: Move timer_getoverrun from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (30 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 31/35] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 33/35] Linux: Move timer_gettime " Florian Weimer
                   ` (3 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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 +
 .../unix/sysv/linux/mips/mips64/librt.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 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 -
 78 files changed, 107 insertions(+), 94 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 2d0ad75f69..2c386da431 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 573415ef3b..af1cd38302 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -124,6 +124,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 c4b0749b3f..07e7aa7cb7 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
@@ -2531,6 +2532,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 3b1b10870c..44dfa719d1 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
@@ -2627,6 +2629,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 f3b60500e8..af6b26565d 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
@@ -2290,6 +2291,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 e50811516d..0792cf7e31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -355,6 +355,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
@@ -2273,6 +2274,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 f9c27d7913..b4895847aa 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,4 +1,3 @@
-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 22793bf139..efface2982 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -352,6 +352,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
@@ -2270,6 +2271,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 f9c27d7913..b4895847aa 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,4 +1,3 @@
-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 20c8d77ad1..bc37dc3577 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
@@ -2474,6 +2475,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 19de53f9ad..e1fdee6b16 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,3 +1,2 @@
-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 5ec5d10912..fddc79b9c5 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
@@ -2427,6 +2428,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 421fa4f34b..22e5dd0ec9 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 231b2601a3..8db3a38d21 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
@@ -2611,6 +2612,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 421fa4f34b..22e5dd0ec9 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 6673c5f715..c9cd0370c5 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
@@ -2465,6 +2467,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 5a614614ff..d88486ac21 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -356,6 +356,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
@@ -2253,6 +2254,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 f9c27d7913..b4895847aa 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,4 +1,3 @@
-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 f535986d22..3ed327327c 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
@@ -2554,6 +2555,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 421fa4f34b..22e5dd0ec9 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 b388529f33..8645e96419 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
@@ -2525,6 +2526,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 2a70b5df18..f32831ffaf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1,3 +1,2 @@
-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 e7a54683bd..c3e9839ef8 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
@@ -2522,6 +2523,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 2a70b5df18..f32831ffaf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1,3 +1,2 @@
-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 f626859e72..ee96a63a6e 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
@@ -2519,6 +2520,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 00fd77bbab..a92565949e 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 2857d72362..91ed2f20bb 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
@@ -2517,6 +2518,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 00fd77bbab..a92565949e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index d69903a236..75f1c4eac0 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
@@ -2525,6 +2526,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index cea7a13c44..e9710b4079 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
@@ -2519,6 +2520,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index fc8f4b2a34..a8d3150c9f 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
@@ -2564,6 +2565,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 926b8661b7..d874b0cfee 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,3 +1,2 @@
-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 3a3453029b..7a91e15100 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
@@ -2581,6 +2582,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 421fa4f34b..22e5dd0ec9 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 2ba21f757a..948c535117 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
@@ -2614,6 +2615,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 66694044a4..71b1ccd398 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
@@ -2429,6 +2431,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 7ca6196a98..e32bd31860 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
@@ -2727,6 +2728,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 bef6b3bffe..c9f803d38c 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
@@ -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/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 16c290c4e4..86f2c9c940 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
@@ -2492,6 +2493,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 74afe6a900..18bda14ede 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
@@ -2579,6 +2580,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 421fa4f34b..22e5dd0ec9 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 30cc1dc7c9..fcf90947ab 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
@@ -2466,6 +2468,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 c14ecf0792..de7372052a 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
@@ -2434,6 +2435,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 421fa4f34b..22e5dd0ec9 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 8a8cd2fbf3..65fe13865a 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
@@ -2431,6 +2432,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 421fa4f34b..22e5dd0ec9 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 b4c7658329..36b056d6b1 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
@@ -2574,6 +2575,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 2db0b41152..b0c70d8b2a 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 d67359a267..2a69656050 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
@@ -2488,6 +2490,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 2af1d79de7..0fc491c64d 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
@@ -2444,6 +2446,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 c2e52cf10a..a2d178081e 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
@@ -2546,6 +2547,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] 45+ messages in thread

* [PATCH 33/35] Linux: Move timer_gettime from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (31 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 32/35] Linux: Move timer_getoverrun " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 34/35] Linux: Move timer_settime " Florian Weimer
                   ` (2 subsequent siblings)
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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.
---
 include/time.h                                |  6 +-
 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        |  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   |  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         |  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     |  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 +
 .../unix/sysv/linux/mips/mips64/librt.abilist |  1 -
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 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     |  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 |  2 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  1 -
 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    |  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    |  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       | 60 ++++++++++++++++---
 .../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 -
 78 files changed, 131 insertions(+), 99 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 4372bfbd96..92a81b858f 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 2c386da431..3d168f9dc0 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 af1cd38302..27b4b9ec5b 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -125,6 +125,7 @@ libc {
     timer_create;
     timer_delete;
     timer_getoverrun;
+    timer_gettime;
   }
   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 07e7aa7cb7..132bc7fc1f 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
@@ -2533,6 +2534,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 44dfa719d1..6dfefb451f 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
@@ -2630,6 +2632,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 af6b26565d..bd33035c3e 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
@@ -2292,6 +2293,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 0792cf7e31..a94a299962 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -356,6 +356,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
@@ -2275,6 +2276,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 b4895847aa..b0906ea08a 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.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 efface2982..c6718d3a74 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -353,6 +353,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
@@ -2272,6 +2273,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 b4895847aa..b0906ea08a 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.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 bc37dc3577..dc7aadc27b 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
@@ -2476,6 +2477,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 e1fdee6b16..c3573b2d9e 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1,2 +1 @@
-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 fddc79b9c5..55ed375cf6 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
@@ -2429,6 +2430,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 22e5dd0ec9..57ce681936 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_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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 8db3a38d21..8299b919d7 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
@@ -2613,6 +2614,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 22e5dd0ec9..57ce681936 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_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/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 c9cd0370c5..b7c70a41d3 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
@@ -2468,6 +2470,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 d88486ac21..921633dd5b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -357,6 +357,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
@@ -2255,6 +2256,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 b4895847aa..b0906ea08a 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.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 3ed327327c..1609ab1971 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
@@ -2556,6 +2557,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 22e5dd0ec9..57ce681936 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_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/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 8645e96419..88dfdcf78e 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
@@ -2527,6 +2528,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 f32831ffaf..8f8901c872 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_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 c3e9839ef8..0b2dd534d4 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
@@ -2524,6 +2525,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 f32831ffaf..8f8901c872 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_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 ee96a63a6e..75e7671aee 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
@@ -2521,6 +2522,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 a92565949e..406120e1d8 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_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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 91ed2f20bb..a1a934c115 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
@@ -2519,6 +2520,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index a92565949e..406120e1d8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 75f1c4eac0..6e8f069a52 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
@@ -2527,6 +2528,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index e9710b4079..a6ad507d9e 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
@@ -2521,6 +2522,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index a8d3150c9f..4ece38246a 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
@@ -2566,6 +2567,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 d874b0cfee..d2298d7d44 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1,2 +1 @@
-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 7a91e15100..43fa1ce5a8 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
@@ -2583,6 +2584,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 22e5dd0ec9..57ce681936 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_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/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 948c535117..53a23d406a 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
@@ -2616,6 +2617,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 71b1ccd398..2c97b206fd 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
@@ -2432,6 +2434,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 e32bd31860..c43d39328d 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
@@ -2729,6 +2730,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 c9f803d38c..2a26211fda 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
@@ -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/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 86f2c9c940..73119b554b 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
@@ -2494,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/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 18bda14ede..16c3fc2e8c 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
@@ -2581,6 +2582,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 22e5dd0ec9..57ce681936 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_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/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 fcf90947ab..2a04b9d2d9 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
@@ -2469,6 +2471,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 de7372052a..fa4a56bedc 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
@@ -2436,6 +2437,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 22e5dd0ec9..57ce681936 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_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/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 65fe13865a..928fb80b5d 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
@@ -2433,6 +2434,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 22e5dd0ec9..57ce681936 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_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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 36b056d6b1..9fae206d63 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
@@ -2576,6 +2577,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 b0c70d8b2a..e97dcb5e2a 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_gettime F
 GLIBC_2.2 timer_settime F
 GLIBC_2.3 __librt_version_placeholder F
 GLIBC_2.3.4 __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 2a69656050..765fed310f 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
@@ -2491,6 +2493,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..099835b6bd 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)
 {
   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,18 @@ __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_def (__timer_gettime64)
 
 int
 __timer_gettime (timer_t timerid, struct itimerspec *value)
@@ -63,5 +71,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 0fc491c64d..ee6ede5ec0 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
@@ -2447,6 +2449,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 a2d178081e..a37522d210 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
@@ -2548,6 +2549,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] 45+ messages in thread

* [PATCH 34/35] Linux: Move timer_settime from librt to libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (32 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 33/35] Linux: Move timer_gettime " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-03 23:17 ` [PATCH 35/35] Linux: Cleanups after librt move Florian Weimer
  2021-06-15 20:18 ` [PATCH 00/35] Linux: Move librt into libc Florian Weimer
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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.

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              | 10 +++
 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   |  2 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |  2 +-
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |  2 +-
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  2 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |  2 +-
 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/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     |  2 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |  2 +-
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  2 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |  2 +-
 .../sysv/linux/microblaze/be/libc.abilist     |  2 +
 .../sysv/linux/microblaze/be/librt.abilist    |  2 +-
 .../sysv/linux/microblaze/le/libc.abilist     |  2 +
 .../sysv/linux/microblaze/le/librt.abilist    |  2 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  2 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |  2 +-
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  2 +
 .../unix/sysv/linux/mips/mips64/librt.abilist |  2 +-
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  2 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  2 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  2 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |  2 +-
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  2 +
 .../linux/powerpc/powerpc32/librt.abilist     |  2 +-
 .../powerpc/powerpc32/nofpu/libc.abilist      |  2 +
 .../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 |  2 +
 .../sysv/linux/s390/s390-32/librt.abilist     |  2 +-
 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    |  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/librt-compat.c  |  2 +-
 .../sysv/linux/sparc/sparc32/libc.abilist     |  2 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |  2 +-
 .../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       | 70 +++++++++++++++----
 .../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 +-
 83 files changed, 222 insertions(+), 184 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 92a81b858f..447e0d29eb 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 3d168f9dc0..a41bdb5728 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 27b4b9ec5b..c0ae7d9b4d 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -126,6 +126,7 @@ libc {
     timer_delete;
     timer_getoverrun;
     timer_gettime;
+    timer_settime;
   }
   GLIBC_2.3.4 {
     sched_getaffinity; sched_setaffinity;
@@ -211,6 +212,15 @@ libc {
   }
 }
 
+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;
+  }
+}
+
 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 132bc7fc1f..546fc700d8 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
@@ -2535,6 +2536,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 6dfefb451f..875d7a2a27 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
@@ -2633,6 +2635,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 bd33035c3e..b29233eb1c 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
@@ -2294,6 +2295,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 a94a299962..e5abc6923e 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -357,6 +357,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
@@ -2277,6 +2278,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 b0906ea08a..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,2 +1,2 @@
-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 c6718d3a74..a34202d426 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -354,6 +354,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
@@ -2274,6 +2275,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 b0906ea08a..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,2 +1,2 @@
-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 dc7aadc27b..b064054694 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
@@ -2478,6 +2479,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 c3573b2d9e..1a55315b87 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -1 +1 @@
-GLIBC_2.29 timer_settime 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 55ed375cf6..c4542690e8 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
@@ -2431,6 +2432,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -1,5 +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.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 8299b919d7..5ab56fc743 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
@@ -2615,6 +2616,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -1,5 +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.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 b7c70a41d3..1b991555c4 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
@@ -2471,6 +2473,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 921633dd5b..21598ecb8d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -358,6 +358,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
@@ -2257,6 +2258,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 b0906ea08a..0010b34d5c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,2 +1,2 @@
-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 1609ab1971..76284f00a8 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
@@ -2558,6 +2559,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -1,5 +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.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 88dfdcf78e..4aba997bf0 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
@@ -2529,6 +2530,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 8f8901c872..825b445ef7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -1 +1 @@
-GLIBC_2.18 timer_settime 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 0b2dd534d4..d61b04b3d6 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
@@ -2526,6 +2527,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 8f8901c872..825b445ef7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -1 +1 @@
-GLIBC_2.18 timer_settime 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 75e7671aee..d214e0a486 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
@@ -2523,6 +2524,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 406120e1d8..a7f1518c0b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index a1a934c115..c7c7064f67 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
@@ -2521,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/mips/mips64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 406120e1d8..a7f1518c0b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/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/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 6e8f069a52..81665dd457 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
@@ -2529,6 +2530,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index a6ad507d9e..a576318238 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
@@ -2523,6 +2524,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 4ece38246a..1ecf6d5f0e 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
@@ -2568,6 +2569,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 d2298d7d44..834a4dcc7a 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -1 +1 @@
-GLIBC_2.21 timer_settime 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 43fa1ce5a8..fc1df8e60b 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
@@ -2585,6 +2586,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,5 +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.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 53a23d406a..3e18adf71c 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
@@ -2618,6 +2619,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 2c97b206fd..b2ab0f68a3 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
@@ -2435,6 +2437,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 c43d39328d..0e01094c4e 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
@@ -2731,6 +2732,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 2a26211fda..78c47b3f4e 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
@@ -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/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 73119b554b..7d93424d41 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
@@ -2496,6 +2497,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 16c3fc2e8c..552cc533eb 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
@@ -2583,6 +2584,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -1,5 +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.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 2a04b9d2d9..18c9a9db16 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
@@ -2472,6 +2474,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 fa4a56bedc..5ebdf78494 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
@@ -2438,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/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -1,5 +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.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 928fb80b5d..6994abc772 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
@@ -2435,6 +2436,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 57ce681936..6d24ce527d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -1,5 +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.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 9fae206d63..f3b548fdcf 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
@@ -2578,6 +2579,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 e97dcb5e2a..7ff1ca83b1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -1,5 +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 __librt_version_placeholder 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/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 765fed310f..4638f29455 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
@@ -2494,6 +2496,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..15a3c0fefa 100644
--- a/sysdeps/unix/sysv/linux/timer_settime.c
+++ b/sysdeps/unix/sysv/linux/timer_settime.c
@@ -22,7 +22,9 @@
 #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,
                    const struct __itimerspec64 *value,
@@ -30,19 +32,19 @@ __timer_settime64 (timer_t timerid, int flags,
 {
   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,17 @@ __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_def (__timer_settime64)
 
 int
 __timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
@@ -89,5 +97,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 ee6ede5ec0..29f9c73901 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
@@ -2450,6 +2452,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 a37522d210..c5c0a2a843 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
@@ -2550,6 +2551,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] 45+ messages in thread

* [PATCH 35/35] Linux: Cleanups after librt move
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (33 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 34/35] Linux: Move timer_settime " Florian Weimer
@ 2021-06-03 23:17 ` Florian Weimer
  2021-06-15 20:18 ` [PATCH 00/35] Linux: Move librt into libc Florian Weimer
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-03 23:17 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 e9788d3d4f..f83e7fe757 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1181,7 +1181,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
 				  libc.so \
 				  elf/ld.so \
 				  math/libm.so \
-				  rt/librt.so \
 				  dlfcn/libdl.so \
 				  resolv/libresolv.so \
 		       )
@@ -1194,6 +1193,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 f7d7a2c7e2..9346115487 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -532,15 +532,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 a41bdb5728..dca20f050d 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 \
@@ -87,6 +92,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)
@@ -94,5 +100,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 634456d489..bdee61611c 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 e4690a7bc4..a5d0099d9a 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 c0ae7d9b4d..d1ac5c4207 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -201,12 +201,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] 45+ messages in thread

* Re: [PATCH 00/35] Linux: Move librt into libc
  2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
                   ` (34 preceding siblings ...)
  2021-06-03 23:17 ` [PATCH 35/35] Linux: Cleanups after librt move Florian Weimer
@ 2021-06-15 20:18 ` Florian Weimer
  35 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-15 20:18 UTC (permalink / raw)
  To: Florian Weimer via Libc-alpha

* Florian Weimer via Libc-alpha:

> This series moves librt into libc.
>
> Two functions, shm_open and shm_unlink, are also moved on Hurd.  The
> rest is Linux only.
>
> There is some odd stuff going on with 64-bit off_t ABIs with the aio_*
> functions.  I tried to make things a little bit more consistent.
>
> mq_notify and timer_create can be simplfied a bit because the fork
> handler can be called directly.
>
> For timer_create MIPS N64 is an outlier, so I had to introduce
> TIMER_T_WAS_INT_COMPAT to flag those 64-bit architectures that underwent
> the int → timer_t transition.
>
> Tested on i686-linux-gnu and x86_64-linux-gnu.  Built with
> build-many-glibcs.py.

I'm going to repost this series later this week, rebased on the current
development branch.

There are some non-trivial conflicts with the time64 work.

Thanks,
Florian


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

* Re: [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile
  2021-06-03 23:14 ` [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
@ 2021-06-17 11:05   ` Adhemerval Zanella
  0 siblings, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 11:05 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha

LGTM, thanks.

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

On 03/06/2021 20:14, Florian Weimer via Libc-alpha wrote:
> ---
>  rt/Makefile | 46 ++++++++++++++++++++++++++++++++--------------
>  rt/Versions | 45 +++++++++++++++++++++++++++++++++------------
>  2 files changed, 65 insertions(+), 26 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 97c9bbd9de..d19314b7dc 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;
> 

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

* Re: [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC
  2021-06-03 23:14 ` [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
@ 2021-06-17 11:07   ` Adhemerval Zanella
  2021-06-17 12:19     ` Florian Weimer
  0 siblings, 1 reply; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 11:07 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:14, Florian Weimer via Libc-alpha wrote:
> The variable name was incorrect, and the existing librt-routines
> variable needs to be augmented (not assigned) in rt/Makefile.

LGTM, thanks.  Is this cause any build issue? I am curious why we haven't
see it before.

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 c3496452b6..6a334fa296 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -1330,7 +1330,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 d19314b7dc..baec51b40a 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 \
> 

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

* Re: [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version
  2021-06-03 23:15 ` [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version Florian Weimer
@ 2021-06-17 11:08   ` Adhemerval Zanella
  0 siblings, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 11:08 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> Result of: git mv -f sysdeps/posix/shm_open.c rt
> and manual removal of the _POSIX_MAPPED_FILES preprocessor condition.

LGTM, thanks.

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 */
> 

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

* Re: [PATCH 04/35] rt: Replace generic stub of shm_unlink with the posix version
  2021-06-03 23:15 ` [PATCH 04/35] rt: Replace generic stub of shm_unlink " Florian Weimer
@ 2021-06-17 11:08   ` Adhemerval Zanella
  0 siblings, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 11:08 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> Result of: git mv -f sysdeps/posix/shm_unlink.c rt
> and manual removal of the _POSIX_MAPPED_FILES preprocessor condition.

LGTM, thanks.

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
> 

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

* Re: [PATCH 05/35] rt: Move shm_open into libc
  2021-06-03 23:15 ` [PATCH 05/35] rt: Move shm_open into libc Florian Weimer
@ 2021-06-17 11:12   ` Adhemerval Zanella
  2021-06-17 12:25   ` Adhemerval Zanella
  1 sibling, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 11:12 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> 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.

LGTM, thanks.

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 ++
>  .../unix/sysv/linux/mips/mips64/librt.abilist   |  1 -
>  .../sysv/linux/mips/mips64/n32/libc.abilist     |  2 ++
>  .../sysv/linux/mips/mips64/n64/libc.abilist     |  2 ++
>  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 -
>  66 files changed, 86 insertions(+), 40 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index baec51b40a..0628ae8aa8 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 \

Ok.

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

Ok.

> 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

Ok.

> 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 bee807a6f8..11a93b4f47 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
> @@ -2463,6 +2464,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 43dd600039..622f5ecdb1 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
> @@ -2556,6 +2557,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 033ed08877..0c7b210b97 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
> @@ -2222,6 +2223,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 f66ee7aab1..855501dd12 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -319,6 +319,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
> @@ -2023,6 +2024,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -25,7 +25,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 3798b32830..6bdb09d974 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -316,6 +316,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
> @@ -2020,6 +2021,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -25,7 +25,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 ba53b61ea6..9188a21281 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
> @@ -2406,6 +2407,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 c6690ef7c1..31482a39b6 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 9783504c93..038a2b432e 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
> @@ -2360,6 +2361,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 bb03781dcc..fc899622c3 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 c223c360ff..113202ad27 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
> @@ -2544,6 +2545,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 bb03781dcc..fc899622c3 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 ea2be9ead2..7b2e27901a 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
> @@ -2396,6 +2397,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 3cb4279b41..9544632fa0 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -320,6 +320,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
> @@ -2003,6 +2004,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -25,7 +25,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 94a718ff58..0dbccbd651 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
> @@ -2487,6 +2488,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 bb03781dcc..fc899622c3 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 5823bf18ef..33c00287a5 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
> @@ -2457,6 +2458,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 889dfbc0ee..4fd9af2b2d 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 723c4bcb09..f0a3bd844b 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
> @@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 889dfbc0ee..4fd9af2b2d 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 f67da8f37a..cfb82eb1b9 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
> @@ -2452,6 +2453,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 1539c1cef9..e62ed45d14 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 e44a6be8aa..a00a18a8bb 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
> @@ -2450,6 +2451,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> index 1539c1cef9..e62ed45d14 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 21cbe39166..22f37a4d5e 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
> @@ -2458,6 +2459,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index a271342813..5df30910b8 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
> @@ -2452,6 +2453,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 9429209215..5448a51818 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
> @@ -2496,6 +2497,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 b4ae7a2dc2..77170f30d8 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 eaca8e4b0c..64d8eecd31 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
> @@ -2514,6 +2515,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 bb03781dcc..fc899622c3 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 c754a181da..14b5eb792a 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
> @@ -2547,6 +2548,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 98bd6bea39..6fc6134b68 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
> @@ -2360,6 +2361,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 d27f7448ed..1bfa23792e 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
> @@ -2659,6 +2660,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 33c9f98bf5..89d2efa8c3 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
> @@ -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/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 9902603cd4..1d5ed0960f 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
> @@ -2424,6 +2425,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 963e27571d..4b7c3ddda8 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
> @@ -2512,6 +2513,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 bb03781dcc..fc899622c3 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 17c56a2658..da934580c3 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
> @@ -2397,6 +2398,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 456abfb5bb..eca39dbda8 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
> @@ -2367,6 +2368,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 bb03781dcc..fc899622c3 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 45e59f1821..662e99dec5 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
> @@ -2364,6 +2365,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 bb03781dcc..fc899622c3 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 734e1f38b6..749ea6eb02 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
> @@ -2505,6 +2506,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 38f0aad791..355a98faa0 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 9edf5ff234..6875623afc 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
> @@ -2417,6 +2418,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 bc8535fbed..c79b6c1006 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
> @@ -2375,6 +2376,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 669cc664f5..bf02471db3 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
> @@ -2478,6 +2479,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
> 

Ok.

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

* Re: [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC
  2021-06-17 11:07   ` Adhemerval Zanella
@ 2021-06-17 12:19     ` Florian Weimer
  0 siblings, 0 replies; 45+ messages in thread
From: Florian Weimer @ 2021-06-17 12:19 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha

* Adhemerval Zanella:

> On 03/06/2021 20:14, Florian Weimer via Libc-alpha wrote:
>> The variable name was incorrect, and the existing librt-routines
>> variable needs to be augmented (not assigned) in rt/Makefile.
>
> LGTM, thanks.  Is this cause any build issue? I am curious why we haven't
> see it before.

It's relevant to the subsequent changes.  librt-routines-var wasn't
really used before.

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

Thanks,
Florian


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

* Re: [PATCH 05/35] rt: Move shm_open into libc
  2021-06-03 23:15 ` [PATCH 05/35] rt: Move shm_open into libc Florian Weimer
  2021-06-17 11:12   ` Adhemerval Zanella
@ 2021-06-17 12:25   ` Adhemerval Zanella
  1 sibling, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 12:25 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> 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.

LGTM, thanks.

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 ++
>  .../unix/sysv/linux/mips/mips64/librt.abilist   |  1 -
>  .../sysv/linux/mips/mips64/n32/libc.abilist     |  2 ++
>  .../sysv/linux/mips/mips64/n64/libc.abilist     |  2 ++
>  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 -
>  66 files changed, 86 insertions(+), 40 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index baec51b40a..0628ae8aa8 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 bee807a6f8..11a93b4f47 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
> @@ -2463,6 +2464,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 43dd600039..622f5ecdb1 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
> @@ -2556,6 +2557,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 033ed08877..0c7b210b97 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
> @@ -2222,6 +2223,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 f66ee7aab1..855501dd12 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -319,6 +319,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
> @@ -2023,6 +2024,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -25,7 +25,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 3798b32830..6bdb09d974 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -316,6 +316,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
> @@ -2020,6 +2021,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -25,7 +25,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 ba53b61ea6..9188a21281 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
> @@ -2406,6 +2407,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 c6690ef7c1..31482a39b6 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 9783504c93..038a2b432e 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
> @@ -2360,6 +2361,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 bb03781dcc..fc899622c3 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 c223c360ff..113202ad27 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
> @@ -2544,6 +2545,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 bb03781dcc..fc899622c3 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 ea2be9ead2..7b2e27901a 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
> @@ -2396,6 +2397,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 3cb4279b41..9544632fa0 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -320,6 +320,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
> @@ -2003,6 +2004,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 3c0647b251..fc89b71b2b 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -25,7 +25,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 94a718ff58..0dbccbd651 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
> @@ -2487,6 +2488,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 bb03781dcc..fc899622c3 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 5823bf18ef..33c00287a5 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
> @@ -2457,6 +2458,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 889dfbc0ee..4fd9af2b2d 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 723c4bcb09..f0a3bd844b 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
> @@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 889dfbc0ee..4fd9af2b2d 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 f67da8f37a..cfb82eb1b9 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
> @@ -2452,6 +2453,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 1539c1cef9..e62ed45d14 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 e44a6be8aa..a00a18a8bb 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
> @@ -2450,6 +2451,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> index 1539c1cef9..e62ed45d14 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 21cbe39166..22f37a4d5e 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
> @@ -2458,6 +2459,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index a271342813..5df30910b8 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
> @@ -2452,6 +2453,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 9429209215..5448a51818 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
> @@ -2496,6 +2497,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 b4ae7a2dc2..77170f30d8 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 eaca8e4b0c..64d8eecd31 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
> @@ -2514,6 +2515,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 bb03781dcc..fc899622c3 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 c754a181da..14b5eb792a 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
> @@ -2547,6 +2548,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 98bd6bea39..6fc6134b68 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
> @@ -2360,6 +2361,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 d27f7448ed..1bfa23792e 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
> @@ -2659,6 +2660,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 33c9f98bf5..89d2efa8c3 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
> @@ -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/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 9902603cd4..1d5ed0960f 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
> @@ -2424,6 +2425,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 963e27571d..4b7c3ddda8 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
> @@ -2512,6 +2513,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 bb03781dcc..fc899622c3 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 17c56a2658..da934580c3 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
> @@ -2397,6 +2398,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 456abfb5bb..eca39dbda8 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
> @@ -2367,6 +2368,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 bb03781dcc..fc899622c3 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 45e59f1821..662e99dec5 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
> @@ -2364,6 +2365,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 bb03781dcc..fc899622c3 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 734e1f38b6..749ea6eb02 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
> @@ -2505,6 +2506,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 38f0aad791..355a98faa0 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 9edf5ff234..6875623afc 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
> @@ -2417,6 +2418,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 bc8535fbed..c79b6c1006 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
> @@ -2375,6 +2376,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 669cc664f5..bf02471db3 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
> @@ -2478,6 +2479,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
> 

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

* Re: [PATCH 06/35] rt: Move shm_unlink into libc
  2021-06-03 23:15 ` [PATCH 06/35] rt: Move shm_unlink " Florian Weimer
@ 2021-06-17 18:00   ` Adhemerval Zanella
  0 siblings, 0 replies; 45+ messages in thread
From: Adhemerval Zanella @ 2021-06-17 18:00 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> 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.

LGTM, thanks.

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/librt.abilist      |  1 -
>  sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist   |  2 ++
>  sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist   |  2 ++
>  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 -
>  66 files changed, 77 insertions(+), 34 deletions(-)
> 
> diff --git a/rt/Makefile b/rt/Makefile
> index 0628ae8aa8..e4ef06a6c5 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 \

Ok.

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

Ok.

> 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

Ok.

> 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 11a93b4f47..0561deac68 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
> @@ -2465,6 +2466,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 622f5ecdb1..cabce7f1ca 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
> @@ -2558,6 +2559,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 0c7b210b97..ba1304fb27 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
> @@ -2224,6 +2225,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 855501dd12..7f828e63e5 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -320,6 +320,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
> @@ -2025,6 +2026,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 fc89b71b2b..126250a101 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
> @@ -25,7 +25,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 6bdb09d974..9f732ace57 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -317,6 +317,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
> @@ -2022,6 +2023,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 fc89b71b2b..126250a101 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
> @@ -25,7 +25,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 9188a21281..2894e35611 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
> @@ -2408,6 +2409,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 31482a39b6..0eeb9046d1 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 038a2b432e..8f7c22c85c 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
> @@ -2362,6 +2363,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 fc899622c3..065f613969 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 113202ad27..b238823ad9 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
> @@ -2546,6 +2547,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 fc899622c3..065f613969 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 7b2e27901a..e46802188e 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
> @@ -2398,6 +2399,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 9544632fa0..4c7be2d991 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -321,6 +321,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
> @@ -2005,6 +2006,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 fc89b71b2b..126250a101 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
> @@ -25,7 +25,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 0dbccbd651..a3bff03a44 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
> @@ -2489,6 +2490,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 fc899622c3..065f613969 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 33c00287a5..967ac92bea 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
> @@ -2459,6 +2460,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 4fd9af2b2d..451966eab1 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 f0a3bd844b..b193aa15c7 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
> @@ -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/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
> index 4fd9af2b2d..451966eab1 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 cfb82eb1b9..ef44bc1731 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
> @@ -2454,6 +2455,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 e62ed45d14..2c7d661e56 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 a00a18a8bb..c3b28b1a34 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
> @@ -2452,6 +2453,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/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> index e62ed45d14..2c7d661e56 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/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/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 22f37a4d5e..f47a436839 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
> @@ -2460,6 +2461,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/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 5df30910b8..11f8b90995 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
> @@ -2454,6 +2455,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/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 5448a51818..68d6138627 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
> @@ -2498,6 +2499,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 77170f30d8..5865026423 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 64d8eecd31..134bdda2cb 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
> @@ -2516,6 +2517,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 fc899622c3..065f613969 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 14b5eb792a..778e34aab2 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
> @@ -2549,6 +2550,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 6fc6134b68..083831b889 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
> @@ -2362,6 +2363,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 1bfa23792e..0d56d2a9f2 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
> @@ -2661,6 +2662,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 89d2efa8c3..a6e7c7c968 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
> @@ -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/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 1d5ed0960f..2bbb45524d 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
> @@ -2426,6 +2427,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 4b7c3ddda8..a9fd5ae173 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
> @@ -2514,6 +2515,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 fc899622c3..065f613969 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 da934580c3..64b72211aa 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
> @@ -2399,6 +2400,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 eca39dbda8..38aa765be4 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
> @@ -2369,6 +2370,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 fc899622c3..065f613969 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 662e99dec5..d31fe21e3f 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
> @@ -2366,6 +2367,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 fc899622c3..065f613969 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 749ea6eb02..84b73842aa 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
> @@ -2507,6 +2508,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 355a98faa0..2c5e7950b7 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 6875623afc..4af8b9a1eb 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
> @@ -2419,6 +2420,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 c79b6c1006..3c482047f7 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
> @@ -2377,6 +2378,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 bf02471db3..302b0d52e2 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
> @@ -2480,6 +2481,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
> 

Ok.

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

end of thread, other threads:[~2021-06-17 18:00 UTC | newest]

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

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