Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    fe02f6ca
    libgcc: Don't use weakrefs for glibc 2.34 · fe02f6ca
    Jakub Jelinek authored
    glibc 2.34 and later doesn't have separate libpthread (libpthread.so.0 is a
    dummy shared library with just some symbol versions for compatibility, but
    all the pthread_* APIs are in libc.so.6).
    So, we don't need to do the .weakref dances to check whether a program
    has been linked with -lpthread or not, in dynamically linked apps those
    will be always true anyway.
    In -static linking, this fixes various issues people had when only linking
    some parts of libpthread.a and getting weird crashes.  A hack for that was
    what e.g. some Fedora glibcs used, where libpthread.a was a library
    containing just one giant *.o file which had all the normal libpthread.a
    *.o files linked with -r together.
    
    libstdc++-v3 actually does something like this already since r10-10928,
    the following patch is meant to fix it even for libgfortran, libobjc and
    whatever else uses gthr.h.
    
    2024-04-25  Jakub Jelinek  <jakub@redhat.com>
    
    	* gthr.h (GTHREAD_USE_WEAK): Redefine to 0 for GLIBC 2.34 or later.
    fe02f6ca
    History
    libgcc: Don't use weakrefs for glibc 2.34
    Jakub Jelinek authored
    glibc 2.34 and later doesn't have separate libpthread (libpthread.so.0 is a
    dummy shared library with just some symbol versions for compatibility, but
    all the pthread_* APIs are in libc.so.6).
    So, we don't need to do the .weakref dances to check whether a program
    has been linked with -lpthread or not, in dynamically linked apps those
    will be always true anyway.
    In -static linking, this fixes various issues people had when only linking
    some parts of libpthread.a and getting weird crashes.  A hack for that was
    what e.g. some Fedora glibcs used, where libpthread.a was a library
    containing just one giant *.o file which had all the normal libpthread.a
    *.o files linked with -r together.
    
    libstdc++-v3 actually does something like this already since r10-10928,
    the following patch is meant to fix it even for libgfortran, libobjc and
    whatever else uses gthr.h.
    
    2024-04-25  Jakub Jelinek  <jakub@redhat.com>
    
    	* gthr.h (GTHREAD_USE_WEAK): Redefine to 0 for GLIBC 2.34 or later.