diff mbox series

[v3,28/37] nptl: Move rwlock functions with forwarders into libc

Message ID e3a412c6aab7f7a6bc7da4fee217fb473b5355c6.1615914632.git.fweimer@redhat.com
State Superseded
Delegated to: Adhemerval Zanella Netto
Headers show
Series libpthread removal: NPTL forwarders are gone | expand

Commit Message

Florian Weimer March 16, 2021, 5:31 p.m. UTC
The forwarders were only used internally, so new symbol versions
are needed.  All symbols are moved at once because the forwarders
are no-ops if libpthread is not loaded, leading to inconsistencies
in case of a partial migration.

The symbols __pthread_rwlock_rdlock, __pthread_rwlock_unlock,
__pthread_rwlock_wrlock, pthread_rwlock_rdlock,
pthread_rwlock_unlock, pthread_rwlock_wrlock have been moved using
scripts/move-symbol-to-libc.py.
---
 nptl/Makefile                                 |  6 ++---
 nptl/Versions                                 | 20 ++++++++++++-----
 nptl/nptl-init.c                              |  3 ---
 nptl/pthreadP.h                               |  4 ++--
 nptl/pthread_rwlock_rdlock.c                  | 22 ++++++++++++++++---
 nptl/pthread_rwlock_unlock.c                  | 22 ++++++++++++++++---
 nptl/pthread_rwlock_wrlock.c                  | 22 ++++++++++++++++---
 sysdeps/nptl/libc-lockP.h                     | 21 +++++-------------
 sysdeps/nptl/pthread-functions.h              |  3 ---
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  | 12 ++++++++++
 .../sysv/linux/aarch64/libpthread.abilist     |  6 -----
 sysdeps/unix/sysv/linux/alpha/libc.abilist    | 12 ++++++++++
 .../unix/sysv/linux/alpha/libpthread.abilist  |  6 -----
 sysdeps/unix/sysv/linux/arc/libc.abilist      | 12 ++++++++++
 .../unix/sysv/linux/arc/libpthread.abilist    |  6 -----
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   | 12 ++++++++++
 .../unix/sysv/linux/arm/be/libpthread.abilist |  6 -----
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   | 12 ++++++++++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  6 -----
 sysdeps/unix/sysv/linux/csky/libc.abilist     | 12 ++++++++++
 .../unix/sysv/linux/csky/libpthread.abilist   |  6 -----
 sysdeps/unix/sysv/linux/hppa/libc.abilist     | 12 ++++++++++
 .../unix/sysv/linux/hppa/libpthread.abilist   |  6 -----
 sysdeps/unix/sysv/linux/i386/libc.abilist     | 12 ++++++++++
 .../unix/sysv/linux/i386/libpthread.abilist   |  6 -----
 sysdeps/unix/sysv/linux/ia64/libc.abilist     | 12 ++++++++++
 .../unix/sysv/linux/ia64/libpthread.abilist   |  6 -----
 .../sysv/linux/m68k/coldfire/libc.abilist     | 12 ++++++++++
 .../linux/m68k/coldfire/libpthread.abilist    |  6 -----
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  | 12 ++++++++++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  6 -----
 .../sysv/linux/microblaze/be/libc.abilist     | 12 ++++++++++
 .../linux/microblaze/be/libpthread.abilist    |  6 -----
 .../sysv/linux/microblaze/le/libc.abilist     | 12 ++++++++++
 .../linux/microblaze/le/libpthread.abilist    |  6 -----
 .../sysv/linux/mips/mips32/fpu/libc.abilist   | 12 ++++++++++
 .../sysv/linux/mips/mips32/libpthread.abilist |  6 -----
 .../sysv/linux/mips/mips32/nofpu/libc.abilist | 12 ++++++++++
 .../sysv/linux/mips/mips64/libpthread.abilist |  6 -----
 .../sysv/linux/mips/mips64/n32/libc.abilist   | 12 ++++++++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   | 12 ++++++++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    | 12 ++++++++++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  6 -----
 .../linux/powerpc/powerpc32/fpu/libc.abilist  | 12 ++++++++++
 .../powerpc/powerpc32/libpthread.abilist      |  6 -----
 .../powerpc/powerpc32/nofpu/libc.abilist      | 12 ++++++++++
 .../linux/powerpc/powerpc64/be/libc.abilist   | 12 ++++++++++
 .../powerpc/powerpc64/be/libpthread.abilist   |  6 -----
 .../linux/powerpc/powerpc64/le/libc.abilist   | 12 ++++++++++
 .../powerpc/powerpc64/le/libpthread.abilist   |  6 -----
 .../unix/sysv/linux/riscv/rv32/libc.abilist   | 12 ++++++++++
 .../sysv/linux/riscv/rv32/libpthread.abilist  |  6 -----
 .../unix/sysv/linux/riscv/rv64/libc.abilist   | 12 ++++++++++
 .../sysv/linux/riscv/rv64/libpthread.abilist  |  6 -----
 .../unix/sysv/linux/s390/s390-32/libc.abilist | 12 ++++++++++
 .../linux/s390/s390-32/libpthread.abilist     |  6 -----
 .../unix/sysv/linux/s390/s390-64/libc.abilist | 12 ++++++++++
 .../linux/s390/s390-64/libpthread.abilist     |  6 -----
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    | 12 ++++++++++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  6 -----
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    | 12 ++++++++++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  6 -----
 .../sysv/linux/sparc/sparc32/libc.abilist     | 12 ++++++++++
 .../linux/sparc/sparc32/libpthread.abilist    |  6 -----
 .../sysv/linux/sparc/sparc64/libc.abilist     | 12 ++++++++++
 .../linux/sparc/sparc64/libpthread.abilist    |  6 -----
 .../unix/sysv/linux/x86_64/64/libc.abilist    | 12 ++++++++++
 .../sysv/linux/x86_64/64/libpthread.abilist   |  6 -----
 .../unix/sysv/linux/x86_64/x32/libc.abilist   | 12 ++++++++++
 .../sysv/linux/x86_64/x32/libpthread.abilist  |  6 -----
 70 files changed, 466 insertions(+), 215 deletions(-)

Comments

Adhemerval Zanella March 25, 2021, 7:52 p.m. UTC | #1
On 16/03/2021 14:31, Florian Weimer via Libc-alpha wrote:
> The forwarders were only used internally, so new symbol versions
> are needed.  All symbols are moved at once because the forwarders
> are no-ops if libpthread is not loaded, leading to inconsistencies
> in case of a partial migration.
> 
> The symbols __pthread_rwlock_rdlock, __pthread_rwlock_unlock,
> __pthread_rwlock_wrlock, pthread_rwlock_rdlock,
> pthread_rwlock_unlock, pthread_rwlock_wrlock have been moved using
> scripts/move-symbol-to-libc.py.

LGTM, thanks (you probably want to rebase to use the compat_symbol
multiple reference support).

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

> ---
>  nptl/Makefile                                 |  6 ++---
>  nptl/Versions                                 | 20 ++++++++++++-----
>  nptl/nptl-init.c                              |  3 ---
>  nptl/pthreadP.h                               |  4 ++--
>  nptl/pthread_rwlock_rdlock.c                  | 22 ++++++++++++++++---
>  nptl/pthread_rwlock_unlock.c                  | 22 ++++++++++++++++---
>  nptl/pthread_rwlock_wrlock.c                  | 22 ++++++++++++++++---
>  sysdeps/nptl/libc-lockP.h                     | 21 +++++-------------
>  sysdeps/nptl/pthread-functions.h              |  3 ---
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  | 12 ++++++++++
>  .../sysv/linux/aarch64/libpthread.abilist     |  6 -----
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    | 12 ++++++++++
>  .../unix/sysv/linux/alpha/libpthread.abilist  |  6 -----
>  sysdeps/unix/sysv/linux/arc/libc.abilist      | 12 ++++++++++
>  .../unix/sysv/linux/arc/libpthread.abilist    |  6 -----
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   | 12 ++++++++++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  6 -----
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   | 12 ++++++++++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  6 -----
>  sysdeps/unix/sysv/linux/csky/libc.abilist     | 12 ++++++++++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  6 -----
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     | 12 ++++++++++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  6 -----
>  sysdeps/unix/sysv/linux/i386/libc.abilist     | 12 ++++++++++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  6 -----
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     | 12 ++++++++++
>  .../unix/sysv/linux/ia64/libpthread.abilist   |  6 -----
>  .../sysv/linux/m68k/coldfire/libc.abilist     | 12 ++++++++++
>  .../linux/m68k/coldfire/libpthread.abilist    |  6 -----
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  | 12 ++++++++++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  6 -----
>  .../sysv/linux/microblaze/be/libc.abilist     | 12 ++++++++++
>  .../linux/microblaze/be/libpthread.abilist    |  6 -----
>  .../sysv/linux/microblaze/le/libc.abilist     | 12 ++++++++++
>  .../linux/microblaze/le/libpthread.abilist    |  6 -----
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   | 12 ++++++++++
>  .../sysv/linux/mips/mips32/libpthread.abilist |  6 -----
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist | 12 ++++++++++
>  .../sysv/linux/mips/mips64/libpthread.abilist |  6 -----
>  .../sysv/linux/mips/mips64/n32/libc.abilist   | 12 ++++++++++
>  .../sysv/linux/mips/mips64/n64/libc.abilist   | 12 ++++++++++
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    | 12 ++++++++++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  6 -----
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  | 12 ++++++++++
>  .../powerpc/powerpc32/libpthread.abilist      |  6 -----
>  .../powerpc/powerpc32/nofpu/libc.abilist      | 12 ++++++++++
>  .../linux/powerpc/powerpc64/be/libc.abilist   | 12 ++++++++++
>  .../powerpc/powerpc64/be/libpthread.abilist   |  6 -----
>  .../linux/powerpc/powerpc64/le/libc.abilist   | 12 ++++++++++
>  .../powerpc/powerpc64/le/libpthread.abilist   |  6 -----
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   | 12 ++++++++++
>  .../sysv/linux/riscv/rv32/libpthread.abilist  |  6 -----
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   | 12 ++++++++++
>  .../sysv/linux/riscv/rv64/libpthread.abilist  |  6 -----
>  .../unix/sysv/linux/s390/s390-32/libc.abilist | 12 ++++++++++
>  .../linux/s390/s390-32/libpthread.abilist     |  6 -----
>  .../unix/sysv/linux/s390/s390-64/libc.abilist | 12 ++++++++++
>  .../linux/s390/s390-64/libpthread.abilist     |  6 -----
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    | 12 ++++++++++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  6 -----
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    | 12 ++++++++++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  6 -----
>  .../sysv/linux/sparc/sparc32/libc.abilist     | 12 ++++++++++
>  .../linux/sparc/sparc32/libpthread.abilist    |  6 -----
>  .../sysv/linux/sparc/sparc64/libc.abilist     | 12 ++++++++++
>  .../linux/sparc/sparc64/libpthread.abilist    |  6 -----
>  .../unix/sysv/linux/x86_64/64/libc.abilist    | 12 ++++++++++
>  .../sysv/linux/x86_64/64/libpthread.abilist   |  6 -----
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   | 12 ++++++++++
>  .../sysv/linux/x86_64/x32/libpthread.abilist  |  6 -----
>  70 files changed, 466 insertions(+), 215 deletions(-)
> 
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 5d4276d9f9..1eca75ef35 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -84,6 +84,9 @@ routines = \
>    pthread_keys \
>    pthread_mutex_consistent \
>    pthread_once \
> +  pthread_rwlock_rdlock \
> +  pthread_rwlock_unlock \
> +  pthread_rwlock_wrlock \
>    pthread_self \
>    pthread_setcancelstate \
>    pthread_setcanceltype \
> @@ -191,13 +194,10 @@ libpthread-routines = \
>    pthread_rwlock_clockwrlock \
>    pthread_rwlock_destroy \
>    pthread_rwlock_init \
> -  pthread_rwlock_rdlock \
>    pthread_rwlock_timedrdlock \
>    pthread_rwlock_timedwrlock \
>    pthread_rwlock_tryrdlock \
>    pthread_rwlock_trywrlock \
> -  pthread_rwlock_unlock \
> -  pthread_rwlock_wrlock \
>    pthread_rwlockattr_destroy \
>    pthread_rwlockattr_getkind_np \
>    pthread_rwlockattr_getpshared \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index e93c27b083..b3feadd045 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -48,6 +48,14 @@ libc {
>    }
>    GLIBC_2.1 {
>      pthread_attr_init;
> +    pthread_rwlock_rdlock;
> +    pthread_rwlock_unlock;
> +    pthread_rwlock_wrlock;
> +  }
> +  GLIBC_2.2 {
> +    __pthread_rwlock_rdlock;
> +    __pthread_rwlock_unlock;
> +    __pthread_rwlock_wrlock;
>    }
>    GLIBC_2.2.3 {
>      pthread_getattr_np;
> @@ -96,12 +104,18 @@ libc {
>      __pthread_getspecific;
>      __pthread_key_create;
>      __pthread_once;
> +    __pthread_rwlock_rdlock;
> +    __pthread_rwlock_unlock;
> +    __pthread_rwlock_wrlock;
>      __pthread_setspecific;
>      pthread_getspecific;
>      pthread_key_create;
>      pthread_key_delete;
>      pthread_mutex_consistent;
>      pthread_once;
> +    pthread_rwlock_rdlock;
> +    pthread_rwlock_unlock;
> +    pthread_rwlock_wrlock;
>      pthread_setspecific;
>    }
>    GLIBC_PRIVATE {

Ok.

> @@ -241,11 +255,8 @@ libpthread {
>      pthread_mutexattr_settype;
>      pthread_rwlock_destroy;
>      pthread_rwlock_init;
> -    pthread_rwlock_rdlock;
>      pthread_rwlock_tryrdlock;
>      pthread_rwlock_trywrlock;
> -    pthread_rwlock_unlock;
> -    pthread_rwlock_wrlock;
>      pthread_rwlockattr_destroy;
>      pthread_rwlockattr_getkind_np;
>      pthread_rwlockattr_getpshared;
> @@ -276,11 +287,8 @@ libpthread {
>      __pread64;
>      __pthread_rwlock_destroy;
>      __pthread_rwlock_init;
> -    __pthread_rwlock_rdlock;
>      __pthread_rwlock_tryrdlock;
>      __pthread_rwlock_trywrlock;
> -    __pthread_rwlock_unlock;
> -    __pthread_rwlock_wrlock;
>      __pwrite64;
>      __res_state;
>      lseek64;

Ok.

> diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
> index cacbf045a7..0c07b46a77 100644
> --- a/nptl/nptl-init.c
> +++ b/nptl/nptl-init.c
> @@ -67,9 +67,6 @@ static const struct pthread_functions pthread_functions =
>      .ptr_pthread_mutex_init = __pthread_mutex_init,
>      .ptr_pthread_mutex_lock = __pthread_mutex_lock,
>      .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
> -    .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
> -    .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
> -    .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
>      .ptr__nptl_setxid = __nptl_setxid,
>    };
>  # define ptr_pthread_functions &pthread_functions

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 515c58039b..527e4acd4f 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -441,8 +441,10 @@ extern int __pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
>  				  __attr);
>  extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
>  extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
> +libc_hidden_proto (__pthread_rwlock_rdlock)
>  extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
>  extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
> +libc_hidden_proto (__pthread_rwlock_wrlock)
>  extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
>  extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
>  extern int __pthread_cond_broadcast (pthread_cond_t *cond);
> @@ -553,8 +555,6 @@ hidden_proto (__pthread_mutex_destroy)
>  hidden_proto (__pthread_mutex_lock)
>  hidden_proto (__pthread_mutex_trylock)
>  hidden_proto (__pthread_mutex_unlock)
> -hidden_proto (__pthread_rwlock_rdlock)
> -hidden_proto (__pthread_rwlock_wrlock)
>  hidden_proto (__pthread_rwlock_unlock)
>  hidden_proto (__pthread_testcancel)
>  hidden_proto (__pthread_mutexattr_init)

Ok.

> diff --git a/nptl/pthread_rwlock_rdlock.c b/nptl/pthread_rwlock_rdlock.c
> index 0eeee50834..6793e01e7b 100644
> --- a/nptl/pthread_rwlock_rdlock.c
> +++ b/nptl/pthread_rwlock_rdlock.c
> @@ -20,7 +20,7 @@
>  
>  /* See pthread_rwlock_common.c.  */
>  int
> -__pthread_rwlock_rdlock (pthread_rwlock_t *rwlock)
> +__pthread_rwlock_rdlock_1 (pthread_rwlock_t *rwlock)
>  {
>    LIBC_PROBE (rdlock_entry, 1, rwlock);
>  
> @@ -28,6 +28,22 @@ __pthread_rwlock_rdlock (pthread_rwlock_t *rwlock)
>    LIBC_PROBE (rdlock_acquire_read, 1, rwlock);
>    return result;
>  }
> +versioned_symbol (libc, __pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock)
>  
> -weak_alias (__pthread_rwlock_rdlock, pthread_rwlock_rdlock)
> -hidden_def (__pthread_rwlock_rdlock)
> +/* Several aliases for setting different symbol versions.  */
> +strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_2)
> +strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_3)
> +strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_4)
> +
> +versioned_symbol (libc, __pthread_rwlock_rdlock_2, pthread_rwlock_rdlock,
> +		  GLIBC_2_34);
> +#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_rdlock_3, pthread_rwlock_rdlock,
> +	       GLIBC_2_1);
> +#endif
> +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_rdlock_4, __pthread_rwlock_rdlock,
> +	       GLIBC_2_2);
> +#endif

Ok, although you might want to revise it with compat_symbol support for
multiple targets.

