mirror of git://sourceware.org/git/glibc.git
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:
parent
e2bcf6a855
commit
bd60ce8652
15
ChangeLog
15
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>
|
2018-02-28 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #22902]
|
[BZ #22902]
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue