[gcc r10-10928] libstdc++: Disable gthreads weak symbols for glibc 2.34 [PR103133]

Jonathan Wakely redi@gcc.gnu.org
Wed Aug 3 12:30:37 GMT 2022


https://gcc.gnu.org/g:18eecb8c4a97716d4bc4890b05c91f172fadc7b3

commit r10-10928-g18eecb8c4a97716d4bc4890b05c91f172fadc7b3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Nov 9 23:45:36 2021 +0000

    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.
    
    (cherry picked from commit 80fe172ba9820199c2bbce5d0611ffca27823049)

Diff:
---
 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 01bfa9ddd4f..cb842ea26aa 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


More information about the Libstdc++-cvs mailing list