> diff --git a/nptl/pthread_rwlock_unlock.c b/nptl/pthread_rwlock_unlock.c
> index 356d63a045..6d0fb76afd 100644
> --- a/nptl/pthread_rwlock_unlock.c
> +++ b/nptl/pthread_rwlock_unlock.c
> @@ -27,7 +27,7 @@
>  
>  /* See pthread_rwlock_common.c for an overview.  */
>  int
> -__pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
> +__pthread_rwlock_unlock_1 (pthread_rwlock_t *rwlock)
>  {
>    LIBC_PROBE (rwlock_unlock, 1, rwlock);
>  
> @@ -43,6 +43,22 @@ __pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
>      __pthread_rwlock_rdunlock (rwlock);
>    return 0;
>  }
> +versioned_symbol (libc, __pthread_rwlock_unlock_1, __pthread_rwlock_unlock,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock)
>  
> -weak_alias (__pthread_rwlock_unlock, pthread_rwlock_unlock)
> -hidden_def (__pthread_rwlock_unlock)
> +/* Several aliases for setting different symbol versions.  */
> +strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_2)
> +strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_3)
> +strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_4)
> +
> +versioned_symbol (libc, __pthread_rwlock_unlock_2, pthread_rwlock_unlock,
> +		  GLIBC_2_34);
> +#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_unlock_3, pthread_rwlock_unlock,
> +	       GLIBC_2_1);
> +#endif
> +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_unlock_4, __pthread_rwlock_unlock,
> +	       GLIBC_2_2);
> +#endif

Same as before.

> diff --git a/nptl/pthread_rwlock_wrlock.c b/nptl/pthread_rwlock_wrlock.c
> index 98882a87e4..7b625201c5 100644
> --- a/nptl/pthread_rwlock_wrlock.c
> +++ b/nptl/pthread_rwlock_wrlock.c
> @@ -20,7 +20,7 @@
>  
>  /* See pthread_rwlock_common.c.  */
>  int
> -__pthread_rwlock_wrlock (pthread_rwlock_t *rwlock)
> +__pthread_rwlock_wrlock_1 (pthread_rwlock_t *rwlock)
>  {
>    LIBC_PROBE (wrlock_entry, 1, rwlock);
>  
> @@ -28,6 +28,22 @@ __pthread_rwlock_wrlock (pthread_rwlock_t *rwlock)
>    LIBC_PROBE (wrlock_acquire_write, 1, rwlock);
>    return result;
>  }
> +versioned_symbol (libc, __pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock,
> +		  GLIBC_2_34);
> +libc_hidden_ver (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock)
>  
> -weak_alias (__pthread_rwlock_wrlock, pthread_rwlock_wrlock)
> -hidden_def (__pthread_rwlock_wrlock)
> +/* Several aliases for setting different symbol versions.  */
> +strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_2)
> +strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_3)
> +strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_4)
> +
> +versioned_symbol (libc, __pthread_rwlock_wrlock_2, pthread_rwlock_wrlock,
> +		  GLIBC_2_34);
> +#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_wrlock_3, pthread_rwlock_wrlock,
> +	       GLIBC_2_1);
> +#endif
> +#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
> +compat_symbol (libc, __pthread_rwlock_wrlock_4, __pthread_rwlock_wrlock,
> +	       GLIBC_2_2);
> +#endif

Ditto.

> diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
> index 10a24568a9..89910560fa 100644
> --- a/sysdeps/nptl/libc-lockP.h
> +++ b/sysdeps/nptl/libc-lockP.h
> @@ -167,10 +167,8 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  # define __libc_lock_lock(NAME) \
>    __libc_maybe_call (__pthread_mutex_lock, (&(NAME)), 0)
>  #endif
> -#define __libc_rwlock_rdlock(NAME) \
> -  __libc_ptf_call (__pthread_rwlock_rdlock, (&(NAME)), 0)
> -#define __libc_rwlock_wrlock(NAME) \
> -  __libc_ptf_call (__pthread_rwlock_wrlock, (&(NAME)), 0)
> +#define __libc_rwlock_rdlock(NAME) __pthread_rwlock_rdlock (&(NAME))
> +#define __libc_rwlock_wrlock(NAME) __pthread_rwlock_wrlock (&(NAME))
>  
>  /* Try to lock the named lock variable.  */
>  #if IS_IN (libc) || IS_IN (libpthread)
> @@ -199,8 +197,7 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
>  # define __libc_lock_unlock(NAME) \
>    __libc_maybe_call (__pthread_mutex_unlock, (&(NAME)), 0)
>  #endif
> -#define __libc_rwlock_unlock(NAME) \
> -  __libc_ptf_call (__pthread_rwlock_unlock, (&(NAME)), 0)
> +#define __libc_rwlock_unlock(NAME) __pthread_rwlock_unlock (&(NAME))
>  
>  #ifdef SHARED
>  # define __rtld_lock_default_lock_recursive(lock) \
> @@ -299,15 +296,15 @@ extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
>  extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
>  
>  extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
> -
> +libc_hidden_proto (__pthread_rwlock_rdlock)
>  extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
>  
>  extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
> -
> +libc_hidden_proto (__pthread_rwlock_wrlock)
>  extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
>  
>  extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
> -
> +libc_hidden_proto (__pthread_rwlock_unlock)
>  extern int __pthread_once (pthread_once_t *__once_control,
>  			   void (*__init_routine) (void));
>  libc_hidden_proto (__pthread_once)
> @@ -333,11 +330,8 @@ weak_extern (__pthread_mutexattr_destroy)
>  weak_extern (__pthread_mutexattr_settype)
>  weak_extern (__pthread_rwlock_init)
>  weak_extern (__pthread_rwlock_destroy)
> -weak_extern (__pthread_rwlock_rdlock)
>  weak_extern (__pthread_rwlock_tryrdlock)
> -weak_extern (__pthread_rwlock_wrlock)
>  weak_extern (__pthread_rwlock_trywrlock)
> -weak_extern (__pthread_rwlock_unlock)
>  weak_extern (__pthread_initialize)
>  weak_extern (__pthread_atfork)
>  # else
> @@ -350,11 +344,8 @@ weak_extern (__pthread_atfork)
>  #  pragma weak __pthread_mutexattr_destroy
>  #  pragma weak __pthread_mutexattr_settype
>  #  pragma weak __pthread_rwlock_destroy
> -#  pragma weak __pthread_rwlock_rdlock
>  #  pragma weak __pthread_rwlock_tryrdlock
> -#  pragma weak __pthread_rwlock_wrlock
>  #  pragma weak __pthread_rwlock_trywrlock
> -#  pragma weak __pthread_rwlock_unlock
>  #  pragma weak __pthread_initialize
>  #  pragma weak __pthread_atfork
>  # endif

Ok.

> diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
> index 2d89013ff5..8535e142d5 100644
> --- a/sysdeps/nptl/pthread-functions.h
> +++ b/sysdeps/nptl/pthread-functions.h
> @@ -46,9 +46,6 @@ struct pthread_functions
>  				 const pthread_mutexattr_t *);
>    int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
>    int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
> -  int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
> -  int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
> -  int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
>    int (*ptr__nptl_setxid) (struct xid_command *);
>  };
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 991efa0044..9191b2e760 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -342,6 +342,9 @@ GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_getspecific F
>  GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_once F
> +GLIBC_2.17 __pthread_rwlock_rdlock F
> +GLIBC_2.17 __pthread_rwlock_unlock F
> +GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_setspecific F
>  GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
> @@ -1462,6 +1465,9 @@ GLIBC_2.17 pthread_mutex_init F
>  GLIBC_2.17 pthread_mutex_lock F
>  GLIBC_2.17 pthread_mutex_unlock F
>  GLIBC_2.17 pthread_once F
> +GLIBC_2.17 pthread_rwlock_rdlock F
> +GLIBC_2.17 pthread_rwlock_unlock F
> +GLIBC_2.17 pthread_rwlock_wrlock F
>  GLIBC_2.17 pthread_self F
>  GLIBC_2.17 pthread_setcancelstate F
>  GLIBC_2.17 pthread_setcanceltype F
> @@ -2193,6 +2199,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2200,4 +2209,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index 50ab959905..9a24f796de 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.17 __pthread_register_cancel F
>  GLIBC_2.17 __pthread_register_cancel_defer F
>  GLIBC_2.17 __pthread_rwlock_destroy F
>  GLIBC_2.17 __pthread_rwlock_init F
> -GLIBC_2.17 __pthread_rwlock_rdlock F
>  GLIBC_2.17 __pthread_rwlock_tryrdlock F
>  GLIBC_2.17 __pthread_rwlock_trywrlock F
> -GLIBC_2.17 __pthread_rwlock_unlock F
> -GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_unregister_cancel F
>  GLIBC_2.17 __pthread_unregister_cancel_restore F
>  GLIBC_2.17 __pwrite64 F
> @@ -113,13 +110,10 @@ GLIBC_2.17 pthread_mutexattr_setrobust_np F
>  GLIBC_2.17 pthread_mutexattr_settype F
>  GLIBC_2.17 pthread_rwlock_destroy F
>  GLIBC_2.17 pthread_rwlock_init F
> -GLIBC_2.17 pthread_rwlock_rdlock F
>  GLIBC_2.17 pthread_rwlock_timedrdlock F
>  GLIBC_2.17 pthread_rwlock_timedwrlock F
>  GLIBC_2.17 pthread_rwlock_tryrdlock F
>  GLIBC_2.17 pthread_rwlock_trywrlock F
> -GLIBC_2.17 pthread_rwlock_unlock F
> -GLIBC_2.17 pthread_rwlock_wrlock F
>  GLIBC_2.17 pthread_rwlockattr_destroy F
>  GLIBC_2.17 pthread_rwlockattr_getkind_np F
>  GLIBC_2.17 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index a1229e4a1a..71dd49d25c 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -1588,6 +1588,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1861,6 +1864,9 @@ GLIBC_2.2 __fwriting F
>  GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2274,6 +2280,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2281,6 +2290,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index 9d78d94466..a7b3fd73ab 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -120,11 +117,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index ceee863b25..38764a6746 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -331,6 +331,9 @@ GLIBC_2.32 __pthread_cleanup_routine F
>  GLIBC_2.32 __pthread_getspecific F
>  GLIBC_2.32 __pthread_key_create F
>  GLIBC_2.32 __pthread_once F
> +GLIBC_2.32 __pthread_rwlock_rdlock F
> +GLIBC_2.32 __pthread_rwlock_unlock F
> +GLIBC_2.32 __pthread_rwlock_wrlock F
>  GLIBC_2.32 __pthread_setspecific F
>  GLIBC_2.32 __pthread_unwind_next F
>  GLIBC_2.32 __ptsname_r_chk F
> @@ -1389,6 +1392,9 @@ GLIBC_2.32 pthread_mutex_init F
>  GLIBC_2.32 pthread_mutex_lock F
>  GLIBC_2.32 pthread_mutex_unlock F
>  GLIBC_2.32 pthread_once F
> +GLIBC_2.32 pthread_rwlock_rdlock F
> +GLIBC_2.32 pthread_rwlock_unlock F
> +GLIBC_2.32 pthread_rwlock_wrlock F
>  GLIBC_2.32 pthread_self F
>  GLIBC_2.32 pthread_setcancelstate F
>  GLIBC_2.32 pthread_setcanceltype F
> @@ -1953,6 +1959,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -1960,4 +1969,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> index 6fed825b25..0d8b928e6d 100644
> --- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
> @@ -24,11 +24,8 @@ GLIBC_2.32 __pthread_register_cancel F
>  GLIBC_2.32 __pthread_register_cancel_defer F
>  GLIBC_2.32 __pthread_rwlock_destroy F
>  GLIBC_2.32 __pthread_rwlock_init F
> -GLIBC_2.32 __pthread_rwlock_rdlock F
>  GLIBC_2.32 __pthread_rwlock_tryrdlock F
>  GLIBC_2.32 __pthread_rwlock_trywrlock F
> -GLIBC_2.32 __pthread_rwlock_unlock F
> -GLIBC_2.32 __pthread_rwlock_wrlock F
>  GLIBC_2.32 __pthread_unregister_cancel F
>  GLIBC_2.32 __pthread_unregister_cancel_restore F
>  GLIBC_2.32 __pwrite64 F
> @@ -130,13 +127,10 @@ GLIBC_2.32 pthread_rwlock_clockrdlock F
>  GLIBC_2.32 pthread_rwlock_clockwrlock F
>  GLIBC_2.32 pthread_rwlock_destroy F
>  GLIBC_2.32 pthread_rwlock_init F
> -GLIBC_2.32 pthread_rwlock_rdlock F
>  GLIBC_2.32 pthread_rwlock_timedrdlock F
>  GLIBC_2.32 pthread_rwlock_timedwrlock F
>  GLIBC_2.32 pthread_rwlock_tryrdlock F
>  GLIBC_2.32 pthread_rwlock_trywrlock F
> -GLIBC_2.32 pthread_rwlock_unlock F
> -GLIBC_2.32 pthread_rwlock_wrlock F
>  GLIBC_2.32 pthread_rwlockattr_destroy F
>  GLIBC_2.32 pthread_rwlockattr_getkind_np F
>  GLIBC_2.32 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 31e2de3cc2..86d971e7d2 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -161,6 +161,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -168,6 +171,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> @@ -500,6 +506,9 @@ GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_rwlock_rdlock F
> +GLIBC_2.4 __pthread_rwlock_unlock F
> +GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1567,6 +1576,9 @@ GLIBC_2.4 pthread_mutex_init F
>  GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_once F
> +GLIBC_2.4 pthread_rwlock_rdlock F
> +GLIBC_2.4 pthread_rwlock_unlock F
> +GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_self F
>  GLIBC_2.4 pthread_setcancelstate F
>  GLIBC_2.4 pthread_setcanceltype F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index 5d3859b245..833b53362d 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -59,11 +59,8 @@ GLIBC_2.4 __pthread_register_cancel F
>  GLIBC_2.4 __pthread_register_cancel_defer F
>  GLIBC_2.4 __pthread_rwlock_destroy F
>  GLIBC_2.4 __pthread_rwlock_init F
> -GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_tryrdlock F
>  GLIBC_2.4 __pthread_rwlock_trywrlock F
> -GLIBC_2.4 __pthread_rwlock_unlock F
> -GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
>  GLIBC_2.4 __pwrite64 F
> @@ -144,13 +141,10 @@ GLIBC_2.4 pthread_mutexattr_setrobust_np F
>  GLIBC_2.4 pthread_mutexattr_settype F
>  GLIBC_2.4 pthread_rwlock_destroy F
>  GLIBC_2.4 pthread_rwlock_init F
> -GLIBC_2.4 pthread_rwlock_rdlock F
>  GLIBC_2.4 pthread_rwlock_timedrdlock F
>  GLIBC_2.4 pthread_rwlock_timedwrlock F
>  GLIBC_2.4 pthread_rwlock_tryrdlock F
>  GLIBC_2.4 pthread_rwlock_trywrlock F
> -GLIBC_2.4 pthread_rwlock_unlock F
> -GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_rwlockattr_destroy F
>  GLIBC_2.4 pthread_rwlockattr_getkind_np F
>  GLIBC_2.4 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index c6f9e3dbc3..caf3f6a141 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -158,6 +158,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -165,6 +168,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
> @@ -497,6 +503,9 @@ GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_rwlock_rdlock F
> +GLIBC_2.4 __pthread_rwlock_unlock F
> +GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1564,6 +1573,9 @@ GLIBC_2.4 pthread_mutex_init F
>  GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_once F
> +GLIBC_2.4 pthread_rwlock_rdlock F
> +GLIBC_2.4 pthread_rwlock_unlock F
> +GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_self F
>  GLIBC_2.4 pthread_setcancelstate F
>  GLIBC_2.4 pthread_setcanceltype F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index 5d3859b245..833b53362d 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -59,11 +59,8 @@ GLIBC_2.4 __pthread_register_cancel F
>  GLIBC_2.4 __pthread_register_cancel_defer F
>  GLIBC_2.4 __pthread_rwlock_destroy F
>  GLIBC_2.4 __pthread_rwlock_init F
> -GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_tryrdlock F
>  GLIBC_2.4 __pthread_rwlock_trywrlock F
> -GLIBC_2.4 __pthread_rwlock_unlock F
> -GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
>  GLIBC_2.4 __pwrite64 F
> @@ -144,13 +141,10 @@ GLIBC_2.4 pthread_mutexattr_setrobust_np F
>  GLIBC_2.4 pthread_mutexattr_settype F
>  GLIBC_2.4 pthread_rwlock_destroy F
>  GLIBC_2.4 pthread_rwlock_init F
> -GLIBC_2.4 pthread_rwlock_rdlock F
>  GLIBC_2.4 pthread_rwlock_timedrdlock F
>  GLIBC_2.4 pthread_rwlock_timedwrlock F
>  GLIBC_2.4 pthread_rwlock_tryrdlock F
>  GLIBC_2.4 pthread_rwlock_trywrlock F
> -GLIBC_2.4 pthread_rwlock_unlock F
> -GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_rwlockattr_destroy F
>  GLIBC_2.4 pthread_rwlockattr_getkind_np F
>  GLIBC_2.4 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index ec7f3bde74..aeb6424389 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -335,6 +335,9 @@ GLIBC_2.29 __pthread_cleanup_routine F
>  GLIBC_2.29 __pthread_getspecific F
>  GLIBC_2.29 __pthread_key_create F
>  GLIBC_2.29 __pthread_once F
> +GLIBC_2.29 __pthread_rwlock_rdlock F
> +GLIBC_2.29 __pthread_rwlock_unlock F
> +GLIBC_2.29 __pthread_rwlock_wrlock F
>  GLIBC_2.29 __pthread_setspecific F
>  GLIBC_2.29 __pthread_unwind_next F
>  GLIBC_2.29 __ptsname_r_chk F
> @@ -1450,6 +1453,9 @@ GLIBC_2.29 pthread_mutex_init F
>  GLIBC_2.29 pthread_mutex_lock F
>  GLIBC_2.29 pthread_mutex_unlock F
>  GLIBC_2.29 pthread_once F
> +GLIBC_2.29 pthread_rwlock_rdlock F
> +GLIBC_2.29 pthread_rwlock_unlock F
> +GLIBC_2.29 pthread_rwlock_wrlock F
>  GLIBC_2.29 pthread_self F
>  GLIBC_2.29 pthread_setcancelstate F
>  GLIBC_2.29 pthread_setcanceltype F
> @@ -2137,6 +2143,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2144,4 +2153,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index cf7869867c..440c0507d1 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -24,11 +24,8 @@ GLIBC_2.29 __pthread_register_cancel F
>  GLIBC_2.29 __pthread_register_cancel_defer F
>  GLIBC_2.29 __pthread_rwlock_destroy F
>  GLIBC_2.29 __pthread_rwlock_init F
> -GLIBC_2.29 __pthread_rwlock_rdlock F
>  GLIBC_2.29 __pthread_rwlock_tryrdlock F
>  GLIBC_2.29 __pthread_rwlock_trywrlock F
> -GLIBC_2.29 __pthread_rwlock_unlock F
> -GLIBC_2.29 __pthread_rwlock_wrlock F
>  GLIBC_2.29 __pthread_unregister_cancel F
>  GLIBC_2.29 __pthread_unregister_cancel_restore F
>  GLIBC_2.29 __pwrite64 F
> @@ -125,13 +122,10 @@ GLIBC_2.29 pthread_mutexattr_setrobust_np F
>  GLIBC_2.29 pthread_mutexattr_settype F
>  GLIBC_2.29 pthread_rwlock_destroy F
>  GLIBC_2.29 pthread_rwlock_init F
> -GLIBC_2.29 pthread_rwlock_rdlock F
>  GLIBC_2.29 pthread_rwlock_timedrdlock F
>  GLIBC_2.29 pthread_rwlock_timedwrlock F
>  GLIBC_2.29 pthread_rwlock_tryrdlock F
>  GLIBC_2.29 pthread_rwlock_trywrlock F
> -GLIBC_2.29 pthread_rwlock_unlock F
> -GLIBC_2.29 pthread_rwlock_wrlock F
>  GLIBC_2.29 pthread_rwlockattr_destroy F
>  GLIBC_2.29 pthread_rwlockattr_getkind_np F
>  GLIBC_2.29 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index ebced5d8c3..e1d02058c9 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -359,6 +359,9 @@ GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1283,6 +1286,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2095,6 +2101,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2102,6 +2111,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index d0e8564302..70af59d791 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index d15479dabd..717344a690 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -1556,6 +1556,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1865,6 +1868,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2262,6 +2268,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2269,6 +2278,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index 99e53d0c49..35cc2f61c5 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -120,11 +117,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 62c8c7d461..284b7072a3 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -363,6 +363,9 @@ GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1304,6 +1307,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2127,6 +2133,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2134,6 +2143,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index ff37f3905e..2e69109cdc 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 83e8a6824f..404d16b92a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -162,6 +162,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -169,6 +172,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _Exit F
>  GLIBC_2.4 _IO_2_1_stderr_ D 0x98
> @@ -486,6 +492,9 @@ GLIBC_2.4 __pthread_cleanup_routine F
>  GLIBC_2.4 __pthread_getspecific F
>  GLIBC_2.4 __pthread_key_create F
>  GLIBC_2.4 __pthread_once F
> +GLIBC_2.4 __pthread_rwlock_rdlock F
> +GLIBC_2.4 __pthread_rwlock_unlock F
> +GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_setspecific F
>  GLIBC_2.4 __pthread_unwind_next F
>  GLIBC_2.4 __ptsname_r_chk F
> @@ -1547,6 +1556,9 @@ GLIBC_2.4 pthread_mutex_init F
>  GLIBC_2.4 pthread_mutex_lock F
>  GLIBC_2.4 pthread_mutex_unlock F
>  GLIBC_2.4 pthread_once F
> +GLIBC_2.4 pthread_rwlock_rdlock F
> +GLIBC_2.4 pthread_rwlock_unlock F
> +GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_self F
>  GLIBC_2.4 pthread_setcancelstate F
>  GLIBC_2.4 pthread_setcanceltype F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index 5d3859b245..833b53362d 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -59,11 +59,8 @@ GLIBC_2.4 __pthread_register_cancel F
>  GLIBC_2.4 __pthread_register_cancel_defer F
>  GLIBC_2.4 __pthread_rwlock_destroy F
>  GLIBC_2.4 __pthread_rwlock_init F
> -GLIBC_2.4 __pthread_rwlock_rdlock F
>  GLIBC_2.4 __pthread_rwlock_tryrdlock F
>  GLIBC_2.4 __pthread_rwlock_trywrlock F
> -GLIBC_2.4 __pthread_rwlock_unlock F
> -GLIBC_2.4 __pthread_rwlock_wrlock F
>  GLIBC_2.4 __pthread_unregister_cancel F
>  GLIBC_2.4 __pthread_unregister_cancel_restore F
>  GLIBC_2.4 __pwrite64 F
> @@ -144,13 +141,10 @@ GLIBC_2.4 pthread_mutexattr_setrobust_np F
>  GLIBC_2.4 pthread_mutexattr_settype F
>  GLIBC_2.4 pthread_rwlock_destroy F
>  GLIBC_2.4 pthread_rwlock_init F
> -GLIBC_2.4 pthread_rwlock_rdlock F
>  GLIBC_2.4 pthread_rwlock_timedrdlock F
>  GLIBC_2.4 pthread_rwlock_timedwrlock F
>  GLIBC_2.4 pthread_rwlock_tryrdlock F
>  GLIBC_2.4 pthread_rwlock_trywrlock F
> -GLIBC_2.4 pthread_rwlock_unlock F
> -GLIBC_2.4 pthread_rwlock_wrlock F
>  GLIBC_2.4 pthread_rwlockattr_destroy F
>  GLIBC_2.4 pthread_rwlockattr_getkind_np F
>  GLIBC_2.4 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index 5a81c61de7..b1ad96e072 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -1552,6 +1552,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1821,6 +1824,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2207,6 +2213,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2214,6 +2223,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index 99e53d0c49..35cc2f61c5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -120,11 +117,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 39c806db53..3e0cceae93 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -343,6 +343,9 @@ GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_getspecific F
>  GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_once F
> +GLIBC_2.18 __pthread_rwlock_rdlock F
> +GLIBC_2.18 __pthread_rwlock_unlock F
> +GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_setspecific F
>  GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
> @@ -1465,6 +1468,9 @@ GLIBC_2.18 pthread_mutex_init F
>  GLIBC_2.18 pthread_mutex_lock F
>  GLIBC_2.18 pthread_mutex_unlock F
>  GLIBC_2.18 pthread_once F
> +GLIBC_2.18 pthread_rwlock_rdlock F
> +GLIBC_2.18 pthread_rwlock_unlock F
> +GLIBC_2.18 pthread_rwlock_wrlock F
>  GLIBC_2.18 pthread_self F
>  GLIBC_2.18 pthread_setcancelstate F
>  GLIBC_2.18 pthread_setcanceltype F
> @@ -2188,6 +2194,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2195,4 +2204,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 8b3785414d..0db83c2f88 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.18 __pthread_register_cancel F
>  GLIBC_2.18 __pthread_register_cancel_defer F
>  GLIBC_2.18 __pthread_rwlock_destroy F
>  GLIBC_2.18 __pthread_rwlock_init F
> -GLIBC_2.18 __pthread_rwlock_rdlock F
>  GLIBC_2.18 __pthread_rwlock_tryrdlock F
>  GLIBC_2.18 __pthread_rwlock_trywrlock F
> -GLIBC_2.18 __pthread_rwlock_unlock F
> -GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_unregister_cancel F
>  GLIBC_2.18 __pthread_unregister_cancel_restore F
>  GLIBC_2.18 __pwrite64 F
> @@ -114,13 +111,10 @@ GLIBC_2.18 pthread_mutexattr_setrobust_np F
>  GLIBC_2.18 pthread_mutexattr_settype F
>  GLIBC_2.18 pthread_rwlock_destroy F
>  GLIBC_2.18 pthread_rwlock_init F
> -GLIBC_2.18 pthread_rwlock_rdlock F
>  GLIBC_2.18 pthread_rwlock_timedrdlock F
>  GLIBC_2.18 pthread_rwlock_timedwrlock F
>  GLIBC_2.18 pthread_rwlock_tryrdlock F
>  GLIBC_2.18 pthread_rwlock_trywrlock F
> -GLIBC_2.18 pthread_rwlock_unlock F
> -GLIBC_2.18 pthread_rwlock_wrlock F
>  GLIBC_2.18 pthread_rwlockattr_destroy F
>  GLIBC_2.18 pthread_rwlockattr_getkind_np F
>  GLIBC_2.18 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index ce2823207c..4ee88a1d01 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -343,6 +343,9 @@ GLIBC_2.18 __pthread_cleanup_routine F
>  GLIBC_2.18 __pthread_getspecific F
>  GLIBC_2.18 __pthread_key_create F
>  GLIBC_2.18 __pthread_once F
> +GLIBC_2.18 __pthread_rwlock_rdlock F
> +GLIBC_2.18 __pthread_rwlock_unlock F
> +GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_setspecific F
>  GLIBC_2.18 __pthread_unwind_next F
>  GLIBC_2.18 __ptsname_r_chk F
> @@ -1465,6 +1468,9 @@ GLIBC_2.18 pthread_mutex_init F
>  GLIBC_2.18 pthread_mutex_lock F
>  GLIBC_2.18 pthread_mutex_unlock F
>  GLIBC_2.18 pthread_once F
> +GLIBC_2.18 pthread_rwlock_rdlock F
> +GLIBC_2.18 pthread_rwlock_unlock F
> +GLIBC_2.18 pthread_rwlock_wrlock F
>  GLIBC_2.18 pthread_self F
>  GLIBC_2.18 pthread_setcancelstate F
>  GLIBC_2.18 pthread_setcanceltype F
> @@ -2185,6 +2191,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2192,4 +2201,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 8b3785414d..0db83c2f88 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.18 __pthread_register_cancel F
>  GLIBC_2.18 __pthread_register_cancel_defer F
>  GLIBC_2.18 __pthread_rwlock_destroy F
>  GLIBC_2.18 __pthread_rwlock_init F
> -GLIBC_2.18 __pthread_rwlock_rdlock F
>  GLIBC_2.18 __pthread_rwlock_tryrdlock F
>  GLIBC_2.18 __pthread_rwlock_trywrlock F
> -GLIBC_2.18 __pthread_rwlock_unlock F
> -GLIBC_2.18 __pthread_rwlock_wrlock F
>  GLIBC_2.18 __pthread_unregister_cancel F
>  GLIBC_2.18 __pthread_unregister_cancel_restore F
>  GLIBC_2.18 __pwrite64 F
> @@ -114,13 +111,10 @@ GLIBC_2.18 pthread_mutexattr_setrobust_np F
>  GLIBC_2.18 pthread_mutexattr_settype F
>  GLIBC_2.18 pthread_rwlock_destroy F
>  GLIBC_2.18 pthread_rwlock_init F
> -GLIBC_2.18 pthread_rwlock_rdlock F
>  GLIBC_2.18 pthread_rwlock_timedrdlock F
>  GLIBC_2.18 pthread_rwlock_timedwrlock F
>  GLIBC_2.18 pthread_rwlock_tryrdlock F
>  GLIBC_2.18 pthread_rwlock_trywrlock F
> -GLIBC_2.18 pthread_rwlock_unlock F
> -GLIBC_2.18 pthread_rwlock_wrlock F
>  GLIBC_2.18 pthread_rwlockattr_destroy F
>  GLIBC_2.18 pthread_rwlockattr_getkind_np F
>  GLIBC_2.18 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 5e8abfa6ae..e67af35000 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -1526,6 +1526,9 @@ GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __poll F
>  GLIBC_2.2 __pread64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
>  GLIBC_2.2 __res_init F
> @@ -1813,6 +1816,9 @@ GLIBC_2.2 pread64 F
>  GLIBC_2.2 printf_size F
>  GLIBC_2.2 printf_size_info F
>  GLIBC_2.2 pthread_attr_init F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 ptsname F
>  GLIBC_2.2 ptsname_r F
>  GLIBC_2.2 putgrent F
> @@ -2178,6 +2184,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2185,6 +2194,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index cd0d6d7419..a1a66138d4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -86,11 +86,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> @@ -123,13 +120,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 93002ae842..1ce0179391 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -1524,6 +1524,9 @@ GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __poll F
>  GLIBC_2.2 __pread64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
>  GLIBC_2.2 __res_init F
> @@ -1811,6 +1814,9 @@ GLIBC_2.2 pread64 F
>  GLIBC_2.2 printf_size F
>  GLIBC_2.2 printf_size_info F
>  GLIBC_2.2 pthread_attr_init F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 ptsname F
>  GLIBC_2.2 ptsname_r F
>  GLIBC_2.2 putgrent F
> @@ -2176,6 +2182,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2183,6 +2192,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index cd0d6d7419..a1a66138d4 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -86,11 +86,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> @@ -123,13 +120,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 245a840e12..54c2300420 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -1524,6 +1524,9 @@ GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __poll F
>  GLIBC_2.2 __pread64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
>  GLIBC_2.2 __res_init F
> @@ -1811,6 +1814,9 @@ GLIBC_2.2 pread64 F
>  GLIBC_2.2 printf_size F
>  GLIBC_2.2 printf_size_info F
>  GLIBC_2.2 pthread_attr_init F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 ptsname F
>  GLIBC_2.2 ptsname_r F
>  GLIBC_2.2 putgrent F
> @@ -2184,6 +2190,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2191,6 +2200,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 24b2dddb51..90bbb7f253 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -1520,6 +1520,9 @@ GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
>  GLIBC_2.2 __poll F
>  GLIBC_2.2 __pread64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
>  GLIBC_2.2 __res_init F
> @@ -1807,6 +1810,9 @@ GLIBC_2.2 pread64 F
>  GLIBC_2.2 printf_size F
>  GLIBC_2.2 printf_size_info F
>  GLIBC_2.2 pthread_attr_init F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 ptsname F
>  GLIBC_2.2 ptsname_r F
>  GLIBC_2.2 putgrent F
> @@ -2178,6 +2184,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2185,6 +2194,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index 7d4b4dd278..1f68c2a3fb 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -380,6 +380,9 @@ GLIBC_2.21 __pthread_cleanup_routine F
>  GLIBC_2.21 __pthread_getspecific F
>  GLIBC_2.21 __pthread_key_create F
>  GLIBC_2.21 __pthread_once F
> +GLIBC_2.21 __pthread_rwlock_rdlock F
> +GLIBC_2.21 __pthread_rwlock_unlock F
> +GLIBC_2.21 __pthread_rwlock_wrlock F
>  GLIBC_2.21 __pthread_setspecific F
>  GLIBC_2.21 __pthread_unwind_next F
>  GLIBC_2.21 __ptsname_r_chk F
> @@ -1507,6 +1510,9 @@ GLIBC_2.21 pthread_mutex_init F
>  GLIBC_2.21 pthread_mutex_lock F
>  GLIBC_2.21 pthread_mutex_unlock F
>  GLIBC_2.21 pthread_once F
> +GLIBC_2.21 pthread_rwlock_rdlock F
> +GLIBC_2.21 pthread_rwlock_unlock F
> +GLIBC_2.21 pthread_rwlock_wrlock F
>  GLIBC_2.21 pthread_self F
>  GLIBC_2.21 pthread_setcancelstate F
>  GLIBC_2.21 pthread_setcanceltype F
> @@ -2226,6 +2232,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2233,4 +2242,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 0250c9756d..806432b7b4 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.21 __pthread_register_cancel F
>  GLIBC_2.21 __pthread_register_cancel_defer F
>  GLIBC_2.21 __pthread_rwlock_destroy F
>  GLIBC_2.21 __pthread_rwlock_init F
> -GLIBC_2.21 __pthread_rwlock_rdlock F
>  GLIBC_2.21 __pthread_rwlock_tryrdlock F
>  GLIBC_2.21 __pthread_rwlock_trywrlock F
> -GLIBC_2.21 __pthread_rwlock_unlock F
> -GLIBC_2.21 __pthread_rwlock_wrlock F
>  GLIBC_2.21 __pthread_unregister_cancel F
>  GLIBC_2.21 __pthread_unregister_cancel_restore F
>  GLIBC_2.21 __pwrite64 F
> @@ -114,13 +111,10 @@ GLIBC_2.21 pthread_mutexattr_setrobust_np F
>  GLIBC_2.21 pthread_mutexattr_settype F
>  GLIBC_2.21 pthread_rwlock_destroy F
>  GLIBC_2.21 pthread_rwlock_init F
> -GLIBC_2.21 pthread_rwlock_rdlock F
>  GLIBC_2.21 pthread_rwlock_timedrdlock F
>  GLIBC_2.21 pthread_rwlock_timedwrlock F
>  GLIBC_2.21 pthread_rwlock_tryrdlock F
>  GLIBC_2.21 pthread_rwlock_trywrlock F
> -GLIBC_2.21 pthread_rwlock_unlock F
> -GLIBC_2.21 pthread_rwlock_wrlock F
>  GLIBC_2.21 pthread_rwlockattr_destroy F
>  GLIBC_2.21 pthread_rwlockattr_getkind_np F
>  GLIBC_2.21 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 65ea41b2db..a41536e4cd 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -1560,6 +1560,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1827,6 +1830,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2234,6 +2240,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2241,6 +2250,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index e0eb362a7a..d0646d0eaf 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -120,11 +117,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 9d413de126..cdd6e98496 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -1560,6 +1560,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1831,6 +1834,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2267,6 +2273,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2274,6 +2283,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 16c24bfc69..63a7449937 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -412,6 +412,9 @@ GLIBC_2.3 __progname_full D 0x8
>  GLIBC_2.3 __pthread_getspecific F
>  GLIBC_2.3 __pthread_key_create F
>  GLIBC_2.3 __pthread_once F
> +GLIBC_2.3 __pthread_rwlock_rdlock F
> +GLIBC_2.3 __pthread_rwlock_unlock F
> +GLIBC_2.3 __pthread_rwlock_wrlock F
>  GLIBC_2.3 __pthread_setspecific F
>  GLIBC_2.3 __pwrite64 F
>  GLIBC_2.3 __rawmemchr F
> @@ -1390,6 +1393,9 @@ GLIBC_2.3 pthread_mutex_init F
>  GLIBC_2.3 pthread_mutex_lock F
>  GLIBC_2.3 pthread_mutex_unlock F
>  GLIBC_2.3 pthread_once F
> +GLIBC_2.3 pthread_rwlock_rdlock F
> +GLIBC_2.3 pthread_rwlock_unlock F
> +GLIBC_2.3 pthread_rwlock_wrlock F
>  GLIBC_2.3 pthread_self F
>  GLIBC_2.3 pthread_setcancelstate F
>  GLIBC_2.3 pthread_setcanceltype F
> @@ -2097,6 +2103,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2104,6 +2113,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index 1099d88afe..72d49ce4f3 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -51,11 +51,8 @@ GLIBC_2.3 __pthread_mutexattr_init F
>  GLIBC_2.3 __pthread_mutexattr_settype F
>  GLIBC_2.3 __pthread_rwlock_destroy F
>  GLIBC_2.3 __pthread_rwlock_init F
> -GLIBC_2.3 __pthread_rwlock_rdlock F
>  GLIBC_2.3 __pthread_rwlock_tryrdlock F
>  GLIBC_2.3 __pthread_rwlock_trywrlock F
> -GLIBC_2.3 __pthread_rwlock_unlock F
> -GLIBC_2.3 __pthread_rwlock_wrlock F
>  GLIBC_2.3 __pwrite64 F
>  GLIBC_2.3 __read F
>  GLIBC_2.3 __res_state F
> @@ -122,13 +119,10 @@ GLIBC_2.3 pthread_mutexattr_setpshared F
>  GLIBC_2.3 pthread_mutexattr_settype F
>  GLIBC_2.3 pthread_rwlock_destroy F
>  GLIBC_2.3 pthread_rwlock_init F
> -GLIBC_2.3 pthread_rwlock_rdlock F
>  GLIBC_2.3 pthread_rwlock_timedrdlock F
>  GLIBC_2.3 pthread_rwlock_timedwrlock F
>  GLIBC_2.3 pthread_rwlock_tryrdlock F
>  GLIBC_2.3 pthread_rwlock_trywrlock F
> -GLIBC_2.3 pthread_rwlock_unlock F
> -GLIBC_2.3 pthread_rwlock_wrlock F
>  GLIBC_2.3 pthread_rwlockattr_destroy F
>  GLIBC_2.3 pthread_rwlockattr_getkind_np F
>  GLIBC_2.3 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index d97c594edd..b6de88ea41 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -428,6 +428,9 @@ GLIBC_2.17 __pthread_cleanup_routine F
>  GLIBC_2.17 __pthread_getspecific F
>  GLIBC_2.17 __pthread_key_create F
>  GLIBC_2.17 __pthread_once F
> +GLIBC_2.17 __pthread_rwlock_rdlock F
> +GLIBC_2.17 __pthread_rwlock_unlock F
> +GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_setspecific F
>  GLIBC_2.17 __pthread_unwind_next F
>  GLIBC_2.17 __ptsname_r_chk F
> @@ -1551,6 +1554,9 @@ GLIBC_2.17 pthread_mutex_init F
>  GLIBC_2.17 pthread_mutex_lock F
>  GLIBC_2.17 pthread_mutex_unlock F
>  GLIBC_2.17 pthread_once F
> +GLIBC_2.17 pthread_rwlock_rdlock F
> +GLIBC_2.17 pthread_rwlock_unlock F
> +GLIBC_2.17 pthread_rwlock_wrlock F
>  GLIBC_2.17 pthread_self F
>  GLIBC_2.17 pthread_setcancelstate F
>  GLIBC_2.17 pthread_setcanceltype F
> @@ -2388,6 +2394,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2395,4 +2404,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index 50ab959905..9a24f796de 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.17 __pthread_register_cancel F
>  GLIBC_2.17 __pthread_register_cancel_defer F
>  GLIBC_2.17 __pthread_rwlock_destroy F
>  GLIBC_2.17 __pthread_rwlock_init F
> -GLIBC_2.17 __pthread_rwlock_rdlock F
>  GLIBC_2.17 __pthread_rwlock_tryrdlock F
>  GLIBC_2.17 __pthread_rwlock_trywrlock F
> -GLIBC_2.17 __pthread_rwlock_unlock F
> -GLIBC_2.17 __pthread_rwlock_wrlock F
>  GLIBC_2.17 __pthread_unregister_cancel F
>  GLIBC_2.17 __pthread_unregister_cancel_restore F
>  GLIBC_2.17 __pwrite64 F
> @@ -113,13 +110,10 @@ GLIBC_2.17 pthread_mutexattr_setrobust_np F
>  GLIBC_2.17 pthread_mutexattr_settype F
>  GLIBC_2.17 pthread_rwlock_destroy F
>  GLIBC_2.17 pthread_rwlock_init F
> -GLIBC_2.17 pthread_rwlock_rdlock F
>  GLIBC_2.17 pthread_rwlock_timedrdlock F
>  GLIBC_2.17 pthread_rwlock_timedwrlock F
>  GLIBC_2.17 pthread_rwlock_tryrdlock F
>  GLIBC_2.17 pthread_rwlock_trywrlock F
> -GLIBC_2.17 pthread_rwlock_unlock F
> -GLIBC_2.17 pthread_rwlock_wrlock F
>  GLIBC_2.17 pthread_rwlockattr_destroy F
>  GLIBC_2.17 pthread_rwlockattr_getkind_np F
>  GLIBC_2.17 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index 44b0121343..d81b46d597 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -328,6 +328,9 @@ GLIBC_2.33 __pthread_cleanup_routine F
>  GLIBC_2.33 __pthread_getspecific F
>  GLIBC_2.33 __pthread_key_create F
>  GLIBC_2.33 __pthread_once F
> +GLIBC_2.33 __pthread_rwlock_rdlock F
> +GLIBC_2.33 __pthread_rwlock_unlock F
> +GLIBC_2.33 __pthread_rwlock_wrlock F
>  GLIBC_2.33 __pthread_setspecific F
>  GLIBC_2.33 __pthread_unwind_next F
>  GLIBC_2.33 __ptsname_r_chk F
> @@ -1391,6 +1394,9 @@ GLIBC_2.33 pthread_mutex_init F
>  GLIBC_2.33 pthread_mutex_lock F
>  GLIBC_2.33 pthread_mutex_unlock F
>  GLIBC_2.33 pthread_once F
> +GLIBC_2.33 pthread_rwlock_rdlock F
> +GLIBC_2.33 pthread_rwlock_unlock F
> +GLIBC_2.33 pthread_rwlock_wrlock F
>  GLIBC_2.33 pthread_self F
>  GLIBC_2.33 pthread_setcancelstate F
>  GLIBC_2.33 pthread_setcanceltype F
> @@ -1955,6 +1961,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -1962,4 +1971,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> index 6c6fdd0cbf..10e50b67c0 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
> @@ -24,11 +24,8 @@ GLIBC_2.33 __pthread_register_cancel F
>  GLIBC_2.33 __pthread_register_cancel_defer F
>  GLIBC_2.33 __pthread_rwlock_destroy F
>  GLIBC_2.33 __pthread_rwlock_init F
> -GLIBC_2.33 __pthread_rwlock_rdlock F
>  GLIBC_2.33 __pthread_rwlock_tryrdlock F
>  GLIBC_2.33 __pthread_rwlock_trywrlock F
> -GLIBC_2.33 __pthread_rwlock_unlock F
> -GLIBC_2.33 __pthread_rwlock_wrlock F
>  GLIBC_2.33 __pthread_unregister_cancel F
>  GLIBC_2.33 __pthread_unregister_cancel_restore F
>  GLIBC_2.33 __pwrite64 F
> @@ -130,13 +127,10 @@ GLIBC_2.33 pthread_rwlock_clockrdlock F
>  GLIBC_2.33 pthread_rwlock_clockwrlock F
>  GLIBC_2.33 pthread_rwlock_destroy F
>  GLIBC_2.33 pthread_rwlock_init F
> -GLIBC_2.33 pthread_rwlock_rdlock F
>  GLIBC_2.33 pthread_rwlock_timedrdlock F
>  GLIBC_2.33 pthread_rwlock_timedwrlock F
>  GLIBC_2.33 pthread_rwlock_tryrdlock F
>  GLIBC_2.33 pthread_rwlock_trywrlock F
> -GLIBC_2.33 pthread_rwlock_unlock F
> -GLIBC_2.33 pthread_rwlock_wrlock F
>  GLIBC_2.33 pthread_rwlockattr_destroy F
>  GLIBC_2.33 pthread_rwlockattr_getkind_np F
>  GLIBC_2.33 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 22a34442f0..fbd1c5e5cf 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -339,6 +339,9 @@ GLIBC_2.27 __pthread_cleanup_routine F
>  GLIBC_2.27 __pthread_getspecific F
>  GLIBC_2.27 __pthread_key_create F
>  GLIBC_2.27 __pthread_once F
> +GLIBC_2.27 __pthread_rwlock_rdlock F
> +GLIBC_2.27 __pthread_rwlock_unlock F
> +GLIBC_2.27 __pthread_rwlock_wrlock F
>  GLIBC_2.27 __pthread_setspecific F
>  GLIBC_2.27 __pthread_unwind_next F
>  GLIBC_2.27 __ptsname_r_chk F
> @@ -1453,6 +1456,9 @@ GLIBC_2.27 pthread_mutex_init F
>  GLIBC_2.27 pthread_mutex_lock F
>  GLIBC_2.27 pthread_mutex_unlock F
>  GLIBC_2.27 pthread_once F
> +GLIBC_2.27 pthread_rwlock_rdlock F
> +GLIBC_2.27 pthread_rwlock_unlock F
> +GLIBC_2.27 pthread_rwlock_wrlock F
>  GLIBC_2.27 pthread_self F
>  GLIBC_2.27 pthread_setcancelstate F
>  GLIBC_2.27 pthread_setcanceltype F
> @@ -2155,6 +2161,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2162,4 +2171,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index 359545faee..ed24898e0d 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.27 __pthread_register_cancel F
>  GLIBC_2.27 __pthread_register_cancel_defer F
>  GLIBC_2.27 __pthread_rwlock_destroy F
>  GLIBC_2.27 __pthread_rwlock_init F
> -GLIBC_2.27 __pthread_rwlock_rdlock F
>  GLIBC_2.27 __pthread_rwlock_tryrdlock F
>  GLIBC_2.27 __pthread_rwlock_trywrlock F
> -GLIBC_2.27 __pthread_rwlock_unlock F
> -GLIBC_2.27 __pthread_rwlock_wrlock F
>  GLIBC_2.27 __pthread_unregister_cancel F
>  GLIBC_2.27 __pthread_unregister_cancel_restore F
>  GLIBC_2.27 __pwrite64 F
> @@ -114,13 +111,10 @@ GLIBC_2.27 pthread_mutexattr_setrobust_np F
>  GLIBC_2.27 pthread_mutexattr_settype F
>  GLIBC_2.27 pthread_rwlock_destroy F
>  GLIBC_2.27 pthread_rwlock_init F
> -GLIBC_2.27 pthread_rwlock_rdlock F
>  GLIBC_2.27 pthread_rwlock_timedrdlock F
>  GLIBC_2.27 pthread_rwlock_timedwrlock F
>  GLIBC_2.27 pthread_rwlock_tryrdlock F
>  GLIBC_2.27 pthread_rwlock_trywrlock F
> -GLIBC_2.27 pthread_rwlock_unlock F
> -GLIBC_2.27 pthread_rwlock_wrlock F
>  GLIBC_2.27 pthread_rwlockattr_destroy F
>  GLIBC_2.27 pthread_rwlockattr_getkind_np F
>  GLIBC_2.27 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 21f49b1fa0..27a9b011a8 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -1552,6 +1552,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1825,6 +1828,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2232,6 +2238,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2239,6 +2248,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index 5eb6187d98..d6e91c977a 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -121,11 +118,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 114591d6f5..9e79331100 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -373,6 +373,9 @@ GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1301,6 +1304,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2133,6 +2139,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2140,6 +2149,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 8f60a6b633..14489b39d0 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -31,11 +31,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -103,13 +100,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index ad487f0c9f..b7dd795864 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -362,6 +362,9 @@ GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1287,6 +1290,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2102,6 +2108,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2109,6 +2118,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index d0e8564302..70af59d791 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 7f6886ff02..eea30cd098 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -362,6 +362,9 @@ GLIBC_2.2 __progname_full D 0x4
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1287,6 +1290,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2099,6 +2105,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2106,6 +2115,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index d0e8564302..70af59d791 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 4ae6d45923..4944c4159b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -1553,6 +1553,9 @@ GLIBC_2.1 pread64 F
>  GLIBC_2.1 printf_size F
>  GLIBC_2.1 printf_size_info F
>  GLIBC_2.1 pthread_attr_init F
> +GLIBC_2.1 pthread_rwlock_rdlock F
> +GLIBC_2.1 pthread_rwlock_unlock F
> +GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 ptsname F
>  GLIBC_2.1 ptsname_r F
>  GLIBC_2.1 putgrent F
> @@ -1823,6 +1826,9 @@ GLIBC_2.2 __getmntent_r F
>  GLIBC_2.2 __lxstat64 F
>  GLIBC_2.2 __nl_langinfo_l F
>  GLIBC_2.2 __open64 F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __res_init F
>  GLIBC_2.2 __res_nclose F
>  GLIBC_2.2 __res_ninit F
> @@ -2223,6 +2229,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2230,6 +2239,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 _IO_fprintf F
>  GLIBC_2.4 _IO_printf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index 9d78d94466..a7b3fd73ab 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -87,11 +87,8 @@ GLIBC_2.1 pthread_mutexattr_gettype F
>  GLIBC_2.1 pthread_mutexattr_settype F
>  GLIBC_2.1 pthread_rwlock_destroy F
>  GLIBC_2.1 pthread_rwlock_init F
> -GLIBC_2.1 pthread_rwlock_rdlock F
>  GLIBC_2.1 pthread_rwlock_tryrdlock F
>  GLIBC_2.1 pthread_rwlock_trywrlock F
> -GLIBC_2.1 pthread_rwlock_unlock F
> -GLIBC_2.1 pthread_rwlock_wrlock F
>  GLIBC_2.1 pthread_rwlockattr_destroy F
>  GLIBC_2.1 pthread_rwlockattr_getkind_np F
>  GLIBC_2.1 pthread_rwlockattr_getpshared F
> @@ -120,11 +117,8 @@ GLIBC_2.2 __open64 F
>  GLIBC_2.2 __pread64 F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __res_state F
>  GLIBC_2.2 lseek64 F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 44d0f68cb2..e69420994f 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -400,6 +400,9 @@ GLIBC_2.2 __progname_full D 0x8
>  GLIBC_2.2 __pthread_getspecific F
>  GLIBC_2.2 __pthread_key_create F
>  GLIBC_2.2 __pthread_once F
> +GLIBC_2.2 __pthread_rwlock_rdlock F
> +GLIBC_2.2 __pthread_rwlock_unlock F
> +GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pthread_setspecific F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __rawmemchr F
> @@ -1330,6 +1333,9 @@ GLIBC_2.2 pthread_mutex_init F
>  GLIBC_2.2 pthread_mutex_lock F
>  GLIBC_2.2 pthread_mutex_unlock F
>  GLIBC_2.2 pthread_once F
> +GLIBC_2.2 pthread_rwlock_rdlock F
> +GLIBC_2.2 pthread_rwlock_unlock F
> +GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_self F
>  GLIBC_2.2 pthread_setcancelstate F
>  GLIBC_2.2 pthread_setcanceltype F
> @@ -2150,6 +2156,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2157,6 +2166,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index ff37f3905e..2e69109cdc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2 __pthread_mutexattr_init F
>  GLIBC_2.2 __pthread_mutexattr_settype F
>  GLIBC_2.2 __pthread_rwlock_destroy F
>  GLIBC_2.2 __pthread_rwlock_init F
> -GLIBC_2.2 __pthread_rwlock_rdlock F
>  GLIBC_2.2 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2 __pthread_rwlock_trywrlock F
> -GLIBC_2.2 __pthread_rwlock_unlock F
> -GLIBC_2.2 __pthread_rwlock_wrlock F
>  GLIBC_2.2 __pwrite64 F
>  GLIBC_2.2 __read F
>  GLIBC_2.2 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2 pthread_mutexattr_setpshared F
>  GLIBC_2.2 pthread_mutexattr_settype F
>  GLIBC_2.2 pthread_rwlock_destroy F
>  GLIBC_2.2 pthread_rwlock_init F
> -GLIBC_2.2 pthread_rwlock_rdlock F
>  GLIBC_2.2 pthread_rwlock_timedrdlock F
>  GLIBC_2.2 pthread_rwlock_timedwrlock F
>  GLIBC_2.2 pthread_rwlock_tryrdlock F
>  GLIBC_2.2 pthread_rwlock_trywrlock F
> -GLIBC_2.2 pthread_rwlock_unlock F
> -GLIBC_2.2 pthread_rwlock_wrlock F
>  GLIBC_2.2 pthread_rwlockattr_destroy F
>  GLIBC_2.2 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index d96699a20d..dfe78d93cb 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -361,6 +361,9 @@ GLIBC_2.2.5 __progname_full D 0x8
>  GLIBC_2.2.5 __pthread_getspecific F
>  GLIBC_2.2.5 __pthread_key_create F
>  GLIBC_2.2.5 __pthread_once F
> +GLIBC_2.2.5 __pthread_rwlock_rdlock F
> +GLIBC_2.2.5 __pthread_rwlock_unlock F
> +GLIBC_2.2.5 __pthread_rwlock_wrlock F
>  GLIBC_2.2.5 __pthread_setspecific F
>  GLIBC_2.2.5 __pwrite64 F
>  GLIBC_2.2.5 __rawmemchr F
> @@ -1298,6 +1301,9 @@ GLIBC_2.2.5 pthread_mutex_init F
>  GLIBC_2.2.5 pthread_mutex_lock F
>  GLIBC_2.2.5 pthread_mutex_unlock F
>  GLIBC_2.2.5 pthread_once F
> +GLIBC_2.2.5 pthread_rwlock_rdlock F
> +GLIBC_2.2.5 pthread_rwlock_unlock F
> +GLIBC_2.2.5 pthread_rwlock_wrlock F
>  GLIBC_2.2.5 pthread_self F
>  GLIBC_2.2.5 pthread_setcancelstate F
>  GLIBC_2.2.5 pthread_setcanceltype F
> @@ -2109,6 +2115,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2116,6 +2125,9 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 511240921e..4f8dfa000a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -30,11 +30,8 @@ GLIBC_2.2.5 __pthread_mutexattr_init F
>  GLIBC_2.2.5 __pthread_mutexattr_settype F
>  GLIBC_2.2.5 __pthread_rwlock_destroy F
>  GLIBC_2.2.5 __pthread_rwlock_init F
> -GLIBC_2.2.5 __pthread_rwlock_rdlock F
>  GLIBC_2.2.5 __pthread_rwlock_tryrdlock F
>  GLIBC_2.2.5 __pthread_rwlock_trywrlock F
> -GLIBC_2.2.5 __pthread_rwlock_unlock F
> -GLIBC_2.2.5 __pthread_rwlock_wrlock F
>  GLIBC_2.2.5 __pwrite64 F
>  GLIBC_2.2.5 __read F
>  GLIBC_2.2.5 __res_state F
> @@ -102,13 +99,10 @@ GLIBC_2.2.5 pthread_mutexattr_setpshared F
>  GLIBC_2.2.5 pthread_mutexattr_settype F
>  GLIBC_2.2.5 pthread_rwlock_destroy F
>  GLIBC_2.2.5 pthread_rwlock_init F
> -GLIBC_2.2.5 pthread_rwlock_rdlock F
>  GLIBC_2.2.5 pthread_rwlock_timedrdlock F
>  GLIBC_2.2.5 pthread_rwlock_timedwrlock F
>  GLIBC_2.2.5 pthread_rwlock_tryrdlock F
>  GLIBC_2.2.5 pthread_rwlock_trywrlock F
> -GLIBC_2.2.5 pthread_rwlock_unlock F
> -GLIBC_2.2.5 pthread_rwlock_wrlock F
>  GLIBC_2.2.5 pthread_rwlockattr_destroy F
>  GLIBC_2.2.5 pthread_rwlockattr_getkind_np F
>  GLIBC_2.2.5 pthread_rwlockattr_getpshared F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 33bbaff90c..3accd92583 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -343,6 +343,9 @@ GLIBC_2.16 __pthread_cleanup_routine F
>  GLIBC_2.16 __pthread_getspecific F
>  GLIBC_2.16 __pthread_key_create F
>  GLIBC_2.16 __pthread_once F
> +GLIBC_2.16 __pthread_rwlock_rdlock F
> +GLIBC_2.16 __pthread_rwlock_unlock F
> +GLIBC_2.16 __pthread_rwlock_wrlock F
>  GLIBC_2.16 __pthread_setspecific F
>  GLIBC_2.16 __pthread_unwind_next F
>  GLIBC_2.16 __ptsname_r_chk F
> @@ -1470,6 +1473,9 @@ GLIBC_2.16 pthread_mutex_init F
>  GLIBC_2.16 pthread_mutex_lock F
>  GLIBC_2.16 pthread_mutex_unlock F
>  GLIBC_2.16 pthread_once F
> +GLIBC_2.16 pthread_rwlock_rdlock F
> +GLIBC_2.16 pthread_rwlock_unlock F
> +GLIBC_2.16 pthread_rwlock_wrlock F
>  GLIBC_2.16 pthread_self F
>  GLIBC_2.16 pthread_setcancelstate F
>  GLIBC_2.16 pthread_setcanceltype F
> @@ -2207,6 +2213,9 @@ GLIBC_2.34 __pthread_cleanup_routine F
>  GLIBC_2.34 __pthread_getspecific F
>  GLIBC_2.34 __pthread_key_create F
>  GLIBC_2.34 __pthread_once F
> +GLIBC_2.34 __pthread_rwlock_rdlock F
> +GLIBC_2.34 __pthread_rwlock_unlock F
> +GLIBC_2.34 __pthread_rwlock_wrlock F
>  GLIBC_2.34 __pthread_setspecific F
>  GLIBC_2.34 __pthread_unwind_next F
>  GLIBC_2.34 pthread_getspecific F
> @@ -2214,4 +2223,7 @@ GLIBC_2.34 pthread_key_create F
>  GLIBC_2.34 pthread_key_delete F
>  GLIBC_2.34 pthread_mutex_consistent F
>  GLIBC_2.34 pthread_once F
> +GLIBC_2.34 pthread_rwlock_rdlock F
> +GLIBC_2.34 pthread_rwlock_unlock F
> +GLIBC_2.34 pthread_rwlock_wrlock F
>  GLIBC_2.34 pthread_setspecific F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index a481ef56ab..0b017c0218 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -25,11 +25,8 @@ GLIBC_2.16 __pthread_register_cancel F
>  GLIBC_2.16 __pthread_register_cancel_defer F
>  GLIBC_2.16 __pthread_rwlock_destroy F
>  GLIBC_2.16 __pthread_rwlock_init F
> -GLIBC_2.16 __pthread_rwlock_rdlock F
>  GLIBC_2.16 __pthread_rwlock_tryrdlock F
>  GLIBC_2.16 __pthread_rwlock_trywrlock F
> -GLIBC_2.16 __pthread_rwlock_unlock F
> -GLIBC_2.16 __pthread_rwlock_wrlock F
>  GLIBC_2.16 __pthread_unregister_cancel F
>  GLIBC_2.16 __pthread_unregister_cancel_restore F
>  GLIBC_2.16 __pwrite64 F
> @@ -113,13 +110,10 @@ GLIBC_2.16 pthread_mutexattr_setrobust_np F
>  GLIBC_2.16 pthread_mutexattr_settype F
>  GLIBC_2.16 pthread_rwlock_destroy F
>  GLIBC_2.16 pthread_rwlock_init F
> -GLIBC_2.16 pthread_rwlock_rdlock F
>  GLIBC_2.16 pthread_rwlock_timedrdlock F
>  GLIBC_2.16 pthread_rwlock_timedwrlock F
>  GLIBC_2.16 pthread_rwlock_tryrdlock F
>  GLIBC_2.16 pthread_rwlock_trywrlock F
> -GLIBC_2.16 pthread_rwlock_unlock F
> -GLIBC_2.16 pthread_rwlock_wrlock F
>  GLIBC_2.16 pthread_rwlockattr_destroy F
>  GLIBC_2.16 pthread_rwlockattr_getkind_np F
>  GLIBC_2.16 pthread_rwlockattr_getpshared F
> 

