public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Florian Weimer <fweimer@redhat.com>, libc-alpha@sourceware.org
Subject: Re: [PATCH v3 28/37] nptl: Move rwlock functions with forwarders into libc
Date: Thu, 25 Mar 2021 16:52:21 -0300	[thread overview]
Message-ID: <fe5d1ddd-846e-3a7d-9a0a-fc83ef8b36bb@linaro.org> (raw)
In-Reply-To: <e3a412c6aab7f7a6bc7da4fee217fb473b5355c6.1615914632.git.fweimer@redhat.com>



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.

  reply	other threads:[~2021-03-25 19:52 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-16 17:27 [PATCH v3 00/37] libpthread removal: NPTL forwarders are gone Florian Weimer
2021-03-16 17:27 ` [PATCH v3 01/37] nptl: Move pthread_mutex_consistent into libc Florian Weimer
2021-03-17 11:36   ` Adhemerval Zanella
2021-03-16 17:27 ` [PATCH v3 02/37] nptl: Move __pthread_cleanup_routine " Florian Weimer
2021-03-16 17:27 ` [PATCH v3 03/37] nptl: Move legacy unwinding implementation " Florian Weimer
2021-03-16 17:27 ` [PATCH v3 04/37] nptl: Move legacy cancelation handling into libc as compat symbols Florian Weimer
2021-03-16 17:27 ` [PATCH v3 05/37] nptl: Remove longjmp, siglongjmp from libpthread Florian Weimer
2021-03-17 11:38   ` Adhemerval Zanella
2021-03-16 17:28 ` [PATCH v3 06/37] x86: Restore compile-time check for shadow stack pointer in longjmp Florian Weimer
2021-03-16 17:28 ` [PATCH v3 07/37] nptl: Move __pthread_cleanup_upto into libc Florian Weimer
2021-03-16 17:28 ` [PATCH v3 08/37] nptl: Move pthread_once and __pthread_once " Florian Weimer
2021-03-17 13:30   ` Adhemerval Zanella
2021-03-17 13:37     ` Adhemerval Zanella
2021-03-17 14:45       ` Florian Weimer
2021-03-17 16:39         ` Adhemerval Zanella
2021-03-17 16:56           ` Florian Weimer
2021-03-17 17:22             ` Adhemerval Zanella
2021-03-17 17:43               ` Florian Weimer
2021-03-17 19:09                 ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 09/37] nptl: Move __pthread_unwind_next " Florian Weimer
2021-03-17 19:42   ` Adhemerval Zanella
2021-03-17 19:54     ` Florian Weimer
2021-03-17 20:16       ` Adhemerval Zanella
2021-03-17 20:33         ` Florian Weimer
2021-03-17 20:44           ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 10/37] csu: Move calling main out of __libc_start_main_impl Florian Weimer
2021-03-17 20:45   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 11/37] nptl: Move internal __nptl_nthreads variable into libc Florian Weimer
2021-03-18 12:42   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 12/37] nptl_db: Introduce DB_MAIN_ARRAY_VARIABLE Florian Weimer
2021-03-18 12:43   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 13/37] nptl: Move __pthread_keys global variable into libc Florian Weimer
2021-03-18 12:44   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 14/37] nptl: Move __nptl_deallocate_tsd " Florian Weimer
2021-03-18 12:46   ` Adhemerval Zanella
2021-03-18 17:16     ` Florian Weimer
2021-03-18 17:54       ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 15/37] nptl: Move pthread_exit " Florian Weimer
2021-03-18 12:49   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 16/37] nptl: Move pthread_setcancelstate " Florian Weimer
2021-03-18 12:52   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 17/37] nptl: Move pthread_setcanceltype " Florian Weimer
2021-03-18 12:53   ` Adhemerval Zanella
2021-03-16 17:29 ` [PATCH v3 18/37] nptl: Invoke the set_robust_list system call directly in fork Florian Weimer
2021-03-18 12:54   ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 19/37] dlfcn: Failures after dlmopen should not terminate process [BZ #24772] Florian Weimer
2021-03-19 19:56   ` Adhemerval Zanella
2021-03-27 16:57     ` Florian Weimer
2021-03-16 17:30 ` [PATCH v3 20/37] dlfcn: dlerror needs to call free from the base namespace [BZ #24773] Florian Weimer
2021-03-23 14:47   ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 21/37] Remove pthread_key_create-related internals from libc-lock.h Florian Weimer
2021-03-23 16:39   ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 22/37] elf: Introduce __tls_init_tp for second-phase TCB initialization Florian Weimer
2021-03-23 18:25   ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 23/37] nptl: Move part of TCB initialization from libpthread to __tls_init_tp Florian Weimer
2021-03-24 13:56   ` Adhemerval Zanella
2021-03-27 17:19     ` Florian Weimer
2021-03-16 17:30 ` [PATCH v3 24/37] nptl: Move pthread_key_create, __pthread_key_create into libc Florian Weimer
2021-03-24 14:09   ` Adhemerval Zanella
2021-03-24 14:32     ` Florian Weimer
2021-03-24 14:42       ` Adhemerval Zanella
2021-03-24 15:08         ` Florian Weimer
2021-03-24 15:46           ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 25/37] nptl: Move pthread_getspecific, __pthread_getspecific " Florian Weimer
2021-03-24 14:12   ` Adhemerval Zanella
2021-03-24 14:38     ` Florian Weimer
2021-03-24 14:43       ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 26/37] nptl: Move pthread_setspecific, __pthread_setspecific " Florian Weimer
2021-03-24 14:26   ` Adhemerval Zanella
2021-03-16 17:30 ` [PATCH v3 27/37] nptl: Move pthread_key_delete " Florian Weimer
2021-03-24 14:45   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 28/37] nptl: Move rwlock functions with forwarders " Florian Weimer
2021-03-25 19:52   ` Adhemerval Zanella [this message]
2021-03-27 21:41     ` Florian Weimer
2021-03-16 17:31 ` [PATCH v3 29/37] nptl: Move the internal thread priority protection symbols " Florian Weimer
2021-03-25 20:21   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 30/37] pthread: Introduce __pthread_early_init Florian Weimer
2021-03-25 20:22   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 31/37] nptl: Move internal symbol __mutex_aconf into libc Florian Weimer
2021-03-25 20:24   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 32/37] nptl: pthread_mutex_lock, pthread_mutex_unock single-threaded optimization Florian Weimer
2021-03-26 18:00   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 33/37] x86: Remove low-level lock optimization Florian Weimer
2021-03-25 20:30   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 34/37] nptl: Move core mutex functions into libc Florian Weimer
2021-03-25 20:46   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 35/37] nptl: Move core condition variable " Florian Weimer
2021-03-26 17:14   ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 36/37] nptl: Move setxid broadcast implementation " Florian Weimer
2021-03-26 18:15   ` Adhemerval Zanella
2021-04-06 18:41     ` Florian Weimer
2021-04-06 18:54       ` Adhemerval Zanella
2021-04-06 19:23         ` Florian Weimer
2021-04-06 19:40           ` Adhemerval Zanella
2021-03-16 17:31 ` [PATCH v3 37/37] nptl: Remove remnants of the libc/libpthread forwarder interface Florian Weimer
2021-03-26 18:19   ` Adhemerval Zanella
2021-03-18 22:06 ` [PATCH v3 00/37] libpthread removal: NPTL forwarders are gone Florian Weimer
2021-03-26 18:25 ` Adhemerval Zanella
2021-03-31 10:18   ` Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fe5d1ddd-846e-3a7d-9a0a-fc83ef8b36bb@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).