]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nptl: Move pthread_atfork to libc_nonshared.a
authorFlorian Weimer <fweimer@redhat.com>
Thu, 1 Mar 2018 07:18:27 +0000 (08:18 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 1 Mar 2018 07:18:48 +0000 (08:18 +0100)
libpthread_nonshared.a is unused after this, so remove it from the
build.

There is no ABI impact because pthread_atfork was implemented using
__register_atfork in libc even before this change.

pthread_atfork has to be a weak alias because pthread_* names are not
reserved in libc.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
ChangeLog
nptl/Makefile
nptl/pthread_atfork.c
sysdeps/nptl/Makeconfig

index 8f641de741cc65cb140a49755b6fdef16082269a..aab581ad42d1cd0296bdbea1c6338a374f4f07e7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2018-03-01  Florian Weimer  <fweimer@redhat.com>
+
+       Move pthread_atfork to libc.  Remove libpthread_nonshared.a.
+       * nptl/Makefile (routines): Add pthread_atfork.
+       (static-only-routines): Set to pthread_atfork.
+       (libpthread-routines): Remove pthread_atfork.
+       (libpthread-static-only-routines): Remove.
+       (install): Update comment.
+       (libpthread.so): Do not install libpthread_nonshared.a.
+       (tests): Do not link with libpthread_nonshared.a.
+       (generated): Remove libpthread_nonshared.a.
+       * nptl/pthread_atfork.c (pthread_atfork): Turn into weak alias.
+       * sysdeps/nptl/Makeconfig (shared-thread-library): Do not link
+       with libpthread_nonshared.a.
+
 2018-02-28  Joseph Myers  <joseph@codesourcery.com>
 
        [BZ #22902]
index de37fb4680cda853c7d3e22ee4a397a4cda50c43..ba586c247eebba4b4e80ba0001b05b3174c73788 100644 (file)
@@ -30,8 +30,9 @@ install-lib-ldscripts := libpthread.so
 
 routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \
           libc-cleanup libc_pthread_init libc_multiple_threads \
-          register-atfork pthread_self
+          register-atfork pthread_atfork pthread_self
 shared-only-routines = forward
+static-only-routines = pthread_atfork
 
 # We need to provide certain routines for compatibility with existing
 # binaries.
@@ -106,7 +107,7 @@ libpthread-routines = nptl-init vars events version pt-interp \
                      pthread_cancel pthread_testcancel \
                      pthread_setcancelstate pthread_setcanceltype \
                      pthread_once \
-                     old_pthread_atfork pthread_atfork \
+                     old_pthread_atfork \
                      pthread_getcpuclockid \
                      pthread_clock_gettime pthread_clock_settime \
                      shm-directory \
@@ -147,7 +148,6 @@ libpthread-routines = nptl-init vars events version pt-interp \
 
 libpthread-shared-only-routines = version pt-interp pt-allocrtsig \
                                  unwind-forcedunwind
-libpthread-static-only-routines = pthread_atfork
 
 # Since cancellation handling is in large parts handled using exceptions
 # we have to compile some files with exception handling enabled, some
@@ -476,16 +476,12 @@ lib-noranlib: $(addprefix $(objpfx),$(extra-objs))
 
 # What we install as libpthread.so for programs to link against is in fact a
 # link script.  It contains references for the various libraries we need.
-# The libpthread.so object is not complete since some functions are only
-# defined in libpthread_nonshared.a.
 # We need to use absolute paths since otherwise local copies (if they exist)
 # of the files are taken by the linker.
 install: $(inst_libdir)/libpthread.so
 
 $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \
                              $(objpfx)libpthread.so$(libpthread.so-version) \
-                             $(inst_libdir)/$(patsubst %,$(libtype.oS),\
-                                                       $(libprefix)pthread) \
                              $(+force)
        (echo '/* GNU ld script';\
         echo '   Use the shared library, but some functions are only in';\
@@ -644,14 +640,12 @@ $(addprefix $(objpfx), \
   $(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \
     $(tests-nolibpthread), \
     $(tests) $(tests-internal) $(xtests) $(test-srcs))): \
-       $(objpfx)libpthread.so \
-       $(objpfx)libpthread_nonshared.a
+       $(objpfx)libpthread.so
 $(objpfx)tst-unload: $(libdl)
 # $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
 # since otherwise libpthread.so comes before libc.so when linking.
 $(addprefix $(objpfx), $(tests-reverse)): \
-  $(objpfx)../libc.so $(objpfx)libpthread.so \
-  $(objpfx)libpthread_nonshared.a
+  $(objpfx)../libc.so $(objpfx)libpthread.so
 $(objpfx)../libc.so: $(common-objpfx)libc.so ;
 $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a
 
@@ -681,8 +675,7 @@ $(objpfx)$(multidir)/crtn.o: $(objpfx)crtn.o $(objpfx)$(multidir)/
        ln -f $< $@
 endif
 
-generated += libpthread_nonshared.a \
-            multidir.mk tst-atfork2.mtrace tst-cancel-wrappers.out \
+generated += multidir.mk tst-atfork2.mtrace tst-cancel-wrappers.out \
             tst-tls6.out
 
 generated += $(objpfx)tst-atfork2.mtrace \
index 1c4ba23b8a8f3c568b64b4dec4a265c1d1e0e390..5ac62bf879513ff053e2ee8efa5148c6d3088e3d 100644 (file)
@@ -53,5 +53,5 @@ __pthread_atfork (void (*prepare) (void), void (*parent) (void),
 #ifndef __pthread_atfork
 extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
                           void (*child) (void)) attribute_hidden;
-strong_alias (__pthread_atfork, pthread_atfork)
+weak_alias (__pthread_atfork, pthread_atfork)
 #endif
index 5595f356b1355771bbbc4b5fa53bfb02abfbdefa..ce8998bbf5ef49ee18288828055bfaf94f44aeee 100644 (file)
@@ -21,8 +21,7 @@
 
 have-thread-library = yes
 
-shared-thread-library = $(common-objpfx)nptl/libpthread_nonshared.a \
-                       $(common-objpfx)nptl/libpthread.so
+shared-thread-library = $(common-objpfx)nptl/libpthread.so
 static-thread-library = $(common-objpfx)nptl/libpthread.a
 
 rpath-dirs += nptl