1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-05 19:35:52 +03:00

nptl: Move pthread_atfork to libc_nonshared.a

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>
This commit is contained in:
Florian Weimer
2018-03-01 08:18:27 +01:00
parent e2bcf6a855
commit bd60ce8652
4 changed files with 23 additions and 16 deletions

View File

@@ -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> 2018-02-28 Joseph Myers <joseph@codesourcery.com>
[BZ #22902] [BZ #22902]

View File

@@ -30,8 +30,9 @@ install-lib-ldscripts := libpthread.so
routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \ routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \
libc-cleanup libc_pthread_init libc_multiple_threads \ libc-cleanup libc_pthread_init libc_multiple_threads \
register-atfork pthread_self register-atfork pthread_atfork pthread_self
shared-only-routines = forward shared-only-routines = forward
static-only-routines = pthread_atfork
# We need to provide certain routines for compatibility with existing # We need to provide certain routines for compatibility with existing
# binaries. # binaries.
@@ -106,7 +107,7 @@ libpthread-routines = nptl-init vars events version pt-interp \
pthread_cancel pthread_testcancel \ pthread_cancel pthread_testcancel \
pthread_setcancelstate pthread_setcanceltype \ pthread_setcancelstate pthread_setcanceltype \
pthread_once \ pthread_once \
old_pthread_atfork pthread_atfork \ old_pthread_atfork \
pthread_getcpuclockid \ pthread_getcpuclockid \
pthread_clock_gettime pthread_clock_settime \ pthread_clock_gettime pthread_clock_settime \
shm-directory \ shm-directory \
@@ -147,7 +148,6 @@ libpthread-routines = nptl-init vars events version pt-interp \
libpthread-shared-only-routines = version pt-interp pt-allocrtsig \ libpthread-shared-only-routines = version pt-interp pt-allocrtsig \
unwind-forcedunwind unwind-forcedunwind
libpthread-static-only-routines = pthread_atfork
# Since cancellation handling is in large parts handled using exceptions # Since cancellation handling is in large parts handled using exceptions
# we have to compile some files with exception handling enabled, some # 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 # 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. # 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) # We need to use absolute paths since otherwise local copies (if they exist)
# of the files are taken by the linker. # of the files are taken by the linker.
install: $(inst_libdir)/libpthread.so install: $(inst_libdir)/libpthread.so
$(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \ $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \
$(objpfx)libpthread.so$(libpthread.so-version) \ $(objpfx)libpthread.so$(libpthread.so-version) \
$(inst_libdir)/$(patsubst %,$(libtype.oS),\
$(libprefix)pthread) \
$(+force) $(+force)
(echo '/* GNU ld script';\ (echo '/* GNU ld script';\
echo ' Use the shared library, but some functions are only in';\ 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) \ $(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \
$(tests-nolibpthread), \ $(tests-nolibpthread), \
$(tests) $(tests-internal) $(xtests) $(test-srcs))): \ $(tests) $(tests-internal) $(xtests) $(test-srcs))): \
$(objpfx)libpthread.so \ $(objpfx)libpthread.so
$(objpfx)libpthread_nonshared.a
$(objpfx)tst-unload: $(libdl) $(objpfx)tst-unload: $(libdl)
# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, # $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
# since otherwise libpthread.so comes before libc.so when linking. # since otherwise libpthread.so comes before libc.so when linking.
$(addprefix $(objpfx), $(tests-reverse)): \ $(addprefix $(objpfx), $(tests-reverse)): \
$(objpfx)../libc.so $(objpfx)libpthread.so \ $(objpfx)../libc.so $(objpfx)libpthread.so
$(objpfx)libpthread_nonshared.a
$(objpfx)../libc.so: $(common-objpfx)libc.so ; $(objpfx)../libc.so: $(common-objpfx)libc.so ;
$(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a
@@ -681,8 +675,7 @@ $(objpfx)$(multidir)/crtn.o: $(objpfx)crtn.o $(objpfx)$(multidir)/
ln -f $< $@ ln -f $< $@
endif endif
generated += libpthread_nonshared.a \ generated += multidir.mk tst-atfork2.mtrace tst-cancel-wrappers.out \
multidir.mk tst-atfork2.mtrace tst-cancel-wrappers.out \
tst-tls6.out tst-tls6.out
generated += $(objpfx)tst-atfork2.mtrace \ generated += $(objpfx)tst-atfork2.mtrace \

View File

@@ -53,5 +53,5 @@ __pthread_atfork (void (*prepare) (void), void (*parent) (void),
#ifndef __pthread_atfork #ifndef __pthread_atfork
extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
void (*child) (void)) attribute_hidden; void (*child) (void)) attribute_hidden;
strong_alias (__pthread_atfork, pthread_atfork) weak_alias (__pthread_atfork, pthread_atfork)
#endif #endif

View File

@@ -21,8 +21,7 @@
have-thread-library = yes have-thread-library = yes
shared-thread-library = $(common-objpfx)nptl/libpthread_nonshared.a \ shared-thread-library = $(common-objpfx)nptl/libpthread.so
$(common-objpfx)nptl/libpthread.so
static-thread-library = $(common-objpfx)nptl/libpthread.a static-thread-library = $(common-objpfx)nptl/libpthread.a
rpath-dirs += nptl rpath-dirs += nptl