Ok.
Florian Weimer March 27, 2021, 9:41 p.m. UTC | #2
* Adhemerval Zanella:

> On 16/03/2021 14:31, Florian Weimer via Libc-alpha wrote:
>> The forwarders were only used internally, so new symbol versions
>> are needed.  All symbols are moved at once because the forwarders
>> are no-ops if libpthread is not loaded, leading to inconsistencies
>> in case of a partial migration.
>> 
>> The symbols __pthread_rwlock_rdlock, __pthread_rwlock_unlock,
>> __pthread_rwlock_wrlock, pthread_rwlock_rdlock,
>> pthread_rwlock_unlock, pthread_rwlock_wrlock have been moved using
>> scripts/move-symbol-to-libc.py.
>
> LGTM, thanks (you probably want to rebase to use the compat_symbol
> multiple reference support).

I don't think we need the __pthread_rwlock_* exports anymore, so I have
turned them into compat symbols in a revision of the patch.  (There are
no C11 rwlock functions.)  This avoids the need for the GLIBC_2.34
symbol versions.

Thanks,
Florian
diff mbox series

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index 5d4276d9f9..1eca75ef35 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -84,6 +84,9 @@  routines = \
   pthread_keys \
   pthread_mutex_consistent \
   pthread_once \
+  pthread_rwlock_rdlock \
+  pthread_rwlock_unlock \
+  pthread_rwlock_wrlock \
   pthread_self \
   pthread_setcancelstate \
   pthread_setcanceltype \
