OSDN Git Service

nptl: remove duplicate vfork() in libpthread
authorWaldemar Brodkorb <wbx@openadk.org>
Sat, 20 Sep 2014 20:09:00 +0000 (22:09 +0200)
committerWaldemar Brodkorb <wbx@openadk.org>
Sat, 20 Sep 2014 20:09:00 +0000 (22:09 +0200)
Automatic patching via two oneliners by Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>:
sed -i -e 's/[[:space:]]pt-vfork\.[csS]//' -e '/^ASFLAGS-pt-vfork\./d' $(git grep -l pt-vfork libpthread/nptl/sysdeps)
find libpthread/nptl -name "*pt-vfork*" -exec git rm {} \;

Reported-By: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
21 files changed:
libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S [deleted file]
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S [deleted file]

diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S
deleted file mode 100644 (file)
index a6005c1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (C) 2003, 2004 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 <tcb-offsets.h>
-
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS                                            \
-       /* Load the current cached pid value across the vfork.  */      \
-       rduniq;                                                         \
-       ldl     a2, PID_OFFSET(v0);                                     \
-       mov     v0, a1;                                                 \
-       /* Write back its negation, to indicate that the pid value is   \
-          uninitialized in the the child, and in the window between    \
-          here and the point at which we restore the value.  */        \
-       negl    a2, t0;                                                 \
-       stl     t0, PID_OFFSET(v0);
-
-PSEUDO (__vfork, vfork, 0)
-
-       /* If we're back in the parent, restore the saved pid.  */
-       beq     v0, 1f
-       stl     a2, PID_OFFSET(a1)
-1:     ret
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
index 8e3c7b0..3b9db6a 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S
+libpthread_linux_arch_SSRC =
 libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \
        pt-__syscall_rt_sigaction.c pt-__syscall_error.c
 
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S
deleted file mode 100644 (file)
index f222dca..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include "vfork.S"
index c8d5d4a..e61072e 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S
+libpthread_linux_arch_SSRC =
 libpthread_linux_arch_CSRC = pthread_once.c \
        pt-__syscall_rt_sigaction.c pt-__syscall_error.c \
        lowlevellock.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S
