about summary refs log tree commit diff
path: root/nptl/Makefile
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-07-02 15:12:20 +0200
committerFlorian Weimer <fweimer@redhat.com>2019-07-02 16:51:13 +0200
commit41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0 (patch)
treeece03ae53e8fd589f2c493cb753c132545a49196 /nptl/Makefile
parent27cec9aed97447dff887a88f4241604fffd8c525 (diff)
downloadglibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.tar.gz
glibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.tar.xz
glibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.zip
nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
With commit f0b2132b35248c1f4a80f62a2c38cddcc802aa8c ("ld.so:
Support moving versioned symbols between sonames [BZ #24741]"), the
dynamic linker will find the definition of vfork in libc and binds
a vfork reference to that symbol, even if the soname in the version
reference says that the symbol should be located in libpthread.

As a result, the forwarder (whether it's IFUNC-based or a duplicate
of the libc implementation) is no longer necessary.

On older architectures, a placeholder symbol is required, to make sure
that the GLIBC_2.1.2 symbol version does not go away, or is turned in
to a weak symbol definition by the link editor.  (The symbol version
needs to preserved so that the symbol coverage check in
elf/dl-version.c does not fail for old binaries.)

mips32 is an outlier: It defined __vfork@@GLIBC_2.2, but the
baseline is GLIBC_2.0.  Since there are other @@GLIBC_2.2 symbols,
the placeholder symbol is not needed there.
Diffstat (limited to 'nptl/Makefile')
-rw-r--r--nptl/Makefile5
1 files changed, 3 insertions, 2 deletions
diff --git a/nptl/Makefile b/nptl/Makefile
index de312b3477..d23a235581 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -120,7 +120,7 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
 		      cancellation \
 		      lowlevellock \
 		      lll_timedlock_wait \
-		      pt-fork pt-vfork pt-fcntl \
+		      pt-fork pt-fcntl \
 		      $(pthread-compat-wrappers) \
 		      pt-raise pt-system \
 		      flockfile ftrylockfile funlockfile \
@@ -144,7 +144,8 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
 		      mtx_destroy mtx_init mtx_lock mtx_timedlock \
 		      mtx_trylock mtx_unlock call_once cnd_broadcast \
 		      cnd_destroy cnd_init cnd_signal cnd_timedwait cnd_wait \
-		      tss_create tss_delete tss_get tss_set pthread_mutex_conf
+		      tss_create tss_delete tss_get tss_set pthread_mutex_conf \
+		      libpthread-compat
 #		      pthread_setuid pthread_seteuid pthread_setreuid \
 #		      pthread_setresuid \
 #		      pthread_setgid pthread_setegid pthread_setregid \