@@ -191,13 +194,10 @@  libpthread-routines = \
   pthread_rwlock_clockwrlock \
   pthread_rwlock_destroy \
   pthread_rwlock_init \
-  pthread_rwlock_rdlock \
   pthread_rwlock_timedrdlock \
   pthread_rwlock_timedwrlock \
   pthread_rwlock_tryrdlock \
   pthread_rwlock_trywrlock \
-  pthread_rwlock_unlock \
-  pthread_rwlock_wrlock \
   pthread_rwlockattr_destroy \
   pthread_rwlockattr_getkind_np \
   pthread_rwlockattr_getpshared \
diff --git a/nptl/Versions b/nptl/Versions
index e93c27b083..b3feadd045 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -48,6 +48,14 @@  libc {
   }
   GLIBC_2.1 {
     pthread_attr_init;
+    pthread_rwlock_rdlock;
+    pthread_rwlock_unlock;
+    pthread_rwlock_wrlock;
+  }
+  GLIBC_2.2 {
+    __pthread_rwlock_rdlock;
+    __pthread_rwlock_unlock;
+    __pthread_rwlock_wrlock;
   }
   GLIBC_2.2.3 {
     pthread_getattr_np;
@@ -96,12 +104,18 @@  libc {
     __pthread_getspecific;
     __pthread_key_create;
     __pthread_once;
+    __pthread_rwlock_rdlock;
+    __pthread_rwlock_unlock;
+    __pthread_rwlock_wrlock;
     __pthread_setspecific;
     pthread_getspecific;
     pthread_key_create;
     pthread_key_delete;
     pthread_mutex_consistent;
     pthread_once;
+    pthread_rwlock_rdlock;
+    pthread_rwlock_unlock;
+    pthread_rwlock_wrlock;
     pthread_setspecific;
   }
   GLIBC_PRIVATE {
@@ -241,11 +255,8 @@  libpthread {
     pthread_mutexattr_settype;
     pthread_rwlock_destroy;
     pthread_rwlock_init;
-    pthread_rwlock_rdlock;
     pthread_rwlock_tryrdlock;
     pthread_rwlock_trywrlock;
-    pthread_rwlock_unlock;
-    pthread_rwlock_wrlock;
     pthread_rwlockattr_destroy;
     pthread_rwlockattr_getkind_np;
     pthread_rwlockattr_getpshared;
@@ -276,11 +287,8 @@  libpthread {
     __pread64;
     __pthread_rwlock_destroy;
     __pthread_rwlock_init;
-    __pthread_rwlock_rdlock;
     __pthread_rwlock_tryrdlock;
     __pthread_rwlock_trywrlock;
-    __pthread_rwlock_unlock;
-    __pthread_rwlock_wrlock;
     __pwrite64;
     __res_state;
     lseek64;
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index cacbf045a7..0c07b46a77 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -67,9 +67,6 @@  static const struct pthread_functions pthread_functions =
     .ptr_pthread_mutex_init = __pthread_mutex_init,
     .ptr_pthread_mutex_lock = __pthread_mutex_lock,
     .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
-    .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock,
-    .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock,
-    .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock,
     .ptr__nptl_setxid = __nptl_setxid,
   };
 # define ptr_pthread_functions &pthread_functions
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 515c58039b..527e4acd4f 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -441,8 +441,10 @@  extern int __pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
 				  __attr);
 extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
 extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
+libc_hidden_proto (__pthread_rwlock_rdlock)
 extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
+libc_hidden_proto (__pthread_rwlock_wrlock)
 extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_cond_broadcast (pthread_cond_t *cond);
@@ -553,8 +555,6 @@  hidden_proto (__pthread_mutex_destroy)
 hidden_proto (__pthread_mutex_lock)
 hidden_proto (__pthread_mutex_trylock)
 hidden_proto (__pthread_mutex_unlock)
-hidden_proto (__pthread_rwlock_rdlock)
-hidden_proto (__pthread_rwlock_wrlock)
 hidden_proto (__pthread_rwlock_unlock)
 hidden_proto (__pthread_testcancel)
 hidden_proto (__pthread_mutexattr_init)
diff --git a/nptl/pthread_rwlock_rdlock.c b/nptl/pthread_rwlock_rdlock.c
index 0eeee50834..6793e01e7b 100644
--- a/nptl/pthread_rwlock_rdlock.c
+++ b/nptl/pthread_rwlock_rdlock.c
@@ -20,7 +20,7 @@ 
 
 /* See pthread_rwlock_common.c.  */
 int
-__pthread_rwlock_rdlock (pthread_rwlock_t *rwlock)
+__pthread_rwlock_rdlock_1 (pthread_rwlock_t *rwlock)
 {
   LIBC_PROBE (rdlock_entry, 1, rwlock);
 
@@ -28,6 +28,22 @@  __pthread_rwlock_rdlock (pthread_rwlock_t *rwlock)
   LIBC_PROBE (rdlock_acquire_read, 1, rwlock);
   return result;
 }
+versioned_symbol (libc, __pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock,
+		  GLIBC_2_34);
+libc_hidden_ver (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock)
 
-weak_alias (__pthread_rwlock_rdlock, pthread_rwlock_rdlock)
-hidden_def (__pthread_rwlock_rdlock)
+/* Several aliases for setting different symbol versions.  */
+strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_2)
+strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_3)
+strong_alias (__pthread_rwlock_rdlock_1, __pthread_rwlock_rdlock_4)
+
+versioned_symbol (libc, __pthread_rwlock_rdlock_2, pthread_rwlock_rdlock,
+		  GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_rdlock_3, pthread_rwlock_rdlock,
+	       GLIBC_2_1);
+#endif
+#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_rdlock_4, __pthread_rwlock_rdlock,
+	       GLIBC_2_2);
+#endif
diff --git a/nptl/pthread_rwlock_unlock.c b/nptl/pthread_rwlock_unlock.c
index 356d63a045..6d0fb76afd 100644
--- a/nptl/pthread_rwlock_unlock.c
+++ b/nptl/pthread_rwlock_unlock.c
@@ -27,7 +27,7 @@ 
 
 /* See pthread_rwlock_common.c for an overview.  */
 int
-__pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
+__pthread_rwlock_unlock_1 (pthread_rwlock_t *rwlock)
 {
   LIBC_PROBE (rwlock_unlock, 1, rwlock);
 
@@ -43,6 +43,22 @@  __pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
     __pthread_rwlock_rdunlock (rwlock);
   return 0;
 }
+versioned_symbol (libc, __pthread_rwlock_unlock_1, __pthread_rwlock_unlock,
+		  GLIBC_2_34);
+libc_hidden_ver (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock)
 
-weak_alias (__pthread_rwlock_unlock, pthread_rwlock_unlock)
-hidden_def (__pthread_rwlock_unlock)
+/* Several aliases for setting different symbol versions.  */
+strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_2)
+strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_3)
+strong_alias (__pthread_rwlock_unlock_1, __pthread_rwlock_unlock_4)
+
+versioned_symbol (libc, __pthread_rwlock_unlock_2, pthread_rwlock_unlock,
+		  GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_unlock_3, pthread_rwlock_unlock,
+	       GLIBC_2_1);
+#endif
+#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_unlock_4, __pthread_rwlock_unlock,
+	       GLIBC_2_2);
+#endif
diff --git a/nptl/pthread_rwlock_wrlock.c b/nptl/pthread_rwlock_wrlock.c
index 98882a87e4..7b625201c5 100644
--- a/nptl/pthread_rwlock_wrlock.c
+++ b/nptl/pthread_rwlock_wrlock.c
@@ -20,7 +20,7 @@ 
 
 /* See pthread_rwlock_common.c.  */
 int
-__pthread_rwlock_wrlock (pthread_rwlock_t *rwlock)
+__pthread_rwlock_wrlock_1 (pthread_rwlock_t *rwlock)
 {
   LIBC_PROBE (wrlock_entry, 1, rwlock);
 
@@ -28,6 +28,22 @@  __pthread_rwlock_wrlock (pthread_rwlock_t *rwlock)
   LIBC_PROBE (wrlock_acquire_write, 1, rwlock);
   return result;
 }
+versioned_symbol (libc, __pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock,
+		  GLIBC_2_34);
+libc_hidden_ver (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock)
 
-weak_alias (__pthread_rwlock_wrlock, pthread_rwlock_wrlock)
-hidden_def (__pthread_rwlock_wrlock)
+/* Several aliases for setting different symbol versions.  */
+strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_2)
+strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_3)
+strong_alias (__pthread_rwlock_wrlock_1, __pthread_rwlock_wrlock_4)
+
+versioned_symbol (libc, __pthread_rwlock_wrlock_2, pthread_rwlock_wrlock,
+		  GLIBC_2_34);
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_wrlock_3, pthread_rwlock_wrlock,
+	       GLIBC_2_1);
+#endif
+#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libc, __pthread_rwlock_wrlock_4, __pthread_rwlock_wrlock,
+	       GLIBC_2_2);
+#endif
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index 10a24568a9..89910560fa 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -167,10 +167,8 @@  _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
 # define __libc_lock_lock(NAME) \
   __libc_maybe_call (__pthread_mutex_lock, (&(NAME)), 0)
 #endif
