summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/microblaze
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/microblaze
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/microblaze')
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/libpthread.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/pt-vfork.S49
2 files changed, 0 insertions, 51 deletions
diff --git a/sysdeps/unix/sysv/linux/microblaze/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/libpthread.abilist
index 5067375d23..e0fbe6848f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libpthread.abilist
@@ -45,7 +45,6 @@ GLIBC_2.18 __read F
 GLIBC_2.18 __res_state F
 GLIBC_2.18 __send F
 GLIBC_2.18 __sigaction F
-GLIBC_2.18 __vfork F
 GLIBC_2.18 __wait F
 GLIBC_2.18 __write F
 GLIBC_2.18 _pthread_cleanup_pop F
@@ -218,7 +217,6 @@ GLIBC_2.18 siglongjmp F
 GLIBC_2.18 sigwait F
 GLIBC_2.18 system F
 GLIBC_2.18 tcdrain F
-GLIBC_2.18 vfork F
 GLIBC_2.18 wait F
 GLIBC_2.18 waitpid F
 GLIBC_2.18 write F
diff --git a/sysdeps/unix/sysv/linux/microblaze/pt-vfork.S b/sysdeps/unix/sysv/linux/microblaze/pt-vfork.S
deleted file mode 100644
index 205a28de24..0000000000
--- a/sysdeps/unix/sysv/linux/microblaze/pt-vfork.S
+++ /dev/null
@@ -1,49 +0,0 @@
-/* vfork ABI-compatibility entry points for libpthread.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-
-/* libpthread used to have its own vfork implementation that differed
-   from libc's only in having a pointless micro-optimization.  There
-   is no longer any use to having a separate copy in libpthread, but
-   the historical ABI requires it.  For static linking, there is no
-   need to provide anything here--the libc version will be linked in.
-   For shared library ABI compatibility, there must be __vfork and
-   vfork symbols in libpthread.so.
-
-   As of GCC 7, microblaze can *not* rely on the compiler to generate
-   a tail call from this vfork to __libc_vfork.  */
-
-#if (SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) \
-       || SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20))
-
-ENTRY (vfork_compat)
-	bri	__libc_vfork@PLT
-END (vfork_compat)
-
-#endif
-
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
-compat_symbol (libpthread, vfork_compat, vfork, GLIBC_2_0)
-#endif
-
-#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
-strong_alias (vfork_compat, vfork_compat2)
-compat_symbol (libpthread, vfork_compat2, __vfork, GLIBC_2_1_2)
-#endif