From: Xi Ruoyao Date: Fri, 29 Aug 2025 03:39:35 +0000 (+0800) Subject: nptl: Drop IS_IN (libpthread) around hidden_proto (__pthread_rwlock_unlock) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4a32b39bb1e4f42ec675aba9dbd39288eb9323b0;p=thirdparty%2Fglibc.git nptl: Drop IS_IN (libpthread) around hidden_proto (__pthread_rwlock_unlock) Now libpthread is a dummy library and it no longer contains __pthread_rwlock_unlock at all, thus IS_IN (libpthread) does not make sense here. It seems an left over from commit eb29dcde31e7 ("nptl: Move rwlock functions with forwarders into libc") and it caused libc.so to export an unversioned __pthread_rwlock_unlock on Linux ports introduced after the 2.34 release (loongarch and or1k) but the symbol is not ever supposed to be exported on those new ports. Only since the commit 3b2b88cceeb7 ("elf: early conversion of elf p_flags to mprotect flags") the header dependency change happened to pull in libc-lockP.h which sets hidden_proto (__pthread_rwlock_unlock) correctly, the symbol is no longer exported, breaking the ABI on those ports. Remove this #if as a clean up and to prevent such a mess from happening again. Signed-off-by: Xi Ruoyao Reviewed-by: Florian Weimer --- diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h index 8f256967e2..3c9a14c3d6 100644 --- a/sysdeps/nptl/pthreadP.h +++ b/sysdeps/nptl/pthreadP.h @@ -405,6 +405,7 @@ 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_cond_broadcast (pthread_cond_t *cond); libc_hidden_proto (__pthread_cond_broadcast) extern int __pthread_cond_destroy (pthread_cond_t *cond); @@ -526,11 +527,6 @@ extern int __pthread_clockjoin_ex (pthread_t, void **, clockid_t, extern int __pthread_sigmask (int, const sigset_t *, sigset_t *); libc_hidden_proto (__pthread_sigmask); - -#if IS_IN (libpthread) -hidden_proto (__pthread_rwlock_unlock) -#endif - extern int __pthread_cond_broadcast_2_0 (pthread_cond_2_0_t *cond); extern int __pthread_cond_destroy_2_0 (pthread_cond_2_0_t *cond); extern int __pthread_cond_init_2_0 (pthread_cond_2_0_t *cond,