-#define __libc_rwlock_rdlock(NAME) \
-  __libc_ptf_call (__pthread_rwlock_rdlock, (&(NAME)), 0)
-#define __libc_rwlock_wrlock(NAME) \
-  __libc_ptf_call (__pthread_rwlock_wrlock, (&(NAME)), 0)
+#define __libc_rwlock_rdlock(NAME) __pthread_rwlock_rdlock (&(NAME))
+#define __libc_rwlock_wrlock(NAME) __pthread_rwlock_wrlock (&(NAME))
 
 /* Try to lock the named lock variable.  */
 #if IS_IN (libc) || IS_IN (libpthread)
@@ -199,8 +197,7 @@  _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
 # define __libc_lock_unlock(NAME) \
   __libc_maybe_call (__pthread_mutex_unlock, (&(NAME)), 0)
 #endif
-#define __libc_rwlock_unlock(NAME) \
-  __libc_ptf_call (__pthread_rwlock_unlock, (&(NAME)), 0)
+#define __libc_rwlock_unlock(NAME) __pthread_rwlock_unlock (&(NAME))
 
 #ifdef SHARED
 # define __rtld_lock_default_lock_recursive(lock) \
@@ -299,15 +296,15 @@  extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
 extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
 
 extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
-
+libc_hidden_proto (__pthread_rwlock_rdlock)
 extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
 
 extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
-
+libc_hidden_proto (__pthread_rwlock_wrlock)
 extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
 
 extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
-
+libc_hidden_proto (__pthread_rwlock_unlock)
 extern int __pthread_once (pthread_once_t *__once_control,
 			   void (*__init_routine) (void));
 libc_hidden_proto (__pthread_once)
@@ -333,11 +330,8 @@  weak_extern (__pthread_mutexattr_destroy)
 weak_extern (__pthread_mutexattr_settype)
 weak_extern (__pthread_rwlock_init)
 weak_extern (__pthread_rwlock_destroy)
-weak_extern (__pthread_rwlock_rdlock)
 weak_extern (__pthread_rwlock_tryrdlock)
-weak_extern (__pthread_rwlock_wrlock)
 weak_extern (__pthread_rwlock_trywrlock)
-weak_extern (__pthread_rwlock_unlock)
 weak_extern (__pthread_initialize)
 weak_extern (__pthread_atfork)
 # else
@@ -350,11 +344,8 @@  weak_extern (__pthread_atfork)
 #  pragma weak __pthread_mutexattr_destroy
 #  pragma weak __pthread_mutexattr_settype
 #  pragma weak __pthread_rwlock_destroy
-#  pragma weak __pthread_rwlock_rdlock
 #  pragma weak __pthread_rwlock_tryrdlock
-#  pragma weak __pthread_rwlock_wrlock
 #  pragma weak __pthread_rwlock_trywrlock
-#  pragma weak __pthread_rwlock_unlock
 #  pragma weak __pthread_initialize
 #  pragma weak __pthread_atfork
 # endif
diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h
index 2d89013ff5..8535e142d5 100644
--- a/sysdeps/nptl/pthread-functions.h
+++ b/sysdeps/nptl/pthread-functions.h
@@ -46,9 +46,6 @@  struct pthread_functions
 				 const pthread_mutexattr_t *);
   int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
   int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-  int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
   int (*ptr__nptl_setxid) (struct xid_command *);
 };
 
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 991efa0044..9191b2e760 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -342,6 +342,9 @@  GLIBC_2.17 __pthread_cleanup_routine F
 GLIBC_2.17 __pthread_getspecific F
 GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_rwlock_rdlock F
+GLIBC_2.17 __pthread_rwlock_unlock F
+GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_setspecific F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
@@ -1462,6 +1465,9 @@  GLIBC_2.17 pthread_mutex_init F
 GLIBC_2.17 pthread_mutex_lock F
 GLIBC_2.17 pthread_mutex_unlock F
 GLIBC_2.17 pthread_once F
+GLIBC_2.17 pthread_rwlock_rdlock F
+GLIBC_2.17 pthread_rwlock_unlock F
+GLIBC_2.17 pthread_rwlock_wrlock F
 GLIBC_2.17 pthread_self F
 GLIBC_2.17 pthread_setcancelstate F
 GLIBC_2.17 pthread_setcanceltype F
@@ -2193,6 +2199,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2200,4 +2209,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 50ab959905..9a24f796de 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.17 __pthread_register_cancel F
 GLIBC_2.17 __pthread_register_cancel_defer F
 GLIBC_2.17 __pthread_rwlock_destroy F
 GLIBC_2.17 __pthread_rwlock_init F
-GLIBC_2.17 __pthread_rwlock_rdlock F
 GLIBC_2.17 __pthread_rwlock_tryrdlock F
 GLIBC_2.17 __pthread_rwlock_trywrlock F
-GLIBC_2.17 __pthread_rwlock_unlock F
-GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_unregister_cancel F
 GLIBC_2.17 __pthread_unregister_cancel_restore F
 GLIBC_2.17 __pwrite64 F
@@ -113,13 +110,10 @@  GLIBC_2.17 pthread_mutexattr_setrobust_np F
 GLIBC_2.17 pthread_mutexattr_settype F
 GLIBC_2.17 pthread_rwlock_destroy F
 GLIBC_2.17 pthread_rwlock_init F
-GLIBC_2.17 pthread_rwlock_rdlock F
 GLIBC_2.17 pthread_rwlock_timedrdlock F
 GLIBC_2.17 pthread_rwlock_timedwrlock F
 GLIBC_2.17 pthread_rwlock_tryrdlock F
 GLIBC_2.17 pthread_rwlock_trywrlock F
-GLIBC_2.17 pthread_rwlock_unlock F
-GLIBC_2.17 pthread_rwlock_wrlock F
 GLIBC_2.17 pthread_rwlockattr_destroy F
 GLIBC_2.17 pthread_rwlockattr_getkind_np F
 GLIBC_2.17 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index a1229e4a1a..71dd49d25c 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1588,6 +1588,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1861,6 +1864,9 @@  GLIBC_2.2 __fwriting F
 GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2274,6 +2280,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2281,6 +2290,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 9d78d94466..a7b3fd73ab 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -120,11 +117,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index ceee863b25..38764a6746 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -331,6 +331,9 @@  GLIBC_2.32 __pthread_cleanup_routine F
 GLIBC_2.32 __pthread_getspecific F
 GLIBC_2.32 __pthread_key_create F
 GLIBC_2.32 __pthread_once F
+GLIBC_2.32 __pthread_rwlock_rdlock F
+GLIBC_2.32 __pthread_rwlock_unlock F
+GLIBC_2.32 __pthread_rwlock_wrlock F
 GLIBC_2.32 __pthread_setspecific F
 GLIBC_2.32 __pthread_unwind_next F
 GLIBC_2.32 __ptsname_r_chk F
@@ -1389,6 +1392,9 @@  GLIBC_2.32 pthread_mutex_init F
 GLIBC_2.32 pthread_mutex_lock F
 GLIBC_2.32 pthread_mutex_unlock F
 GLIBC_2.32 pthread_once F
+GLIBC_2.32 pthread_rwlock_rdlock F
+GLIBC_2.32 pthread_rwlock_unlock F
+GLIBC_2.32 pthread_rwlock_wrlock F
 GLIBC_2.32 pthread_self F
 GLIBC_2.32 pthread_setcancelstate F
 GLIBC_2.32 pthread_setcanceltype F
@@ -1953,6 +1959,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -1960,4 +1969,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 6fed825b25..0d8b928e6d 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -24,11 +24,8 @@  GLIBC_2.32 __pthread_register_cancel F
 GLIBC_2.32 __pthread_register_cancel_defer F
 GLIBC_2.32 __pthread_rwlock_destroy F
 GLIBC_2.32 __pthread_rwlock_init F
-GLIBC_2.32 __pthread_rwlock_rdlock F
 GLIBC_2.32 __pthread_rwlock_tryrdlock F
 GLIBC_2.32 __pthread_rwlock_trywrlock F
-GLIBC_2.32 __pthread_rwlock_unlock F
-GLIBC_2.32 __pthread_rwlock_wrlock F
 GLIBC_2.32 __pthread_unregister_cancel F
 GLIBC_2.32 __pthread_unregister_cancel_restore F
 GLIBC_2.32 __pwrite64 F
@@ -130,13 +127,10 @@  GLIBC_2.32 pthread_rwlock_clockrdlock F
 GLIBC_2.32 pthread_rwlock_clockwrlock F
 GLIBC_2.32 pthread_rwlock_destroy F
 GLIBC_2.32 pthread_rwlock_init F
-GLIBC_2.32 pthread_rwlock_rdlock F
 GLIBC_2.32 pthread_rwlock_timedrdlock F
 GLIBC_2.32 pthread_rwlock_timedwrlock F
 GLIBC_2.32 pthread_rwlock_tryrdlock F
 GLIBC_2.32 pthread_rwlock_trywrlock F
-GLIBC_2.32 pthread_rwlock_unlock F
-GLIBC_2.32 pthread_rwlock_wrlock F
 GLIBC_2.32 pthread_rwlockattr_destroy F
 GLIBC_2.32 pthread_rwlockattr_getkind_np F
 GLIBC_2.32 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 31e2de3cc2..86d971e7d2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -161,6 +161,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -168,6 +171,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
@@ -500,6 +506,9 @@  GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_getspecific F
 GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_rwlock_rdlock F
+GLIBC_2.4 __pthread_rwlock_unlock F
+GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1567,6 +1576,9 @@  GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
 GLIBC_2.4 pthread_once F
+GLIBC_2.4 pthread_rwlock_rdlock F
+GLIBC_2.4 pthread_rwlock_unlock F
+GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 5d3859b245..833b53362d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -59,11 +59,8 @@  GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
 GLIBC_2.4 __pthread_rwlock_init F
-GLIBC_2.4 __pthread_rwlock_rdlock F
 GLIBC_2.4 __pthread_rwlock_tryrdlock F
 GLIBC_2.4 __pthread_rwlock_trywrlock F
-GLIBC_2.4 __pthread_rwlock_unlock F
-GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pwrite64 F
@@ -144,13 +141,10 @@  GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
-GLIBC_2.4 pthread_rwlock_rdlock F
 GLIBC_2.4 pthread_rwlock_timedrdlock F
 GLIBC_2.4 pthread_rwlock_timedwrlock F
 GLIBC_2.4 pthread_rwlock_tryrdlock F
 GLIBC_2.4 pthread_rwlock_trywrlock F
-GLIBC_2.4 pthread_rwlock_unlock F
-GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_rwlockattr_destroy F
 GLIBC_2.4 pthread_rwlockattr_getkind_np F
 GLIBC_2.4 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index c6f9e3dbc3..caf3f6a141 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -158,6 +158,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -165,6 +168,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
@@ -497,6 +503,9 @@  GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_getspecific F
 GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_rwlock_rdlock F
+GLIBC_2.4 __pthread_rwlock_unlock F
+GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1564,6 +1573,9 @@  GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
 GLIBC_2.4 pthread_once F
+GLIBC_2.4 pthread_rwlock_rdlock F
+GLIBC_2.4 pthread_rwlock_unlock F
+GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 5d3859b245..833b53362d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -59,11 +59,8 @@  GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
 GLIBC_2.4 __pthread_rwlock_init F
-GLIBC_2.4 __pthread_rwlock_rdlock F
 GLIBC_2.4 __pthread_rwlock_tryrdlock F
 GLIBC_2.4 __pthread_rwlock_trywrlock F
-GLIBC_2.4 __pthread_rwlock_unlock F
-GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pwrite64 F
@@ -144,13 +141,10 @@  GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
-GLIBC_2.4 pthread_rwlock_rdlock F
 GLIBC_2.4 pthread_rwlock_timedrdlock F
 GLIBC_2.4 pthread_rwlock_timedwrlock F
 GLIBC_2.4 pthread_rwlock_tryrdlock F
 GLIBC_2.4 pthread_rwlock_trywrlock F
-GLIBC_2.4 pthread_rwlock_unlock F
-GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_rwlockattr_destroy F
 GLIBC_2.4 pthread_rwlockattr_getkind_np F
 GLIBC_2.4 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index ec7f3bde74..aeb6424389 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -335,6 +335,9 @@  GLIBC_2.29 __pthread_cleanup_routine F
 GLIBC_2.29 __pthread_getspecific F
 GLIBC_2.29 __pthread_key_create F
 GLIBC_2.29 __pthread_once F
+GLIBC_2.29 __pthread_rwlock_rdlock F
+GLIBC_2.29 __pthread_rwlock_unlock F
+GLIBC_2.29 __pthread_rwlock_wrlock F
 GLIBC_2.29 __pthread_setspecific F
 GLIBC_2.29 __pthread_unwind_next F
 GLIBC_2.29 __ptsname_r_chk F
@@ -1450,6 +1453,9 @@  GLIBC_2.29 pthread_mutex_init F
 GLIBC_2.29 pthread_mutex_lock F
 GLIBC_2.29 pthread_mutex_unlock F
 GLIBC_2.29 pthread_once F
+GLIBC_2.29 pthread_rwlock_rdlock F
+GLIBC_2.29 pthread_rwlock_unlock F
+GLIBC_2.29 pthread_rwlock_wrlock F
 GLIBC_2.29 pthread_self F
 GLIBC_2.29 pthread_setcancelstate F
 GLIBC_2.29 pthread_setcanceltype F
@@ -2137,6 +2143,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2144,4 +2153,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index cf7869867c..440c0507d1 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -24,11 +24,8 @@  GLIBC_2.29 __pthread_register_cancel F
 GLIBC_2.29 __pthread_register_cancel_defer F
 GLIBC_2.29 __pthread_rwlock_destroy F
 GLIBC_2.29 __pthread_rwlock_init F
-GLIBC_2.29 __pthread_rwlock_rdlock F
 GLIBC_2.29 __pthread_rwlock_tryrdlock F
 GLIBC_2.29 __pthread_rwlock_trywrlock F
-GLIBC_2.29 __pthread_rwlock_unlock F
-GLIBC_2.29 __pthread_rwlock_wrlock F
 GLIBC_2.29 __pthread_unregister_cancel F
 GLIBC_2.29 __pthread_unregister_cancel_restore F
 GLIBC_2.29 __pwrite64 F
@@ -125,13 +122,10 @@  GLIBC_2.29 pthread_mutexattr_setrobust_np F
 GLIBC_2.29 pthread_mutexattr_settype F
 GLIBC_2.29 pthread_rwlock_destroy F
 GLIBC_2.29 pthread_rwlock_init F
-GLIBC_2.29 pthread_rwlock_rdlock F
 GLIBC_2.29 pthread_rwlock_timedrdlock F
 GLIBC_2.29 pthread_rwlock_timedwrlock F
 GLIBC_2.29 pthread_rwlock_tryrdlock F
 GLIBC_2.29 pthread_rwlock_trywrlock F
-GLIBC_2.29 pthread_rwlock_unlock F
-GLIBC_2.29 pthread_rwlock_wrlock F
 GLIBC_2.29 pthread_rwlockattr_destroy F
 GLIBC_2.29 pthread_rwlockattr_getkind_np F
 GLIBC_2.29 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index ebced5d8c3..e1d02058c9 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -359,6 +359,9 @@  GLIBC_2.2 __progname_full D 0x4
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1283,6 +1286,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2095,6 +2101,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2102,6 +2111,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index d0e8564302..70af59d791 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index d15479dabd..717344a690 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -1556,6 +1556,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1865,6 +1868,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2262,6 +2268,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2269,6 +2278,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 99e53d0c49..35cc2f61c5 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -120,11 +117,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 62c8c7d461..284b7072a3 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -363,6 +363,9 @@  GLIBC_2.2 __progname_full D 0x8
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1304,6 +1307,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2127,6 +2133,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2134,6 +2143,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index ff37f3905e..2e69109cdc 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 83e8a6824f..404d16b92a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -162,6 +162,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -169,6 +172,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0x98
@@ -486,6 +492,9 @@  GLIBC_2.4 __pthread_cleanup_routine F
 GLIBC_2.4 __pthread_getspecific F
 GLIBC_2.4 __pthread_key_create F
 GLIBC_2.4 __pthread_once F
+GLIBC_2.4 __pthread_rwlock_rdlock F
+GLIBC_2.4 __pthread_rwlock_unlock F
+GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_setspecific F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __ptsname_r_chk F
@@ -1547,6 +1556,9 @@  GLIBC_2.4 pthread_mutex_init F
 GLIBC_2.4 pthread_mutex_lock F
 GLIBC_2.4 pthread_mutex_unlock F
 GLIBC_2.4 pthread_once F
+GLIBC_2.4 pthread_rwlock_rdlock F
+GLIBC_2.4 pthread_rwlock_unlock F
+GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_self F
 GLIBC_2.4 pthread_setcancelstate F
 GLIBC_2.4 pthread_setcanceltype F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 5d3859b245..833b53362d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -59,11 +59,8 @@  GLIBC_2.4 __pthread_register_cancel F
 GLIBC_2.4 __pthread_register_cancel_defer F
 GLIBC_2.4 __pthread_rwlock_destroy F
 GLIBC_2.4 __pthread_rwlock_init F
-GLIBC_2.4 __pthread_rwlock_rdlock F
 GLIBC_2.4 __pthread_rwlock_tryrdlock F
 GLIBC_2.4 __pthread_rwlock_trywrlock F
-GLIBC_2.4 __pthread_rwlock_unlock F
-GLIBC_2.4 __pthread_rwlock_wrlock F
 GLIBC_2.4 __pthread_unregister_cancel F
 GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pwrite64 F
@@ -144,13 +141,10 @@  GLIBC_2.4 pthread_mutexattr_setrobust_np F
 GLIBC_2.4 pthread_mutexattr_settype F
 GLIBC_2.4 pthread_rwlock_destroy F
 GLIBC_2.4 pthread_rwlock_init F
-GLIBC_2.4 pthread_rwlock_rdlock F
 GLIBC_2.4 pthread_rwlock_timedrdlock F
 GLIBC_2.4 pthread_rwlock_timedwrlock F
 GLIBC_2.4 pthread_rwlock_tryrdlock F
 GLIBC_2.4 pthread_rwlock_trywrlock F
