diff mbox series

[hurd,commited] htl: Move pthread_atfork to libc_nonshared.a

Message ID 20200104183740.923936-1-samuel.thibault@ens-lyon.org
State New
Headers show
Series [hurd,commited] htl: Move pthread_atfork to libc_nonshared.a | expand

Commit Message

Samuel Thibault Jan. 4, 2020, 6:37 p.m. UTC
This follows bd60ce86520b ('nptl: Move pthread_atfork to libc_nonshared.a')
with the same rationale: there is no non-libpthread equivalent to be used
for making linking against libpthread optional.

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.
---
 htl/Makefile            | 34 +++-------------------------------
 sysdeps/htl/Makeconfig  |  3 +--
 sysdeps/htl/pt-atfork.c |  3 ++-
 3 files changed, 6 insertions(+), 34 deletions(-)
diff mbox series

Patch

diff --git a/htl/Makefile b/htl/Makefile
index 3b5c10635d..e091077a28 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -120,7 +120,6 @@  libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate	    \
 	pt-sigstate-destroy						    \
 	pt-sigstate							    \
 									    \
-	pt-atfork							    \
 	old_pt-atfork							    \
 	pt-kill								    \
 	pt-getcpuclockid						    \
@@ -137,8 +136,6 @@  libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate	    \
 	cthreads-compat							    \
 	$(SYSDEPS)
 
-libpthread-static-only-routines = pt-atfork
-
 headers :=				\
               pthread.h				\
 	      semaphore.h			\
@@ -166,8 +163,9 @@  headers :=				\
 
 distribute :=
 
-routines := forward libc_pthread_init alloca_cutoff
+routines := forward libc_pthread_init alloca_cutoff pt-atfork
 shared-only-routines = forward
+static-only-routines = pt-atfork
 
 extra-libs := libpthread
 extra-libs-others := $(extra-libs)
@@ -204,34 +202,8 @@  extra-B-pthread.so = -B$(common-objpfx)htl/
 include ../Rules
 
 ifeq (yes,$(build-shared))
-# 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';\
-	 echo '   the static library, so try that secondarily.  */';\
-	 cat $<; \
-	 echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \
-	      '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\
-	      ')' \
-	) > $@.new
-	mv -f $@.new $@
-
 $(addprefix $(objpfx), \
   $(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \
     $(tests-nolibpthread), \
-    $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \
-				       $(objpfx)libpthread_nonshared.a
+    $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so
 endif
-
-generated += libpthread_nonshared.a
diff --git a/sysdeps/htl/Makeconfig b/sysdeps/htl/Makeconfig
index 3af4c1de35..ad56cc6bd1 100644
--- a/sysdeps/htl/Makeconfig
+++ b/sysdeps/htl/Makeconfig
@@ -3,8 +3,7 @@ 
 
 have-thread-library = yes
 
-shared-thread-library = $(common-objpfx)htl/libpthread_nonshared.a \
-			$(common-objpfx)htl/libpthread.so
+shared-thread-library = $(common-objpfx)htl/libpthread.so
 static-thread-library = $(common-objpfx)htl/libpthread.a
 bounded-thread-library = $(static-thread-library)
 
diff --git a/sysdeps/htl/pt-atfork.c b/sysdeps/htl/pt-atfork.c
index 4512fe72b6..d547dd58e6 100644
--- a/sysdeps/htl/pt-atfork.c
+++ b/sysdeps/htl/pt-atfork.c
@@ -22,9 +22,10 @@ 
 #include <dso_handle.h>
 
 int
-pthread_atfork (void (*prepare) (void),
+__pthread_atfork (void (*prepare) (void),
 		void (*parent) (void),
 		void (*child) (void))
 {
   return __register_atfork (prepare, parent, child, __dso_handle);
 }
+weak_alias (__pthread_atfork, pthread_atfork)