deleted file mode 100644 (file)
index df18f03..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2005 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 <tcb-offsets.h>
-
-/* Save the PID value.  */
-#define SAVE_PID \
-       str     lr, [sp, #-4]!;         /* Save LR.  */                 \
-       mov     r0, #0xffff0fff;        /* Point to the high page.  */  \
-       mov     lr, pc;                 /* Save our return address.  */ \
-       sub     pc, r0, #31;            /* Jump to the TLS entry.  */   \
-       ldr     lr, [sp], #4;           /* Restore LR.  */              \
-       mov     r2, r0;                 /* Save the TLS addr in r2.  */ \
-       ldr     r3, [r2, #PID_OFFSET];  /* Load the saved PID.  */      \
-       rsb     r0, r3, #0;             /* Negate it.  */               \
-       str     r0, [r2, #PID_OFFSET]   /* Store the temporary PID.  */
-
-/* Restore the old PID value in the parent.  */
-#define RESTORE_PID \
-       cmp     r0, #0;                 /* If we are the parent... */   \
-       strne   r3, [r2, #PID_OFFSET]   /* ... restore the saved PID.  */
-
-#include "../../../../../../../libc/sysdeps/linux/arm/vfork.S"
index fff0dae..9dc878c 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S clone.S pthread_spin_unlock.S pthread_once.S
+libpthread_linux_arch_SSRC = clone.S pthread_spin_unlock.S pthread_once.S
 libpthread_linux_arch_CSRC = pthread_spin_init.c pt-__syscall_error.c
 
 libc_linux_arch_CSRC = fork.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S
deleted file mode 100644 (file)
index 5bba782..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Andreas Schwab <schwab@gnu.org>.
-
-   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 <bits/kernel-features.h>
-#include <tcb-offsets.h>
-
-/* Save the PID value.  */
-#define SAVE_PID \
-       movl    %gs:PID, %edx;                                                \
-       movl    %edx, %eax;                                                   \
-       negl    %eax;                                                         \
-       movl    %eax, %gs:PID
-
-/* Restore the old PID value in the parent.  */
-#define RESTORE_PID \
-       testl   %eax, %eax;                                                   \
-       je      1f;                                                           \
-       movl    %edx, %gs:PID;                                                \
-1:
-
-/* 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.  */
-
-ENTRY (__vfork)
-       /* Pop the return PC value into ECX.  */
-       popl    %ecx
-
-       SAVE_PID
-
-       /* Stuff the syscall number in EAX and enter into the kernel.  */
-       movl    $SYS_ify (vfork), %eax
-       int     $0x80
-
-       RESTORE_PID
-
-       /* Jump to the return PC.  Don't jump directly since this
-          disturbs the branch target cache.  Instead push the return
-          address back on the stack.  */
-       pushl   %ecx
-
-       cmpl    $-4095, %eax
-       jae     SYSCALL_ERROR_LABEL     /* Branch forward if it failed.  */
-L(pseudo_end):
-       ret
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
index 4d02d0c..ddc7680 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S
+libpthread_linux_arch_SSRC =
 libpthread_linux_arch_CSRC = pthread_once.c \
        pt-__syscall_rt_sigaction.c pt-__syscall_error.c \
        lowlevellock.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S
deleted file mode 100644 (file)
index 489c749..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 2005 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, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <tcb-offsets.h>
-#include <asm/unistd.h>
-
-#ifdef __PIC__
-#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT
-#else
-#define __VFORK_METAG_LOAD_TP ___metag_load_tp
-#endif
-
-/* Save the PID value.  */
-#define SAVE_PID \
-       SETL    [A0StP++], D0FrT, D1RtP; \
-       CALLR   D1RtP, __VFORK_METAG_LOAD_TP; \
-       SUB     D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
-       GETD    D0FrT, [D0Re0 + #PID]; \
-       NEG     D0FrT, D0FrT; \
-       SETD    [D0Re0 + #PID], D0FrT; \
-       GETL    D0FrT, D1RtP, [--A0StP];
-
-#define RESTORE_PID \
-       CMP     D0Re0, #0; \
-       BEQ     1f; \
-       MSETL   [A0StP++], D0Re0, D0FrT; \
-       CALLR   D1RtP, __VFORK_METAG_LOAD_TP; \
-       SUB     D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
-       GETD    D0FrT, [D0Re0 + #PID]; \
-       NEG     D0FrT, D0FrT; \
-       SETD    [D0Re0 + #PID], D0FrT; \
-       GETL    D0FrT, D1RtP, [--A0StP]; \
-       GETL    D0Re0, D1Re0, [--A0StP]; \
-1:
-
-#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S>
index 4a3d0f2..f87dedc 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S clone.S
+libpthread_linux_arch_SSRC = clone.S
 libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_rt_sigaction.c
 
 libc_linux_arch_CSRC = fork.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S
deleted file mode 100644 (file)
index 52fbde3..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2005 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 <features.h>
-#include <tls.h>
-
-/* Save the PID value.  */
-#define SAVE_PID \
-       READ_THREAD_POINTER(v1);        /* Get the thread pointer.  */  \
-       lw      a2, PID_OFFSET(v1);     /* Load the saved PID.  */      \
-       subu    a2, $0, a2;             /* Negate it.  */               \
-       sw      a2, PID_OFFSET(v1);     /* Store the temporary PID.  */
-
-/* Restore the old PID value in the parent.  */
-#define RESTORE_PID \
-       beqz    v0, 1f;                 /* If we are the parent... */   \
-       READ_THREAD_POINTER(v1);        /* Get the thread pointer.  */  \
-       lw      a2, PID_OFFSET(v1);     /* Load the saved PID.  */      \
-       subu    a2, $0, a2;             /* Re-negate it.  */            \
-       sw      a2, PID_OFFSET(v1);     /* Restore the PID.  */         \
-1:
-
-#include <../../../../../../../libc/sysdeps/linux/mips/vfork.S>
index 21b9b72..df4bb69 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S
+libpthread_linux_arch_SSRC =
 libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_error.c
 
 libc_linux_arch_CSRC = fork.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S
deleted file mode 100644 (file)
index 2f82504..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
-
-   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 <bits/kernel-features.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.  */
-
-ENTRY (__vfork)
-       lwz     0,PID(2)
-       neg     0,0
-       stw     0,PID(2)
-
-       DO_CALL (SYS_ify (vfork))
-
-       cmpwi   1,3,0
-       beqlr-  1
-
-       lwz     0,PID(2)
-       neg     0,0
-       stw     0,PID(2)
-
-       PSEUDO_RET
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S
deleted file mode 100644 (file)
index 12e47b3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
-
-   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 <bits/kernel-features.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.  */
-
-ENTRY (__vfork)
-       lwz     0,PID(13)
-       neg     0,0
-       stw     0,PID(13)
-
-       DO_CALL (SYS_ify (vfork))
-
-       cmpwi   1,3,0
-       beqlr-  1
-
-       lwz     0,PID(13)
-       neg     0,0
-       stw     0,PID(13)
-
-       PSEUDO_RET
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S
deleted file mode 100644 (file)
index 0225219..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#if defined __powerpc64__
-# include "powerpc64/pt-vfork.S"
-#else
-# include "powerpc32/pt-vfork.S"
-#endif
index 154dd6e..908d9e1 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S pthread_once.S pthread_rwlock_wrlock.S \
+libpthread_linux_arch_SSRC = pthread_once.S pthread_rwlock_wrlock.S \
                        pthread_rwlock_rdlock.S pthread_rwlock_unlock.S \
                        lowlevellock.S lowlevelrobustlock.S pthread_barrier_wait.S \
                        pthread_cond_broadcast.S pthread_cond_signal.S \
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S
deleted file mode 100644 (file)
index 56aa6d0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2003, 2004 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.  */
-
-ENTRY (__vfork)
-       /* Save the PID value.  */
-       stc     gbr, r2
-       mov.w   .L2, r0
-       mov.l   @(r0,r2), r4
-       neg     r4, r1
-       mov.l   r1, @(r0,r2)
-
-       mov.w   .L1, r3
-       trapa   #0x10
-       mov     r0, r1
-
-       /* Restore the old PID value in the parent.  */
-       tst     r0, r0
-       bt/s    2f
-        stc    gbr, r2
-       mov.w   .L2, r0
-       mov.l   r4, @(r0,r2)
-       mov     r1, r0
-2:
-       mov     #-12, r2
-       shad    r2, r1
-       not     r1, r1                  // r1=0 means r0 = -1 to -4095
-       tst     r1, r1                  // i.e. error in linux
-       bf      .Lpseudo_end
-       SYSCALL_ERROR_HANDLER
-.Lpseudo_end:
-       rts
-        nop
-.L1:
-       .word   __NR_vfork
-.L2:
-       .word   PID - TLS_PRE_TCB_SIZE
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
index 2b2b5f5..01a9e87 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S clone.S
+libpthread_linux_arch_SSRC = clone.S
 libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \
        pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.c \
        pt-__syscall_error.c
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S
deleted file mode 100644 (file)
index 37231a8..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
-
-   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 <tcb-offsets.h>
-
-       .text
-       .globl          __syscall_error
-ENTRY(__vfork)
-       ld      [%g7 + PID], %o5
-       sub     %g0, %o5, %o4
-       st      %o4, [%g7 + PID]
-
-       LOADSYSCALL(vfork)
-       ta      0x10
-       bcc     2f
-        mov    %o7, %g1
-       st      %o5, [%g7 + PID]
-       call    __syscall_error
-        mov    %g1, %o7
-2:     sub     %o1, 1, %o1
-       andcc   %o0, %o1, %o0
-       bne,a   1f
-        st     %o5, [%g7 + PID]
-1:     retl
-        nop
-END(__vfork)
-
-weak_alias (__vfork, vfork)
index ebd5060..af14164 100644 (file)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-libpthread_linux_arch_SSRC = pt-vfork.S clone.S pthread_once.S \
+libpthread_linux_arch_SSRC = clone.S pthread_once.S \
        lowlevellock.S pthread_barrier_wait.S pthread_cond_signal.S pthread_cond_broadcast.S \
        sem_post.S sem_timedwait.S lowlevelrobustlock.S \
        sem_trywait.S sem_wait.S pthread_rwlock_rdlock.S pthread_rwlock_wrlock.S \
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S
deleted file mode 100644 (file)
index 08a085c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 2004 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 <tcb-offsets.h>
-
-#define SAVE_PID \
-       movl    %fs:PID, %esi;                                                \
-       movl    %esi, %edx;                                                   \
-       negl    %edx;                                                         \
-       movl    %edx, %fs:PID
-
-#define RESTORE_PID \
-       testq   %rax, %rax;                                                   \
-       je      1f;                                                           \
-       movl    %esi, %fs:PID;                                                \
-1:
-
-#include <../../../../../../../libc/sysdeps/linux/x86_64/vfork.S>