-GLIBC_2.4 pthread_rwlock_unlock F
-GLIBC_2.4 pthread_rwlock_wrlock F
 GLIBC_2.4 pthread_rwlockattr_destroy F
 GLIBC_2.4 pthread_rwlockattr_getkind_np F
 GLIBC_2.4 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 5a81c61de7..b1ad96e072 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1552,6 +1552,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1821,6 +1824,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2207,6 +2213,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2214,6 +2223,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 99e53d0c49..35cc2f61c5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -120,11 +117,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 39c806db53..3e0cceae93 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -343,6 +343,9 @@  GLIBC_2.18 __pthread_cleanup_routine F
 GLIBC_2.18 __pthread_getspecific F
 GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_rwlock_rdlock F
+GLIBC_2.18 __pthread_rwlock_unlock F
+GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_setspecific F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
@@ -1465,6 +1468,9 @@  GLIBC_2.18 pthread_mutex_init F
 GLIBC_2.18 pthread_mutex_lock F
 GLIBC_2.18 pthread_mutex_unlock F
 GLIBC_2.18 pthread_once F
+GLIBC_2.18 pthread_rwlock_rdlock F
+GLIBC_2.18 pthread_rwlock_unlock F
+GLIBC_2.18 pthread_rwlock_wrlock F
 GLIBC_2.18 pthread_self F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
@@ -2188,6 +2194,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2195,4 +2204,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 8b3785414d..0db83c2f88 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.18 __pthread_register_cancel F
 GLIBC_2.18 __pthread_register_cancel_defer F
 GLIBC_2.18 __pthread_rwlock_destroy F
 GLIBC_2.18 __pthread_rwlock_init F
-GLIBC_2.18 __pthread_rwlock_rdlock F
 GLIBC_2.18 __pthread_rwlock_tryrdlock F
 GLIBC_2.18 __pthread_rwlock_trywrlock F
-GLIBC_2.18 __pthread_rwlock_unlock F
-GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_unregister_cancel F
 GLIBC_2.18 __pthread_unregister_cancel_restore F
 GLIBC_2.18 __pwrite64 F
@@ -114,13 +111,10 @@  GLIBC_2.18 pthread_mutexattr_setrobust_np F
 GLIBC_2.18 pthread_mutexattr_settype F
 GLIBC_2.18 pthread_rwlock_destroy F
 GLIBC_2.18 pthread_rwlock_init F
-GLIBC_2.18 pthread_rwlock_rdlock F
 GLIBC_2.18 pthread_rwlock_timedrdlock F
 GLIBC_2.18 pthread_rwlock_timedwrlock F
 GLIBC_2.18 pthread_rwlock_tryrdlock F
 GLIBC_2.18 pthread_rwlock_trywrlock F
-GLIBC_2.18 pthread_rwlock_unlock F
-GLIBC_2.18 pthread_rwlock_wrlock F
 GLIBC_2.18 pthread_rwlockattr_destroy F
 GLIBC_2.18 pthread_rwlockattr_getkind_np F
 GLIBC_2.18 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index ce2823207c..4ee88a1d01 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -343,6 +343,9 @@  GLIBC_2.18 __pthread_cleanup_routine F
 GLIBC_2.18 __pthread_getspecific F
 GLIBC_2.18 __pthread_key_create F
 GLIBC_2.18 __pthread_once F
+GLIBC_2.18 __pthread_rwlock_rdlock F
+GLIBC_2.18 __pthread_rwlock_unlock F
+GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_setspecific F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __ptsname_r_chk F
@@ -1465,6 +1468,9 @@  GLIBC_2.18 pthread_mutex_init F
 GLIBC_2.18 pthread_mutex_lock F
 GLIBC_2.18 pthread_mutex_unlock F
 GLIBC_2.18 pthread_once F
+GLIBC_2.18 pthread_rwlock_rdlock F
+GLIBC_2.18 pthread_rwlock_unlock F
+GLIBC_2.18 pthread_rwlock_wrlock F
 GLIBC_2.18 pthread_self F
 GLIBC_2.18 pthread_setcancelstate F
 GLIBC_2.18 pthread_setcanceltype F
@@ -2185,6 +2191,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2192,4 +2201,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 8b3785414d..0db83c2f88 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.18 __pthread_register_cancel F
 GLIBC_2.18 __pthread_register_cancel_defer F
 GLIBC_2.18 __pthread_rwlock_destroy F
 GLIBC_2.18 __pthread_rwlock_init F
-GLIBC_2.18 __pthread_rwlock_rdlock F
 GLIBC_2.18 __pthread_rwlock_tryrdlock F
 GLIBC_2.18 __pthread_rwlock_trywrlock F
-GLIBC_2.18 __pthread_rwlock_unlock F
-GLIBC_2.18 __pthread_rwlock_wrlock F
 GLIBC_2.18 __pthread_unregister_cancel F
 GLIBC_2.18 __pthread_unregister_cancel_restore F
 GLIBC_2.18 __pwrite64 F
@@ -114,13 +111,10 @@  GLIBC_2.18 pthread_mutexattr_setrobust_np F
 GLIBC_2.18 pthread_mutexattr_settype F
 GLIBC_2.18 pthread_rwlock_destroy F
 GLIBC_2.18 pthread_rwlock_init F
-GLIBC_2.18 pthread_rwlock_rdlock F
 GLIBC_2.18 pthread_rwlock_timedrdlock F
 GLIBC_2.18 pthread_rwlock_timedwrlock F
 GLIBC_2.18 pthread_rwlock_tryrdlock F
 GLIBC_2.18 pthread_rwlock_trywrlock F
-GLIBC_2.18 pthread_rwlock_unlock F
-GLIBC_2.18 pthread_rwlock_wrlock F
 GLIBC_2.18 pthread_rwlockattr_destroy F
 GLIBC_2.18 pthread_rwlockattr_getkind_np F
 GLIBC_2.18 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 5e8abfa6ae..e67af35000 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1526,6 +1526,9 @@  GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __poll F
 GLIBC_2.2 __pread64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __res_init F
@@ -1813,6 +1816,9 @@  GLIBC_2.2 pread64 F
 GLIBC_2.2 printf_size F
 GLIBC_2.2 printf_size_info F
 GLIBC_2.2 pthread_attr_init F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 ptsname F
 GLIBC_2.2 ptsname_r F
 GLIBC_2.2 putgrent F
@@ -2178,6 +2184,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2185,6 +2194,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index cd0d6d7419..a1a66138d4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -86,11 +86,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
@@ -123,13 +120,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 93002ae842..1ce0179391 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1524,6 +1524,9 @@  GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __poll F
 GLIBC_2.2 __pread64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __res_init F
@@ -1811,6 +1814,9 @@  GLIBC_2.2 pread64 F
 GLIBC_2.2 printf_size F
 GLIBC_2.2 printf_size_info F
 GLIBC_2.2 pthread_attr_init F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 ptsname F
 GLIBC_2.2 ptsname_r F
 GLIBC_2.2 putgrent F
@@ -2176,6 +2182,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2183,6 +2192,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index cd0d6d7419..a1a66138d4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -86,11 +86,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
@@ -123,13 +120,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 245a840e12..54c2300420 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1524,6 +1524,9 @@  GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __poll F
 GLIBC_2.2 __pread64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __res_init F
@@ -1811,6 +1814,9 @@  GLIBC_2.2 pread64 F
 GLIBC_2.2 printf_size F
 GLIBC_2.2 printf_size_info F
 GLIBC_2.2 pthread_attr_init F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 ptsname F
 GLIBC_2.2 ptsname_r F
 GLIBC_2.2 putgrent F
@@ -2184,6 +2190,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2191,6 +2200,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 24b2dddb51..90bbb7f253 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1520,6 +1520,9 @@  GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
 GLIBC_2.2 __poll F
 GLIBC_2.2 __pread64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
 GLIBC_2.2 __res_init F
@@ -1807,6 +1810,9 @@  GLIBC_2.2 pread64 F
 GLIBC_2.2 printf_size F
 GLIBC_2.2 printf_size_info F
 GLIBC_2.2 pthread_attr_init F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 ptsname F
 GLIBC_2.2 ptsname_r F
 GLIBC_2.2 putgrent F
@@ -2178,6 +2184,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2185,6 +2194,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 7d4b4dd278..1f68c2a3fb 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -380,6 +380,9 @@  GLIBC_2.21 __pthread_cleanup_routine F
 GLIBC_2.21 __pthread_getspecific F
 GLIBC_2.21 __pthread_key_create F
 GLIBC_2.21 __pthread_once F
+GLIBC_2.21 __pthread_rwlock_rdlock F
+GLIBC_2.21 __pthread_rwlock_unlock F
+GLIBC_2.21 __pthread_rwlock_wrlock F
 GLIBC_2.21 __pthread_setspecific F
 GLIBC_2.21 __pthread_unwind_next F
 GLIBC_2.21 __ptsname_r_chk F
@@ -1507,6 +1510,9 @@  GLIBC_2.21 pthread_mutex_init F
 GLIBC_2.21 pthread_mutex_lock F
 GLIBC_2.21 pthread_mutex_unlock F
 GLIBC_2.21 pthread_once F
+GLIBC_2.21 pthread_rwlock_rdlock F
+GLIBC_2.21 pthread_rwlock_unlock F
+GLIBC_2.21 pthread_rwlock_wrlock F
 GLIBC_2.21 pthread_self F
 GLIBC_2.21 pthread_setcancelstate F
 GLIBC_2.21 pthread_setcanceltype F
@@ -2226,6 +2232,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2233,4 +2242,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 0250c9756d..806432b7b4 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.21 __pthread_register_cancel F
 GLIBC_2.21 __pthread_register_cancel_defer F
 GLIBC_2.21 __pthread_rwlock_destroy F
 GLIBC_2.21 __pthread_rwlock_init F
-GLIBC_2.21 __pthread_rwlock_rdlock F
 GLIBC_2.21 __pthread_rwlock_tryrdlock F
 GLIBC_2.21 __pthread_rwlock_trywrlock F
-GLIBC_2.21 __pthread_rwlock_unlock F
-GLIBC_2.21 __pthread_rwlock_wrlock F
 GLIBC_2.21 __pthread_unregister_cancel F
 GLIBC_2.21 __pthread_unregister_cancel_restore F
 GLIBC_2.21 __pwrite64 F
@@ -114,13 +111,10 @@  GLIBC_2.21 pthread_mutexattr_setrobust_np F
 GLIBC_2.21 pthread_mutexattr_settype F
 GLIBC_2.21 pthread_rwlock_destroy F
 GLIBC_2.21 pthread_rwlock_init F
-GLIBC_2.21 pthread_rwlock_rdlock F
 GLIBC_2.21 pthread_rwlock_timedrdlock F
 GLIBC_2.21 pthread_rwlock_timedwrlock F
 GLIBC_2.21 pthread_rwlock_tryrdlock F
 GLIBC_2.21 pthread_rwlock_trywrlock F
-GLIBC_2.21 pthread_rwlock_unlock F
-GLIBC_2.21 pthread_rwlock_wrlock F
 GLIBC_2.21 pthread_rwlockattr_destroy F
 GLIBC_2.21 pthread_rwlockattr_getkind_np F
 GLIBC_2.21 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 65ea41b2db..a41536e4cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1560,6 +1560,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1827,6 +1830,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2234,6 +2240,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2241,6 +2250,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index e0eb362a7a..d0646d0eaf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -120,11 +117,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 9d413de126..cdd6e98496 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1560,6 +1560,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1831,6 +1834,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2267,6 +2273,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2274,6 +2283,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 16c24bfc69..63a7449937 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -412,6 +412,9 @@  GLIBC_2.3 __progname_full D 0x8
 GLIBC_2.3 __pthread_getspecific F
 GLIBC_2.3 __pthread_key_create F
 GLIBC_2.3 __pthread_once F
+GLIBC_2.3 __pthread_rwlock_rdlock F
+GLIBC_2.3 __pthread_rwlock_unlock F
+GLIBC_2.3 __pthread_rwlock_wrlock F
 GLIBC_2.3 __pthread_setspecific F
 GLIBC_2.3 __pwrite64 F
 GLIBC_2.3 __rawmemchr F
@@ -1390,6 +1393,9 @@  GLIBC_2.3 pthread_mutex_init F
 GLIBC_2.3 pthread_mutex_lock F
 GLIBC_2.3 pthread_mutex_unlock F
 GLIBC_2.3 pthread_once F
+GLIBC_2.3 pthread_rwlock_rdlock F
+GLIBC_2.3 pthread_rwlock_unlock F
+GLIBC_2.3 pthread_rwlock_wrlock F
 GLIBC_2.3 pthread_self F
 GLIBC_2.3 pthread_setcancelstate F
 GLIBC_2.3 pthread_setcanceltype F
@@ -2097,6 +2103,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2104,6 +2113,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 1099d88afe..72d49ce4f3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -51,11 +51,8 @@  GLIBC_2.3 __pthread_mutexattr_init F
 GLIBC_2.3 __pthread_mutexattr_settype F
 GLIBC_2.3 __pthread_rwlock_destroy F
 GLIBC_2.3 __pthread_rwlock_init F
-GLIBC_2.3 __pthread_rwlock_rdlock F
 GLIBC_2.3 __pthread_rwlock_tryrdlock F
 GLIBC_2.3 __pthread_rwlock_trywrlock F
-GLIBC_2.3 __pthread_rwlock_unlock F
-GLIBC_2.3 __pthread_rwlock_wrlock F
 GLIBC_2.3 __pwrite64 F
 GLIBC_2.3 __read F
 GLIBC_2.3 __res_state F
@@ -122,13 +119,10 @@  GLIBC_2.3 pthread_mutexattr_setpshared F
 GLIBC_2.3 pthread_mutexattr_settype F
 GLIBC_2.3 pthread_rwlock_destroy F
 GLIBC_2.3 pthread_rwlock_init F
-GLIBC_2.3 pthread_rwlock_rdlock F
 GLIBC_2.3 pthread_rwlock_timedrdlock F
 GLIBC_2.3 pthread_rwlock_timedwrlock F
 GLIBC_2.3 pthread_rwlock_tryrdlock F
 GLIBC_2.3 pthread_rwlock_trywrlock F
-GLIBC_2.3 pthread_rwlock_unlock F
-GLIBC_2.3 pthread_rwlock_wrlock F
 GLIBC_2.3 pthread_rwlockattr_destroy F
 GLIBC_2.3 pthread_rwlockattr_getkind_np F
 GLIBC_2.3 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index d97c594edd..b6de88ea41 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -428,6 +428,9 @@  GLIBC_2.17 __pthread_cleanup_routine F
 GLIBC_2.17 __pthread_getspecific F
 GLIBC_2.17 __pthread_key_create F
 GLIBC_2.17 __pthread_once F
+GLIBC_2.17 __pthread_rwlock_rdlock F
+GLIBC_2.17 __pthread_rwlock_unlock F
+GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_setspecific F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __ptsname_r_chk F
@@ -1551,6 +1554,9 @@  GLIBC_2.17 pthread_mutex_init F
 GLIBC_2.17 pthread_mutex_lock F
 GLIBC_2.17 pthread_mutex_unlock F
 GLIBC_2.17 pthread_once F
+GLIBC_2.17 pthread_rwlock_rdlock F
+GLIBC_2.17 pthread_rwlock_unlock F
+GLIBC_2.17 pthread_rwlock_wrlock F
 GLIBC_2.17 pthread_self F
 GLIBC_2.17 pthread_setcancelstate F
 GLIBC_2.17 pthread_setcanceltype F
@@ -2388,6 +2394,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2395,4 +2404,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 50ab959905..9a24f796de 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.17 __pthread_register_cancel F
 GLIBC_2.17 __pthread_register_cancel_defer F
 GLIBC_2.17 __pthread_rwlock_destroy F
 GLIBC_2.17 __pthread_rwlock_init F
-GLIBC_2.17 __pthread_rwlock_rdlock F
 GLIBC_2.17 __pthread_rwlock_tryrdlock F
 GLIBC_2.17 __pthread_rwlock_trywrlock F
-GLIBC_2.17 __pthread_rwlock_unlock F
-GLIBC_2.17 __pthread_rwlock_wrlock F
 GLIBC_2.17 __pthread_unregister_cancel F
 GLIBC_2.17 __pthread_unregister_cancel_restore F
 GLIBC_2.17 __pwrite64 F
@@ -113,13 +110,10 @@  GLIBC_2.17 pthread_mutexattr_setrobust_np F
 GLIBC_2.17 pthread_mutexattr_settype F
 GLIBC_2.17 pthread_rwlock_destroy F
 GLIBC_2.17 pthread_rwlock_init F
-GLIBC_2.17 pthread_rwlock_rdlock F
 GLIBC_2.17 pthread_rwlock_timedrdlock F
 GLIBC_2.17 pthread_rwlock_timedwrlock F
 GLIBC_2.17 pthread_rwlock_tryrdlock F
 GLIBC_2.17 pthread_rwlock_trywrlock F
-GLIBC_2.17 pthread_rwlock_unlock F
-GLIBC_2.17 pthread_rwlock_wrlock F
 GLIBC_2.17 pthread_rwlockattr_destroy F
 GLIBC_2.17 pthread_rwlockattr_getkind_np F
 GLIBC_2.17 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 44b0121343..d81b46d597 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -328,6 +328,9 @@  GLIBC_2.33 __pthread_cleanup_routine F
 GLIBC_2.33 __pthread_getspecific F
 GLIBC_2.33 __pthread_key_create F
 GLIBC_2.33 __pthread_once F
+GLIBC_2.33 __pthread_rwlock_rdlock F
+GLIBC_2.33 __pthread_rwlock_unlock F
+GLIBC_2.33 __pthread_rwlock_wrlock F
 GLIBC_2.33 __pthread_setspecific F
 GLIBC_2.33 __pthread_unwind_next F
 GLIBC_2.33 __ptsname_r_chk F
