| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793 | From c0cdfbcfd4ca6f86eae5f189290cbc1be891a398 Mon Sep 17 00:00:00 2001From: Waldemar Brodkorb <wbx@openadk.org>Date: Thu, 4 Sep 2014 15:23:36 +0200Subject: [PATCH 2/6] nptl: remove duplicate vfork() in libpthreadAutomatic patching via two oneliners by Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>:sed -i -e 's/[[:space:]]pt-vfork\.[csS]//' $(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>Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>--- .../nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S  | 42 -------------- .../nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch |  3 +- .../nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S    |  7 --- .../nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch |  3 +- .../nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S    | 37 ------------ .../sysdeps/unix/sysv/linux/i386/Makefile.arch     |  3 +- .../nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S   | 67 ---------------------- .../sysdeps/unix/sysv/linux/metag/Makefile.arch    |  3 +- .../nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S  | 51 ---------------- .../sysdeps/unix/sysv/linux/mips/Makefile.arch     |  3 +- .../nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S   | 37 ------------ .../sysdeps/unix/sysv/linux/powerpc/Makefile.arch  |  3 +- .../unix/sysv/linux/powerpc/powerpc32/pt-vfork.S   | 48 ---------------- .../unix/sysv/linux/powerpc/powerpc64/pt-vfork.S   | 48 ---------------- .../sysdeps/unix/sysv/linux/powerpc/pt-vfork.S     |  5 -- .../nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch  |  3 +- .../nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S     | 64 --------------------- .../sysdeps/unix/sysv/linux/sparc/Makefile.arch    |  3 +- .../nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S  | 44 -------------- .../sysdeps/unix/sysv/linux/x86_64/Makefile.arch   |  3 +- .../nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S | 32 ----------- 21 files changed, 9 insertions(+), 500 deletions(-) delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.Sdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.Sdeleted file mode 100644index a6005c1..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S+++ /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)diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.archindex 25e6fad..658aa6c 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch@@ -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 @@ -17,7 +17,6 @@ CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread  ASFLAGS-vfork.S = -DIS_IN_libc -DNOT_IN_libpthread ASFLAGS-clone.S = -DIS_IN_libc -DNOT_IN_libpthreaddiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.Sdeleted file mode 100644index f222dca..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S+++ /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"diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.archindex 329d8a9..6f05b7d 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch@@ -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@@ -19,7 +19,6 @@ CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -marm  ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y) CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.Sdeleted file mode 100644index df18f03..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S+++ /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"diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.archindex 9a34595..94fc03a 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch@@ -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@@ -14,7 +14,6 @@ libc_linux_arch_SSRC = clone.S vfork.S ASFLAGS += -DUSE___THREAD  CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-lowlevelrobustlock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANTdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.Sdeleted file mode 100644index 5bba782..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S+++ /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)diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.archindex df98875..99dec6b 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch@@ -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@@ -22,7 +22,6 @@ CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread ASFLAGS-vfork.S = -DIS_IN_libc -DNOT_IN_libpthread ASFLAGS-clone.S = -DIS_IN_libc -DNOT_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread  ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y) CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.Sdeleted file mode 100644index 489c749..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S+++ /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>diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.archindex fc26a8e..a453b6b 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch@@ -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@@ -21,7 +21,6 @@ CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__ endif CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread  ASFLAGS-clone.S = -D_LIBC_REENTRANT ASFLAGS-vfork.S = -D_LIBC_REENTRANTdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.Sdeleted file mode 100644index 52fbde3..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S+++ /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>diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.archindex 8581aea..215c2aa 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch@@ -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@@ -19,7 +19,6 @@ ASFLAGS += -DUSE___THREAD CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT #ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT  #ASFLAGS-libc-lowlevellock.S = -D_LIBC_REENTRANTdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.Sdeleted file mode 100644index 2f82504..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S+++ /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.Sdeleted file mode 100644index 12e47b3..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S+++ /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.Sdeleted file mode 100644index 0225219..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S+++ /dev/null@@ -1,5 +0,0 @@-#if defined __powerpc64__-# include "powerpc64/pt-vfork.S"-#else-# include "powerpc32/pt-vfork.S"-#endifdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.archindex a8249e0..9ebbda5 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch@@ -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 \@@ -17,7 +17,6 @@ libc_linux_arch_SSRC = libc-lowlevellock.S clone.S vfork.S  ASFLAGS += -DUSE___THREAD -ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-pthread_once.S = -D_LIBC_REENTRANT ASFLAGS-pthread_rwlock_wrlock.S = -D_LIBC_REENTRANT ASFLAGS-pthread_rwlock_rdlock.S = -D_LIBC_REENTRANTdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.Sdeleted file mode 100644index 56aa6d0..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S+++ /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)diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.archindex 102c0da..aedad2c 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch@@ -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@@ -17,7 +17,6 @@ librt_linux_arch_CSRC = pt-__syscall_error.c  ASFLAGS += -DUSE___THREAD -ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthreaddiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.Sdeleted file mode 100644index 37231a8..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S+++ /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)diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.archindex 71df986..7c2505f 100644--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch@@ -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 \@@ -21,7 +21,6 @@ librt_linux_arch_SSRC = librt-cancellation.S ASFLAGS += -DUSE___THREAD  CFLAGS-pt-__syscall_error.c =  -DNOT_IN_libc -DIS_IN_libpthread-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT ASFLAGS-cancellation.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANTdiff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.Sdeleted file mode 100644index 08a085c..0000000--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S+++ /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>-- 1.8.5.2 (Apple Git-48)
 |