mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
With commit f0b2132b35
("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.
This commit is contained in:
81
ChangeLog
81
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>
|
2019-07-02 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
[BZ #24757]
|
[BZ #24757]
|
||||||
|
@ -120,7 +120,7 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
|
|||||||
cancellation \
|
cancellation \
|
||||||
lowlevellock \
|
lowlevellock \
|
||||||
lll_timedlock_wait \
|
lll_timedlock_wait \
|
||||||
pt-fork pt-vfork pt-fcntl \
|
pt-fork pt-fcntl \
|
||||||
$(pthread-compat-wrappers) \
|
$(pthread-compat-wrappers) \
|
||||||
pt-raise pt-system \
|
pt-raise pt-system \
|
||||||
flockfile ftrylockfile funlockfile \
|
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_destroy mtx_init mtx_lock mtx_timedlock \
|
||||||
mtx_trylock mtx_unlock call_once cnd_broadcast \
|
mtx_trylock mtx_unlock call_once cnd_broadcast \
|
||||||
cnd_destroy cnd_init cnd_signal cnd_timedwait cnd_wait \
|
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_setuid pthread_seteuid pthread_setreuid \
|
||||||
# pthread_setresuid \
|
# pthread_setresuid \
|
||||||
# pthread_setgid pthread_setegid pthread_setregid \
|
# pthread_setgid pthread_setegid pthread_setregid \
|
||||||
|
@ -36,7 +36,6 @@ libc {
|
|||||||
__libc_alloca_cutoff;
|
__libc_alloca_cutoff;
|
||||||
# Internal libc interface to libpthread
|
# Internal libc interface to libpthread
|
||||||
__libc_dl_error_tsd;
|
__libc_dl_error_tsd;
|
||||||
__libc_vfork;
|
|
||||||
__libc_pthread_init;
|
__libc_pthread_init;
|
||||||
__libc_current_sigrtmin_private; __libc_current_sigrtmax_private;
|
__libc_current_sigrtmin_private; __libc_current_sigrtmax_private;
|
||||||
__libc_allocate_rtsig_private;
|
__libc_allocate_rtsig_private;
|
||||||
@ -98,7 +97,7 @@ libpthread {
|
|||||||
sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
|
sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
|
||||||
|
|
||||||
# Special fork handling.
|
# Special fork handling.
|
||||||
fork; __fork; vfork;
|
fork; __fork;
|
||||||
|
|
||||||
# Cancellation points.
|
# Cancellation points.
|
||||||
close; __close; fcntl; __fcntl; read; __read; write; __write; accept;
|
close; __close; fcntl; __fcntl; read; __read; write; __write; accept;
|
||||||
@ -152,7 +151,7 @@ libpthread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GLIBC_2.1.2 {
|
GLIBC_2.1.2 {
|
||||||
__vfork;
|
__libpthread_version_placeholder;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLIBC_2.2 {
|
GLIBC_2.2 {
|
||||||
|
37
nptl/libpthread-compat.c
Normal file
37
nptl/libpthread-compat.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* Placeholder definitions to pull in removed symbol versions.
|
||||||
|
Copyright (C) 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 <shlib-compat.h>
|
||||||
|
|
||||||
|
/* This is an unused compatibility symbol definition, to prevent ld
|
||||||
|
from creating a weak version definition for GLIBC_2.1.2. (__vfork
|
||||||
|
used to be defined at that version, but it is now provided by libc,
|
||||||
|
and there are no versions left in libpthread for that symbol
|
||||||
|
version.) If the ABI baseline for glibc is the GLIBC_2.2 symbol
|
||||||
|
version or later, the placeholder symbol is not needed because
|
||||||
|
there are plenty of other symbols which populate those later
|
||||||
|
versions. */
|
||||||
|
#if (SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_2))
|
||||||
|
void
|
||||||
|
attribute_compat_text_section
|
||||||
|
__libpthread_version_placeholder (void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
compat_symbol (libpthread, __libpthread_version_placeholder,
|
||||||
|
__libpthread_version_placeholder, GLIBC_2_1_2);
|
||||||
|
#endif
|
@ -1,65 +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 <unistd.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; so we define them using IFUNC to
|
|
||||||
redirect to the libc function. */
|
|
||||||
|
|
||||||
/* Note! If the architecture doesn't support IFUNC, then we need an
|
|
||||||
alternate target-specific mechanism to implement this. So we just
|
|
||||||
assume IFUNC here and require that the target override this file
|
|
||||||
if necessary.
|
|
||||||
|
|
||||||
If the architecture can assume all supported versions of gcc will
|
|
||||||
produce a tail-call to __libc_vfork, consider including the version
|
|
||||||
in sysdeps/unix/sysv/linux/aarch64/pt-vfork.c. */
|
|
||||||
|
|
||||||
#if !HAVE_IFUNC
|
|
||||||
# error "must write pt-vfork for this machine or get IFUNC support"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) \
|
|
||||||
|| SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20))
|
|
||||||
|
|
||||||
extern __typeof (vfork) __libc_vfork; /* Defined in libc. */
|
|
||||||
|
|
||||||
# undef INIT_ARCH
|
|
||||||
# define INIT_ARCH()
|
|
||||||
# define DEFINE_VFORK(name) libc_ifunc (name, &__libc_vfork)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
|
|
||||||
extern __typeof(vfork) vfork_ifunc;
|
|
||||||
DEFINE_VFORK (vfork_ifunc)
|
|
||||||
compat_symbol (libpthread, vfork_ifunc, vfork, GLIBC_2_0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
|
|
||||||
extern __typeof(vfork) __vfork_ifunc;
|
|
||||||
DEFINE_VFORK (__vfork_ifunc)
|
|
||||||
compat_symbol (libpthread, __vfork_ifunc, __vfork, GLIBC_2_1_2);
|
|
||||||
#endif
|
|
@ -45,7 +45,6 @@ GLIBC_2.17 __read F
|
|||||||
GLIBC_2.17 __res_state F
|
GLIBC_2.17 __res_state F
|
||||||
GLIBC_2.17 __send F
|
GLIBC_2.17 __send F
|
||||||
GLIBC_2.17 __sigaction F
|
GLIBC_2.17 __sigaction F
|
||||||
GLIBC_2.17 __vfork F
|
|
||||||
GLIBC_2.17 __wait F
|
GLIBC_2.17 __wait F
|
||||||
GLIBC_2.17 __write F
|
GLIBC_2.17 __write F
|
||||||
GLIBC_2.17 _pthread_cleanup_pop 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 sigwait F
|
||||||
GLIBC_2.17 system F
|
GLIBC_2.17 system F
|
||||||
GLIBC_2.17 tcdrain F
|
GLIBC_2.17 tcdrain F
|
||||||
GLIBC_2.17 vfork F
|
|
||||||
GLIBC_2.17 wait F
|
GLIBC_2.17 wait F
|
||||||
GLIBC_2.17 waitpid F
|
GLIBC_2.17 waitpid F
|
||||||
GLIBC_2.17 write F
|
GLIBC_2.17 write F
|
||||||
|
@ -1,54 +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 <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. */
|
|
||||||
|
|
||||||
#if HAVE_IFUNC
|
|
||||||
# include <nptl/pt-vfork.c>
|
|
||||||
#elif (SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) \
|
|
||||||
|| SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20))
|
|
||||||
|
|
||||||
/* Thankfully, on AArch64 we can rely on the compiler generating
|
|
||||||
a tail call here. */
|
|
||||||
|
|
||||||
extern void __libc_vfork (void);
|
|
||||||
|
|
||||||
void
|
|
||||||
vfork_compat (void)
|
|
||||||
{
|
|
||||||
__libc_vfork ();
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#endif
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -1,43 +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 <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. */
|
|
||||||
|
|
||||||
#if (SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) \
|
|
||||||
|| SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20))
|
|
||||||
|
|
||||||
#include <vfork.S>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
|
|
||||||
compat_symbol (libpthread, __libc_vfork, vfork, GLIBC_2_0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
|
|
||||||
strong_alias (__libc_vfork, __vfork_compat)
|
|
||||||
compat_symbol (libpthread, __vfork_compat, __vfork, GLIBC_2_1_2);
|
|
||||||
#endif
|
|
@ -74,7 +74,6 @@ GLIBC_2.4 __read F
|
|||||||
GLIBC_2.4 __res_state F
|
GLIBC_2.4 __res_state F
|
||||||
GLIBC_2.4 __send F
|
GLIBC_2.4 __send F
|
||||||
GLIBC_2.4 __sigaction F
|
GLIBC_2.4 __sigaction F
|
||||||
GLIBC_2.4 __vfork F
|
|
||||||
GLIBC_2.4 __wait F
|
GLIBC_2.4 __wait F
|
||||||
GLIBC_2.4 __write F
|
GLIBC_2.4 __write F
|
||||||
GLIBC_2.4 _pthread_cleanup_pop F
|
GLIBC_2.4 _pthread_cleanup_pop F
|
||||||
@ -239,7 +238,6 @@ GLIBC_2.4 siglongjmp F
|
|||||||
GLIBC_2.4 sigwait F
|
GLIBC_2.4 sigwait F
|
||||||
GLIBC_2.4 system F
|
GLIBC_2.4 system F
|
||||||
GLIBC_2.4 tcdrain F
|
GLIBC_2.4 tcdrain F
|
||||||
GLIBC_2.4 vfork F
|
|
||||||
GLIBC_2.4 wait F
|
GLIBC_2.4 wait F
|
||||||
GLIBC_2.4 waitpid F
|
GLIBC_2.4 waitpid F
|
||||||
GLIBC_2.4 write F
|
GLIBC_2.4 write F
|
||||||
|
@ -1 +0,0 @@
|
|||||||
/* Not needed. */
|
|
@ -46,7 +46,6 @@ GLIBC_2.2 __read F
|
|||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __send F
|
GLIBC_2.2 __send F
|
||||||
GLIBC_2.2 __sigaction F
|
GLIBC_2.2 __sigaction F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 __wait F
|
GLIBC_2.2 __wait F
|
||||||
GLIBC_2.2 __write F
|
GLIBC_2.2 __write F
|
||||||
GLIBC_2.2 _pthread_cleanup_pop F
|
GLIBC_2.2 _pthread_cleanup_pop F
|
||||||
@ -192,7 +191,6 @@ GLIBC_2.2 siglongjmp F
|
|||||||
GLIBC_2.2 sigwait F
|
GLIBC_2.2 sigwait F
|
||||||
GLIBC_2.2 system F
|
GLIBC_2.2 system F
|
||||||
GLIBC_2.2 tcdrain F
|
GLIBC_2.2 tcdrain F
|
||||||
GLIBC_2.2 vfork F
|
|
||||||
GLIBC_2.2 wait F
|
GLIBC_2.2 wait F
|
||||||
GLIBC_2.2 waitpid F
|
GLIBC_2.2 waitpid F
|
||||||
GLIBC_2.2 write F
|
GLIBC_2.2 write F
|
||||||
|
@ -10,7 +10,6 @@ libc.so: __sigsetjmp
|
|||||||
libc.so: _IO_funlockfile
|
libc.so: _IO_funlockfile
|
||||||
libc.so: __errno_location
|
libc.so: __errno_location
|
||||||
libm.so: matherr
|
libm.so: matherr
|
||||||
libpthread.so: __errno_location
|
|
||||||
# The main malloc is interposed into the dynamic linker, for
|
# The main malloc is interposed into the dynamic linker, for
|
||||||
# allocations after the initial link (when dlopen is used).
|
# allocations after the initial link (when dlopen is used).
|
||||||
ld.so: malloc
|
ld.so: malloc
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
/* Copyright (C) 2005-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>
|
|
||||||
#define _ERRNO_H 1
|
|
||||||
#include <bits/errno.h>
|
|
||||||
#include <tcb-offsets.h>
|
|
||||||
|
|
||||||
/* Clone the calling process, but without copying the whole address space.
|
|
||||||
The calling process is suspended until the new process exits or is
|
|
||||||
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
|
|
||||||
and the process ID of the new process to the old process. */
|
|
||||||
|
|
||||||
.Lthread_start: ASM_LINE_SEP
|
|
||||||
|
|
||||||
/* r26, r25, r24, r23 are free since vfork has no arguments */
|
|
||||||
ENTRY(__vfork)
|
|
||||||
/* We must not create a frame. When the child unwinds to call
|
|
||||||
exec it will clobber the same frame that the parent
|
|
||||||
needs to unwind. */
|
|
||||||
|
|
||||||
/* Save the PIC register. */
|
|
||||||
#ifdef PIC
|
|
||||||
copy %r19, %r25 /* parent */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Syscall saves and restores all register states */
|
|
||||||
ble 0x100(%sr2,%r0)
|
|
||||||
ldi __NR_vfork,%r20
|
|
||||||
|
|
||||||
/* Check for error */
|
|
||||||
ldi -4096,%r1
|
|
||||||
comclr,>>= %r1,%ret0,%r0 /* Note: unsigned compare. */
|
|
||||||
b,n .Lerror
|
|
||||||
|
|
||||||
/* Return, and DO NOT restore rp. The child may have called
|
|
||||||
functions that updated the frame's rp. This works because
|
|
||||||
the kernel ensures rp is preserved across the vfork
|
|
||||||
syscall. */
|
|
||||||
bv,n %r0(%rp)
|
|
||||||
|
|
||||||
.Lerror:
|
|
||||||
/* Now we need a stack to call a function. We are assured
|
|
||||||
that there is no child now, so it's safe to create
|
|
||||||
a frame. */
|
|
||||||
stw %rp, -20(%sp)
|
|
||||||
.cfi_offset 2, -20
|
|
||||||
stwm %r3, 64(%sp)
|
|
||||||
.cfi_def_cfa_offset -64
|
|
||||||
.cfi_offset 3, 0
|
|
||||||
stw %sp, -4(%sp)
|
|
||||||
|
|
||||||
sub %r0,%ret0,%r3
|
|
||||||
SYSCALL_ERROR_HANDLER
|
|
||||||
/* Restore the PIC register (in delay slot) on error */
|
|
||||||
#ifdef PIC
|
|
||||||
copy %r25, %r19 /* parent */
|
|
||||||
#else
|
|
||||||
nop
|
|
||||||
#endif
|
|
||||||
/* Write syscall return into errno location */
|
|
||||||
stw %r3, 0(%ret0)
|
|
||||||
ldw -84(%sp), %rp
|
|
||||||
bv %r0(%rp)
|
|
||||||
ldwm -64(%sp), %r3
|
|
||||||
PSEUDO_END (__vfork)
|
|
||||||
libc_hidden_def (__vfork)
|
|
||||||
weak_alias (__vfork, vfork)
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -46,7 +46,6 @@ GLIBC_2.2 __read F
|
|||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __send F
|
GLIBC_2.2 __send F
|
||||||
GLIBC_2.2 __sigaction F
|
GLIBC_2.2 __sigaction F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 __wait F
|
GLIBC_2.2 __wait F
|
||||||
GLIBC_2.2 __write F
|
GLIBC_2.2 __write F
|
||||||
GLIBC_2.2 _pthread_cleanup_pop F
|
GLIBC_2.2 _pthread_cleanup_pop F
|
||||||
@ -192,7 +191,6 @@ GLIBC_2.2 siglongjmp F
|
|||||||
GLIBC_2.2 sigwait F
|
GLIBC_2.2 sigwait F
|
||||||
GLIBC_2.2 system F
|
GLIBC_2.2 system F
|
||||||
GLIBC_2.2 tcdrain F
|
GLIBC_2.2 tcdrain F
|
||||||
GLIBC_2.2 vfork F
|
|
||||||
GLIBC_2.2 wait F
|
GLIBC_2.2 wait F
|
||||||
GLIBC_2.2 waitpid F
|
GLIBC_2.2 waitpid F
|
||||||
GLIBC_2.2 write F
|
GLIBC_2.2 write F
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
/* vfork ABI-compatibility entry points for libpthread. IA64 version.
|
|
||||||
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. */
|
|
||||||
|
|
||||||
#if (SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) \
|
|
||||||
|| SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20))
|
|
||||||
|
|
||||||
LOCAL_LEAF (vfork_compat)
|
|
||||||
br __libc_vfork
|
|
||||||
;;
|
|
||||||
END (vfork_compat)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
|
|
||||||
weak_alias (vfork_compat, vfork)
|
|
||||||
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_compat)
|
|
||||||
compat_symbol (libpthread, __vfork_compat, __vfork, GLIBC_2_1_2);
|
|
||||||
#endif
|
|
@ -74,7 +74,6 @@ GLIBC_2.4 __read F
|
|||||||
GLIBC_2.4 __res_state F
|
GLIBC_2.4 __res_state F
|
||||||
GLIBC_2.4 __send F
|
GLIBC_2.4 __send F
|
||||||
GLIBC_2.4 __sigaction F
|
GLIBC_2.4 __sigaction F
|
||||||
GLIBC_2.4 __vfork F
|
|
||||||
GLIBC_2.4 __wait F
|
GLIBC_2.4 __wait F
|
||||||
GLIBC_2.4 __write F
|
GLIBC_2.4 __write F
|
||||||
GLIBC_2.4 _pthread_cleanup_pop F
|
GLIBC_2.4 _pthread_cleanup_pop F
|
||||||
@ -239,7 +238,6 @@ GLIBC_2.4 siglongjmp F
|
|||||||
GLIBC_2.4 sigwait F
|
GLIBC_2.4 sigwait F
|
||||||
GLIBC_2.4 system F
|
GLIBC_2.4 system F
|
||||||
GLIBC_2.4 tcdrain F
|
GLIBC_2.4 tcdrain F
|
||||||
GLIBC_2.4 vfork F
|
|
||||||
GLIBC_2.4 wait F
|
GLIBC_2.4 wait F
|
||||||
GLIBC_2.4 waitpid F
|
GLIBC_2.4 waitpid F
|
||||||
GLIBC_2.4 write F
|
GLIBC_2.4 write F
|
||||||
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -1 +0,0 @@
|
|||||||
#include <sysdeps/unix/sysv/linux/aarch64/pt-vfork.c>
|
|
@ -45,7 +45,6 @@ GLIBC_2.18 __read F
|
|||||||
GLIBC_2.18 __res_state F
|
GLIBC_2.18 __res_state F
|
||||||
GLIBC_2.18 __send F
|
GLIBC_2.18 __send F
|
||||||
GLIBC_2.18 __sigaction F
|
GLIBC_2.18 __sigaction F
|
||||||
GLIBC_2.18 __vfork F
|
|
||||||
GLIBC_2.18 __wait F
|
GLIBC_2.18 __wait F
|
||||||
GLIBC_2.18 __write F
|
GLIBC_2.18 __write F
|
||||||
GLIBC_2.18 _pthread_cleanup_pop 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 sigwait F
|
||||||
GLIBC_2.18 system F
|
GLIBC_2.18 system F
|
||||||
GLIBC_2.18 tcdrain F
|
GLIBC_2.18 tcdrain F
|
||||||
GLIBC_2.18 vfork F
|
|
||||||
GLIBC_2.18 wait F
|
GLIBC_2.18 wait F
|
||||||
GLIBC_2.18 waitpid F
|
GLIBC_2.18 waitpid F
|
||||||
GLIBC_2.18 write F
|
GLIBC_2.18 write F
|
||||||
|
@ -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
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write F
|
GLIBC_2.0 write F
|
||||||
@ -140,7 +139,6 @@ GLIBC_2.2 __pthread_rwlock_unlock F
|
|||||||
GLIBC_2.2 __pthread_rwlock_wrlock F
|
GLIBC_2.2 __pthread_rwlock_wrlock F
|
||||||
GLIBC_2.2 __pwrite64 F
|
GLIBC_2.2 __pwrite64 F
|
||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 lseek64 F
|
GLIBC_2.2 lseek64 F
|
||||||
GLIBC_2.2 open64 F
|
GLIBC_2.2 open64 F
|
||||||
GLIBC_2.2 pread F
|
GLIBC_2.2 pread F
|
||||||
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write F
|
GLIBC_2.0 write F
|
||||||
@ -140,7 +139,6 @@ GLIBC_2.2 __pthread_rwlock_unlock F
|
|||||||
GLIBC_2.2 __pthread_rwlock_wrlock F
|
GLIBC_2.2 __pthread_rwlock_wrlock F
|
||||||
GLIBC_2.2 __pwrite64 F
|
GLIBC_2.2 __pwrite64 F
|
||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 lseek64 F
|
GLIBC_2.2 lseek64 F
|
||||||
GLIBC_2.2 open64 F
|
GLIBC_2.2 open64 F
|
||||||
GLIBC_2.2 pread F
|
GLIBC_2.2 pread F
|
||||||
|
@ -1 +0,0 @@
|
|||||||
#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S>
|
|
@ -1 +0,0 @@
|
|||||||
# Nios2 does not require a stub for vfork in libpthread.
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -68,7 +68,6 @@ GLIBC_2.3 __read F
|
|||||||
GLIBC_2.3 __res_state F
|
GLIBC_2.3 __res_state F
|
||||||
GLIBC_2.3 __send F
|
GLIBC_2.3 __send F
|
||||||
GLIBC_2.3 __sigaction F
|
GLIBC_2.3 __sigaction F
|
||||||
GLIBC_2.3 __vfork F
|
|
||||||
GLIBC_2.3 __wait F
|
GLIBC_2.3 __wait F
|
||||||
GLIBC_2.3 __write F
|
GLIBC_2.3 __write F
|
||||||
GLIBC_2.3 _pthread_cleanup_pop 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 sigwait F
|
||||||
GLIBC_2.3 system F
|
GLIBC_2.3 system F
|
||||||
GLIBC_2.3 tcdrain F
|
GLIBC_2.3 tcdrain F
|
||||||
GLIBC_2.3 vfork F
|
|
||||||
GLIBC_2.3 wait F
|
GLIBC_2.3 wait F
|
||||||
GLIBC_2.3 waitpid F
|
GLIBC_2.3 waitpid F
|
||||||
GLIBC_2.3 write F
|
GLIBC_2.3 write F
|
||||||
|
@ -45,7 +45,6 @@ GLIBC_2.17 __read F
|
|||||||
GLIBC_2.17 __res_state F
|
GLIBC_2.17 __res_state F
|
||||||
GLIBC_2.17 __send F
|
GLIBC_2.17 __send F
|
||||||
GLIBC_2.17 __sigaction F
|
GLIBC_2.17 __sigaction F
|
||||||
GLIBC_2.17 __vfork F
|
|
||||||
GLIBC_2.17 __wait F
|
GLIBC_2.17 __wait F
|
||||||
GLIBC_2.17 __write F
|
GLIBC_2.17 __write F
|
||||||
GLIBC_2.17 _pthread_cleanup_pop 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 sigwait F
|
||||||
GLIBC_2.17 system F
|
GLIBC_2.17 system F
|
||||||
GLIBC_2.17 tcdrain F
|
GLIBC_2.17 tcdrain F
|
||||||
GLIBC_2.17 vfork F
|
|
||||||
GLIBC_2.17 wait F
|
GLIBC_2.17 wait F
|
||||||
GLIBC_2.17 waitpid F
|
GLIBC_2.17 waitpid F
|
||||||
GLIBC_2.17 write F
|
GLIBC_2.17 write F
|
||||||
|
@ -1 +0,0 @@
|
|||||||
/* Not needed. */
|
|
@ -1 +0,0 @@
|
|||||||
#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S>
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -48,7 +48,6 @@ GLIBC_2.2 __read F
|
|||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __send F
|
GLIBC_2.2 __send F
|
||||||
GLIBC_2.2 __sigaction F
|
GLIBC_2.2 __sigaction F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 __wait F
|
GLIBC_2.2 __wait F
|
||||||
GLIBC_2.2 __write F
|
GLIBC_2.2 __write F
|
||||||
GLIBC_2.2 _pthread_cleanup_pop F
|
GLIBC_2.2 _pthread_cleanup_pop F
|
||||||
@ -194,7 +193,6 @@ GLIBC_2.2 siglongjmp F
|
|||||||
GLIBC_2.2 sigwait F
|
GLIBC_2.2 sigwait F
|
||||||
GLIBC_2.2 system F
|
GLIBC_2.2 system F
|
||||||
GLIBC_2.2 tcdrain F
|
GLIBC_2.2 tcdrain F
|
||||||
GLIBC_2.2 vfork F
|
|
||||||
GLIBC_2.2 wait F
|
GLIBC_2.2 wait F
|
||||||
GLIBC_2.2 waitpid F
|
GLIBC_2.2 waitpid F
|
||||||
GLIBC_2.2 write F
|
GLIBC_2.2 write F
|
||||||
|
@ -46,7 +46,6 @@ GLIBC_2.2 __read F
|
|||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __send F
|
GLIBC_2.2 __send F
|
||||||
GLIBC_2.2 __sigaction F
|
GLIBC_2.2 __sigaction F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 __wait F
|
GLIBC_2.2 __wait F
|
||||||
GLIBC_2.2 __write F
|
GLIBC_2.2 __write F
|
||||||
GLIBC_2.2 _pthread_cleanup_pop F
|
GLIBC_2.2 _pthread_cleanup_pop F
|
||||||
@ -192,7 +191,6 @@ GLIBC_2.2 siglongjmp F
|
|||||||
GLIBC_2.2 sigwait F
|
GLIBC_2.2 sigwait F
|
||||||
GLIBC_2.2 system F
|
GLIBC_2.2 system F
|
||||||
GLIBC_2.2 tcdrain F
|
GLIBC_2.2 tcdrain F
|
||||||
GLIBC_2.2 vfork F
|
|
||||||
GLIBC_2.2 wait F
|
GLIBC_2.2 wait F
|
||||||
GLIBC_2.2 waitpid F
|
GLIBC_2.2 waitpid F
|
||||||
GLIBC_2.2 write F
|
GLIBC_2.2 write F
|
||||||
|
@ -1 +0,0 @@
|
|||||||
#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S>
|
|
@ -1 +0,0 @@
|
|||||||
#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S>
|
|
@ -114,7 +114,6 @@ GLIBC_2.0 siglongjmp F
|
|||||||
GLIBC_2.0 sigwait F
|
GLIBC_2.0 sigwait F
|
||||||
GLIBC_2.0 system F
|
GLIBC_2.0 system F
|
||||||
GLIBC_2.0 tcdrain F
|
GLIBC_2.0 tcdrain F
|
||||||
GLIBC_2.0 vfork F
|
|
||||||
GLIBC_2.0 wait F
|
GLIBC_2.0 wait F
|
||||||
GLIBC_2.0 waitpid F
|
GLIBC_2.0 waitpid F
|
||||||
GLIBC_2.0 write 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_close F
|
||||||
GLIBC_2.1.1 sem_open F
|
GLIBC_2.1.1 sem_open F
|
||||||
GLIBC_2.1.1 sem_unlink 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.11 pthread_sigqueue F
|
||||||
GLIBC_2.12 pthread_getname_np F
|
GLIBC_2.12 pthread_getname_np F
|
||||||
GLIBC_2.12 pthread_mutex_consistent F
|
GLIBC_2.12 pthread_mutex_consistent F
|
||||||
|
@ -46,7 +46,6 @@ GLIBC_2.2 __read F
|
|||||||
GLIBC_2.2 __res_state F
|
GLIBC_2.2 __res_state F
|
||||||
GLIBC_2.2 __send F
|
GLIBC_2.2 __send F
|
||||||
GLIBC_2.2 __sigaction F
|
GLIBC_2.2 __sigaction F
|
||||||
GLIBC_2.2 __vfork F
|
|
||||||
GLIBC_2.2 __wait F
|
GLIBC_2.2 __wait F
|
||||||
GLIBC_2.2 __write F
|
GLIBC_2.2 __write F
|
||||||
GLIBC_2.2 _pthread_cleanup_pop F
|
GLIBC_2.2 _pthread_cleanup_pop F
|
||||||
@ -192,7 +191,6 @@ GLIBC_2.2 siglongjmp F
|
|||||||
GLIBC_2.2 sigwait F
|
GLIBC_2.2 sigwait F
|
||||||
GLIBC_2.2 system F
|
GLIBC_2.2 system F
|
||||||
GLIBC_2.2 tcdrain F
|
GLIBC_2.2 tcdrain F
|
||||||
GLIBC_2.2 vfork F
|
|
||||||
GLIBC_2.2 wait F
|
GLIBC_2.2 wait F
|
||||||
GLIBC_2.2 waitpid F
|
GLIBC_2.2 waitpid F
|
||||||
GLIBC_2.2 write F
|
GLIBC_2.2 write F
|
||||||
|
@ -46,7 +46,6 @@ GLIBC_2.2.5 __read F
|
|||||||
GLIBC_2.2.5 __res_state F
|
GLIBC_2.2.5 __res_state F
|
||||||
GLIBC_2.2.5 __send F
|
GLIBC_2.2.5 __send F
|
||||||
GLIBC_2.2.5 __sigaction F
|
GLIBC_2.2.5 __sigaction F
|
||||||
GLIBC_2.2.5 __vfork F
|
|
||||||
GLIBC_2.2.5 __wait F
|
GLIBC_2.2.5 __wait F
|
||||||
GLIBC_2.2.5 __write F
|
GLIBC_2.2.5 __write F
|
||||||
GLIBC_2.2.5 _pthread_cleanup_pop F
|
GLIBC_2.2.5 _pthread_cleanup_pop F
|
||||||
@ -193,7 +192,6 @@ GLIBC_2.2.5 siglongjmp F
|
|||||||
GLIBC_2.2.5 sigwait F
|
GLIBC_2.2.5 sigwait F
|
||||||
GLIBC_2.2.5 system F
|
GLIBC_2.2.5 system F
|
||||||
GLIBC_2.2.5 tcdrain F
|
GLIBC_2.2.5 tcdrain F
|
||||||
GLIBC_2.2.5 vfork F
|
|
||||||
GLIBC_2.2.5 wait F
|
GLIBC_2.2.5 wait F
|
||||||
GLIBC_2.2.5 waitpid F
|
GLIBC_2.2.5 waitpid F
|
||||||
GLIBC_2.2.5 write F
|
GLIBC_2.2.5 write F
|
||||||
|
@ -45,7 +45,6 @@ GLIBC_2.16 __read F
|
|||||||
GLIBC_2.16 __res_state F
|
GLIBC_2.16 __res_state F
|
||||||
GLIBC_2.16 __send F
|
GLIBC_2.16 __send F
|
||||||
GLIBC_2.16 __sigaction F
|
GLIBC_2.16 __sigaction F
|
||||||
GLIBC_2.16 __vfork F
|
|
||||||
GLIBC_2.16 __wait F
|
GLIBC_2.16 __wait F
|
||||||
GLIBC_2.16 __write F
|
GLIBC_2.16 __write F
|
||||||
GLIBC_2.16 _pthread_cleanup_pop F
|
GLIBC_2.16 _pthread_cleanup_pop F
|
||||||
@ -216,7 +215,6 @@ GLIBC_2.16 siglongjmp F
|
|||||||
GLIBC_2.16 sigwait F
|
GLIBC_2.16 sigwait F
|
||||||
GLIBC_2.16 system F
|
GLIBC_2.16 system F
|
||||||
GLIBC_2.16 tcdrain F
|
GLIBC_2.16 tcdrain F
|
||||||
GLIBC_2.16 vfork F
|
|
||||||
GLIBC_2.16 wait F
|
GLIBC_2.16 wait F
|
||||||
GLIBC_2.16 waitpid F
|
GLIBC_2.16 waitpid F
|
||||||
GLIBC_2.16 write F
|
GLIBC_2.16 write F
|
||||||
|
Reference in New Issue
Block a user