@@ -1391,6 +1394,9 @@  GLIBC_2.33 pthread_mutex_init F
 GLIBC_2.33 pthread_mutex_lock F
 GLIBC_2.33 pthread_mutex_unlock F
 GLIBC_2.33 pthread_once F
+GLIBC_2.33 pthread_rwlock_rdlock F
+GLIBC_2.33 pthread_rwlock_unlock F
+GLIBC_2.33 pthread_rwlock_wrlock F
 GLIBC_2.33 pthread_self F
 GLIBC_2.33 pthread_setcancelstate F
 GLIBC_2.33 pthread_setcanceltype F
@@ -1955,6 +1961,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -1962,4 +1971,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 6c6fdd0cbf..10e50b67c0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -24,11 +24,8 @@  GLIBC_2.33 __pthread_register_cancel F
 GLIBC_2.33 __pthread_register_cancel_defer F
 GLIBC_2.33 __pthread_rwlock_destroy F
 GLIBC_2.33 __pthread_rwlock_init F
-GLIBC_2.33 __pthread_rwlock_rdlock F
 GLIBC_2.33 __pthread_rwlock_tryrdlock F
 GLIBC_2.33 __pthread_rwlock_trywrlock F
-GLIBC_2.33 __pthread_rwlock_unlock F
-GLIBC_2.33 __pthread_rwlock_wrlock F
 GLIBC_2.33 __pthread_unregister_cancel F
 GLIBC_2.33 __pthread_unregister_cancel_restore F
 GLIBC_2.33 __pwrite64 F
@@ -130,13 +127,10 @@  GLIBC_2.33 pthread_rwlock_clockrdlock F
 GLIBC_2.33 pthread_rwlock_clockwrlock F
 GLIBC_2.33 pthread_rwlock_destroy F
 GLIBC_2.33 pthread_rwlock_init F
-GLIBC_2.33 pthread_rwlock_rdlock F
 GLIBC_2.33 pthread_rwlock_timedrdlock F
 GLIBC_2.33 pthread_rwlock_timedwrlock F
 GLIBC_2.33 pthread_rwlock_tryrdlock F
 GLIBC_2.33 pthread_rwlock_trywrlock F
-GLIBC_2.33 pthread_rwlock_unlock F
-GLIBC_2.33 pthread_rwlock_wrlock F
 GLIBC_2.33 pthread_rwlockattr_destroy F
 GLIBC_2.33 pthread_rwlockattr_getkind_np F
 GLIBC_2.33 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 22a34442f0..fbd1c5e5cf 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -339,6 +339,9 @@  GLIBC_2.27 __pthread_cleanup_routine F
 GLIBC_2.27 __pthread_getspecific F
 GLIBC_2.27 __pthread_key_create F
 GLIBC_2.27 __pthread_once F
+GLIBC_2.27 __pthread_rwlock_rdlock F
+GLIBC_2.27 __pthread_rwlock_unlock F
+GLIBC_2.27 __pthread_rwlock_wrlock F
 GLIBC_2.27 __pthread_setspecific F
 GLIBC_2.27 __pthread_unwind_next F
 GLIBC_2.27 __ptsname_r_chk F
@@ -1453,6 +1456,9 @@  GLIBC_2.27 pthread_mutex_init F
 GLIBC_2.27 pthread_mutex_lock F
 GLIBC_2.27 pthread_mutex_unlock F
 GLIBC_2.27 pthread_once F
+GLIBC_2.27 pthread_rwlock_rdlock F
+GLIBC_2.27 pthread_rwlock_unlock F
+GLIBC_2.27 pthread_rwlock_wrlock F
 GLIBC_2.27 pthread_self F
 GLIBC_2.27 pthread_setcancelstate F
 GLIBC_2.27 pthread_setcanceltype F
@@ -2155,6 +2161,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2162,4 +2171,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 359545faee..ed24898e0d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.27 __pthread_register_cancel F
 GLIBC_2.27 __pthread_register_cancel_defer F
 GLIBC_2.27 __pthread_rwlock_destroy F
 GLIBC_2.27 __pthread_rwlock_init F
-GLIBC_2.27 __pthread_rwlock_rdlock F
 GLIBC_2.27 __pthread_rwlock_tryrdlock F
 GLIBC_2.27 __pthread_rwlock_trywrlock F
-GLIBC_2.27 __pthread_rwlock_unlock F
-GLIBC_2.27 __pthread_rwlock_wrlock F
 GLIBC_2.27 __pthread_unregister_cancel F
 GLIBC_2.27 __pthread_unregister_cancel_restore F
 GLIBC_2.27 __pwrite64 F
@@ -114,13 +111,10 @@  GLIBC_2.27 pthread_mutexattr_setrobust_np F
 GLIBC_2.27 pthread_mutexattr_settype F
 GLIBC_2.27 pthread_rwlock_destroy F
 GLIBC_2.27 pthread_rwlock_init F
-GLIBC_2.27 pthread_rwlock_rdlock F
 GLIBC_2.27 pthread_rwlock_timedrdlock F
 GLIBC_2.27 pthread_rwlock_timedwrlock F
 GLIBC_2.27 pthread_rwlock_tryrdlock F
 GLIBC_2.27 pthread_rwlock_trywrlock F
-GLIBC_2.27 pthread_rwlock_unlock F
-GLIBC_2.27 pthread_rwlock_wrlock F
 GLIBC_2.27 pthread_rwlockattr_destroy F
 GLIBC_2.27 pthread_rwlockattr_getkind_np F
 GLIBC_2.27 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 21f49b1fa0..27a9b011a8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1552,6 +1552,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1825,6 +1828,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2232,6 +2238,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2239,6 +2248,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 5eb6187d98..d6e91c977a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -121,11 +118,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 114591d6f5..9e79331100 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -373,6 +373,9 @@  GLIBC_2.2 __progname_full D 0x8
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1301,6 +1304,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2133,6 +2139,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2140,6 +2149,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 8f60a6b633..14489b39d0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -31,11 +31,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -103,13 +100,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index ad487f0c9f..b7dd795864 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -362,6 +362,9 @@  GLIBC_2.2 __progname_full D 0x4
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1287,6 +1290,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2102,6 +2108,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2109,6 +2118,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index d0e8564302..70af59d791 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 7f6886ff02..eea30cd098 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -362,6 +362,9 @@  GLIBC_2.2 __progname_full D 0x4
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1287,6 +1290,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2099,6 +2105,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2106,6 +2115,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index d0e8564302..70af59d791 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4ae6d45923..4944c4159b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1553,6 +1553,9 @@  GLIBC_2.1 pread64 F
 GLIBC_2.1 printf_size F
 GLIBC_2.1 printf_size_info F
 GLIBC_2.1 pthread_attr_init F
+GLIBC_2.1 pthread_rwlock_rdlock F
+GLIBC_2.1 pthread_rwlock_unlock F
+GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 ptsname F
 GLIBC_2.1 ptsname_r F
 GLIBC_2.1 putgrent F
@@ -1823,6 +1826,9 @@  GLIBC_2.2 __getmntent_r F
 GLIBC_2.2 __lxstat64 F
 GLIBC_2.2 __nl_langinfo_l F
 GLIBC_2.2 __open64 F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __res_init F
 GLIBC_2.2 __res_nclose F
 GLIBC_2.2 __res_ninit F
@@ -2223,6 +2229,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2230,6 +2239,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 9d78d94466..a7b3fd73ab 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -87,11 +87,8 @@  GLIBC_2.1 pthread_mutexattr_gettype F
 GLIBC_2.1 pthread_mutexattr_settype F
 GLIBC_2.1 pthread_rwlock_destroy F
 GLIBC_2.1 pthread_rwlock_init F
-GLIBC_2.1 pthread_rwlock_rdlock F
 GLIBC_2.1 pthread_rwlock_tryrdlock F
 GLIBC_2.1 pthread_rwlock_trywrlock F
-GLIBC_2.1 pthread_rwlock_unlock F
-GLIBC_2.1 pthread_rwlock_wrlock F
 GLIBC_2.1 pthread_rwlockattr_destroy F
 GLIBC_2.1 pthread_rwlockattr_getkind_np F
 GLIBC_2.1 pthread_rwlockattr_getpshared F
@@ -120,11 +117,8 @@  GLIBC_2.2 __open64 F
 GLIBC_2.2 __pread64 F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
 GLIBC_2.2 lseek64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 44d0f68cb2..e69420994f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -400,6 +400,9 @@  GLIBC_2.2 __progname_full D 0x8
 GLIBC_2.2 __pthread_getspecific F
 GLIBC_2.2 __pthread_key_create F
 GLIBC_2.2 __pthread_once F
+GLIBC_2.2 __pthread_rwlock_rdlock F
+GLIBC_2.2 __pthread_rwlock_unlock F
+GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __rawmemchr F
@@ -1330,6 +1333,9 @@  GLIBC_2.2 pthread_mutex_init F
 GLIBC_2.2 pthread_mutex_lock F
 GLIBC_2.2 pthread_mutex_unlock F
 GLIBC_2.2 pthread_once F
+GLIBC_2.2 pthread_rwlock_rdlock F
+GLIBC_2.2 pthread_rwlock_unlock F
+GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_self F
 GLIBC_2.2 pthread_setcancelstate F
 GLIBC_2.2 pthread_setcanceltype F
@@ -2150,6 +2156,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2157,6 +2166,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index ff37f3905e..2e69109cdc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2 __pthread_mutexattr_init F
 GLIBC_2.2 __pthread_mutexattr_settype F
 GLIBC_2.2 __pthread_rwlock_destroy F
 GLIBC_2.2 __pthread_rwlock_init F
-GLIBC_2.2 __pthread_rwlock_rdlock F
 GLIBC_2.2 __pthread_rwlock_tryrdlock F
 GLIBC_2.2 __pthread_rwlock_trywrlock F
-GLIBC_2.2 __pthread_rwlock_unlock F
-GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __read F
 GLIBC_2.2 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2 pthread_mutexattr_setpshared F
 GLIBC_2.2 pthread_mutexattr_settype F
 GLIBC_2.2 pthread_rwlock_destroy F
 GLIBC_2.2 pthread_rwlock_init F
-GLIBC_2.2 pthread_rwlock_rdlock F
 GLIBC_2.2 pthread_rwlock_timedrdlock F
 GLIBC_2.2 pthread_rwlock_timedwrlock F
 GLIBC_2.2 pthread_rwlock_tryrdlock F
 GLIBC_2.2 pthread_rwlock_trywrlock F
-GLIBC_2.2 pthread_rwlock_unlock F
-GLIBC_2.2 pthread_rwlock_wrlock F
 GLIBC_2.2 pthread_rwlockattr_destroy F
 GLIBC_2.2 pthread_rwlockattr_getkind_np F
 GLIBC_2.2 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index d96699a20d..dfe78d93cb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -361,6 +361,9 @@  GLIBC_2.2.5 __progname_full D 0x8
 GLIBC_2.2.5 __pthread_getspecific F
 GLIBC_2.2.5 __pthread_key_create F
 GLIBC_2.2.5 __pthread_once F
+GLIBC_2.2.5 __pthread_rwlock_rdlock F
+GLIBC_2.2.5 __pthread_rwlock_unlock F
+GLIBC_2.2.5 __pthread_rwlock_wrlock F
 GLIBC_2.2.5 __pthread_setspecific F
 GLIBC_2.2.5 __pwrite64 F
 GLIBC_2.2.5 __rawmemchr F
@@ -1298,6 +1301,9 @@  GLIBC_2.2.5 pthread_mutex_init F
 GLIBC_2.2.5 pthread_mutex_lock F
 GLIBC_2.2.5 pthread_mutex_unlock F
 GLIBC_2.2.5 pthread_once F
+GLIBC_2.2.5 pthread_rwlock_rdlock F
+GLIBC_2.2.5 pthread_rwlock_unlock F
+GLIBC_2.2.5 pthread_rwlock_wrlock F
 GLIBC_2.2.5 pthread_self F
 GLIBC_2.2.5 pthread_setcancelstate F
 GLIBC_2.2.5 pthread_setcanceltype F
@@ -2109,6 +2115,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2116,6 +2125,9 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 511240921e..4f8dfa000a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -30,11 +30,8 @@  GLIBC_2.2.5 __pthread_mutexattr_init F
 GLIBC_2.2.5 __pthread_mutexattr_settype F
 GLIBC_2.2.5 __pthread_rwlock_destroy F
 GLIBC_2.2.5 __pthread_rwlock_init F
-GLIBC_2.2.5 __pthread_rwlock_rdlock F
 GLIBC_2.2.5 __pthread_rwlock_tryrdlock F
 GLIBC_2.2.5 __pthread_rwlock_trywrlock F
-GLIBC_2.2.5 __pthread_rwlock_unlock F
-GLIBC_2.2.5 __pthread_rwlock_wrlock F
 GLIBC_2.2.5 __pwrite64 F
 GLIBC_2.2.5 __read F
 GLIBC_2.2.5 __res_state F
@@ -102,13 +99,10 @@  GLIBC_2.2.5 pthread_mutexattr_setpshared F
 GLIBC_2.2.5 pthread_mutexattr_settype F
 GLIBC_2.2.5 pthread_rwlock_destroy F
 GLIBC_2.2.5 pthread_rwlock_init F
-GLIBC_2.2.5 pthread_rwlock_rdlock F
 GLIBC_2.2.5 pthread_rwlock_timedrdlock F
 GLIBC_2.2.5 pthread_rwlock_timedwrlock F
 GLIBC_2.2.5 pthread_rwlock_tryrdlock F
 GLIBC_2.2.5 pthread_rwlock_trywrlock F
-GLIBC_2.2.5 pthread_rwlock_unlock F
-GLIBC_2.2.5 pthread_rwlock_wrlock F
 GLIBC_2.2.5 pthread_rwlockattr_destroy F
 GLIBC_2.2.5 pthread_rwlockattr_getkind_np F
 GLIBC_2.2.5 pthread_rwlockattr_getpshared F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 33bbaff90c..3accd92583 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -343,6 +343,9 @@  GLIBC_2.16 __pthread_cleanup_routine F
 GLIBC_2.16 __pthread_getspecific F
 GLIBC_2.16 __pthread_key_create F
 GLIBC_2.16 __pthread_once F
+GLIBC_2.16 __pthread_rwlock_rdlock F
+GLIBC_2.16 __pthread_rwlock_unlock F
+GLIBC_2.16 __pthread_rwlock_wrlock F
 GLIBC_2.16 __pthread_setspecific F
 GLIBC_2.16 __pthread_unwind_next F
 GLIBC_2.16 __ptsname_r_chk F
@@ -1470,6 +1473,9 @@  GLIBC_2.16 pthread_mutex_init F
 GLIBC_2.16 pthread_mutex_lock F
 GLIBC_2.16 pthread_mutex_unlock F
 GLIBC_2.16 pthread_once F
+GLIBC_2.16 pthread_rwlock_rdlock F
+GLIBC_2.16 pthread_rwlock_unlock F
+GLIBC_2.16 pthread_rwlock_wrlock F
 GLIBC_2.16 pthread_self F
 GLIBC_2.16 pthread_setcancelstate F
 GLIBC_2.16 pthread_setcanceltype F
@@ -2207,6 +2213,9 @@  GLIBC_2.34 __pthread_cleanup_routine F
 GLIBC_2.34 __pthread_getspecific F
 GLIBC_2.34 __pthread_key_create F
 GLIBC_2.34 __pthread_once F
+GLIBC_2.34 __pthread_rwlock_rdlock F
+GLIBC_2.34 __pthread_rwlock_unlock F
+GLIBC_2.34 __pthread_rwlock_wrlock F
 GLIBC_2.34 __pthread_setspecific F
 GLIBC_2.34 __pthread_unwind_next F
 GLIBC_2.34 pthread_getspecific F
@@ -2214,4 +2223,7 @@  GLIBC_2.34 pthread_key_create F
 GLIBC_2.34 pthread_key_delete F
 GLIBC_2.34 pthread_mutex_consistent F
 GLIBC_2.34 pthread_once F
+GLIBC_2.34 pthread_rwlock_rdlock F
+GLIBC_2.34 pthread_rwlock_unlock F
+GLIBC_2.34 pthread_rwlock_wrlock F
 GLIBC_2.34 pthread_setspecific F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index a481ef56ab..0b017c0218 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -25,11 +25,8 @@  GLIBC_2.16 __pthread_register_cancel F
 GLIBC_2.16 __pthread_register_cancel_defer F
 GLIBC_2.16 __pthread_rwlock_destroy F
 GLIBC_2.16 __pthread_rwlock_init F
-GLIBC_2.16 __pthread_rwlock_rdlock F
 GLIBC_2.16 __pthread_rwlock_tryrdlock F
 GLIBC_2.16 __pthread_rwlock_trywrlock F
-GLIBC_2.16 __pthread_rwlock_unlock F
-GLIBC_2.16 __pthread_rwlock_wrlock F
 GLIBC_2.16 __pthread_unregister_cancel F
 GLIBC_2.16 __pthread_unregister_cancel_restore F
 GLIBC_2.16 __pwrite64 F
@@ -113,13 +110,10 @@  GLIBC_2.16 pthread_mutexattr_setrobust_np F
 GLIBC_2.16 pthread_mutexattr_settype F
 GLIBC_2.16 pthread_rwlock_destroy F
 GLIBC_2.16 pthread_rwlock_init F
-GLIBC_2.16 pthread_rwlock_rdlock F
 GLIBC_2.16 pthread_rwlock_timedrdlock F
 GLIBC_2.16 pthread_rwlock_timedwrlock F
 GLIBC_2.16 pthread_rwlock_tryrdlock F
 GLIBC_2.16 pthread_rwlock_trywrlock F
-GLIBC_2.16 pthread_rwlock_unlock F
-GLIBC_2.16 pthread_rwlock_wrlock F
 GLIBC_2.16 pthread_rwlockattr_destroy F
 GLIBC_2.16 pthread_rwlockattr_getkind_np F
 GLIBC_2.16 pthread_rwlockattr_getpshared F