[23/34] Linux: Move mq_notify from librt to libc

Message ID 527ae04852e09b47f6d8bef8a7bdb9c11f175fd4.1623956057.git.fweimer@redhat.com
State Committed
Delegated to: Adhemerval Zanella Netto
Headers
Series Move librt into libc |

Checks

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

Commit Message

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

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

Comments

Adhemerval Zanella June 24, 2021, 2:05 p.m. UTC | #1
On 17/06/2021 15:58, Florian Weimer via Libc-alpha wrote:
> The symbol was moved using scripts/move-symbol-to-libc.py.
> 
> An explicit call from fork into the mq_notify implementation replaces
> the previous use of pthread_atfork.


LGTM, thanks. Some minor nits below.

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

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

Ok.

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

Ok.

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

Ok.

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

Ok.

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

Ok.

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

Ok.

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

Ok.

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

No need the extra cast here.

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

Use __glibc_likely.

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

No need the casts here.

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

Ok.

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

Ok.

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

Ok.
  
Florian Weimer June 25, 2021, 11:37 a.m. UTC | #2
* Adhemerval Zanella:

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

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

Thanks,
Florian
  

Patch

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