summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/powerpc
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 /sysdeps/unix/sysv/linux/powerpc
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 'sysdeps/unix/sysv/linux/powerpc')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist2
3 files changed, 1 insertions, 6 deletions
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