aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
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 /ChangeLog
parent27cec9aed97447dff887a88f4241604fffd8c525 (diff)
downloadglibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.zip
glibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.tar.gz
glibc-41d6f74e6cb6a92ab428c11ee1e408b2a16aa1b0.tar.bz2
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 'ChangeLog')
-rw-r--r--ChangeLog81
1 files changed, 81 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index f7c6ca7..21e6374 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,84 @@
+2019-07-01 Florian Weimer <fweimer@redhat.com>
+
+ [BZ #20188]
+ * nptl/Versions (libpthread): Remove __fork from GLIBC_2.0.
+ Replace __vfork with __libpthread_version_placeholder for
+ GLIBC_2.1.2.
+ (libc): Remove __libc_vfork from GLIBC_PRIVATE.
+ * nptl/Makefile (libpthread-routines): Remove pt-vfork. Add
+ libpthread-compat.
+ * nptl/pt-vfork.c: Remove file.
+ * sysdeps/unix/sysv/linux/aarch64/pt-vfork.c: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/csky/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/m68k/pt-vfork.c: Likewise.
+ * sysdeps/unix/sysv/linux/microblaze/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/mips/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/nios2/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/riscv/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/s390/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/aarch64/libpthread.abilist (GLIBC_2.17):
+ Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/alpha/libpthread.abilist (GLIBC_2.0):
+ Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/arm/libpthread.abilist (GLIBC_2.4):
+ Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/hppa/libpthread.abilist (GLIBC_2.2):
+ Likewise.
+ * sysdeps/unix/sysv/linux/i386/libpthread.abilist (GLIBC_2.0):
+ Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/ia64/libpthread.abilist (GLIBC_2.2):
+ Remove vfork.
+ * sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+ (GLIBC_2.4): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+ (GLIBC_2.0): Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/microblaze/libpthread.abilist
+ (GLIBC_2.18): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+ (GLIBC_2.0): Remove vfork.
+ (GLIBC_2.2): Remove __vfork.
+ * sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist:
+ (GLIBC_2.2): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist:
+ (GLIBC_2.0): Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+ (GLIBC_2.3): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+ (GLIBC_2.17): Likewise.
+ * sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+ (GLIBC_2.0): Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+ (GLIBC_2.2): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/sh/libpthread.abilist (GLIBC_2.2):
+ Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+ (GLIBC_2.0): Remove vfork.
+ (GLIBC_2.1.2): Replace __vfork with
+ __libpthread_version_placeholder.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+ (GLIBC_2.2): Remove vfork, __vfork.
+ * sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+ (GLIBC_2.2.5): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+ (GLIBC_2.16): Likewise.
+ * sysdeps/unix/sysv/linux/hppa/localplt.data (libpthread.so):
+ Remove __errno_location.
+
2019-07-02 Florian Weimer <fweimer@redhat.com>
[BZ #24757]