From 41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 2 Jul 2019 15:12:20 +0200 Subject: 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. --- sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist | 3 +-- sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist | 2 -- sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist | 2 -- 3 files changed, 1 insertion(+), 6 deletions(-) (limited to 'sysdeps/unix/sysv/linux/powerpc') diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist index 09e8447b06..c7d9b78986 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist @@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F GLIBC_2.0 sigwait F GLIBC_2.0 system F GLIBC_2.0 tcdrain F -GLIBC_2.0 vfork F GLIBC_2.0 wait F GLIBC_2.0 waitpid F GLIBC_2.0 write F @@ -155,7 +154,7 @@ GLIBC_2.1 sem_wait F GLIBC_2.1.1 sem_close F GLIBC_2.1.1 sem_open F GLIBC_2.1.1 sem_unlink F -GLIBC_2.1.2 __vfork F +GLIBC_2.1.2 __libpthread_version_placeholder F GLIBC_2.11 pthread_sigqueue F GLIBC_2.12 pthread_getname_np F GLIBC_2.12 pthread_mutex_consistent F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist index 8300958d47..3500cce6c1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist @@ -68,7 +68,6 @@ GLIBC_2.3 __read F GLIBC_2.3 __res_state F GLIBC_2.3 __send F GLIBC_2.3 __sigaction F -GLIBC_2.3 __vfork F GLIBC_2.3 __wait F GLIBC_2.3 __write F GLIBC_2.3 _pthread_cleanup_pop F @@ -214,7 +213,6 @@ GLIBC_2.3 siglongjmp F GLIBC_2.3 sigwait F GLIBC_2.3 system F GLIBC_2.3 tcdrain F -GLIBC_2.3 vfork F GLIBC_2.3 wait F GLIBC_2.3 waitpid F GLIBC_2.3 write F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist index 9a9e4cee85..6945b7cbe4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist @@ -45,7 +45,6 @@ GLIBC_2.17 __read F GLIBC_2.17 __res_state F GLIBC_2.17 __send F GLIBC_2.17 __sigaction F -GLIBC_2.17 __vfork F GLIBC_2.17 __wait F GLIBC_2.17 __write F GLIBC_2.17 _pthread_cleanup_pop F @@ -216,7 +215,6 @@ GLIBC_2.17 siglongjmp F GLIBC_2.17 sigwait F GLIBC_2.17 system F GLIBC_2.17 tcdrain F -GLIBC_2.17 vfork F GLIBC_2.17 wait F GLIBC_2.17 waitpid F GLIBC_2.17 write F -- cgit 1.4.1