From 80fe172ba9820199c2bbce5d0611ffca27823049 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 9 Nov 2021 23:45:36 +0000 Subject: [PATCH] libstdc++: Disable gthreads weak symbols for glibc 2.34 [PR103133] Since Glibc 2.34 all pthreads symbols are defined directly in libc not libpthread, and since Glibc 2.32 we have used __libc_single_threaded to avoid unnecessary locking in single-threaded programs. This means there is no reason to avoid linking to libpthread now, and so no reason to use weak symbols defined in gthr-posix.h for all the pthread_xxx functions. libstdc++-v3/ChangeLog: PR libstdc++/100748 PR libstdc++/103133 * config/os/gnu-linux/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK): Define for glibc 2.34 and later. --- libstdc++-v3/config/os/gnu-linux/os_defines.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/config/os/gnu-linux/os_defines.h b/libstdc++-v3/config/os/gnu-linux/os_defines.h index d5bb2a1886e3..3a0534541959 100644 --- a/libstdc++-v3/config/os/gnu-linux/os_defines.h +++ b/libstdc++-v3/config/os/gnu-linux/os_defines.h @@ -61,4 +61,10 @@ (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) #endif +#if __GLIBC_PREREQ(2, 34) +// Since glibc 2.34 all pthreads functions are usable without linking to +// libpthread. +# define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + #endif -- 2.47.2