123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793 |
- From c0cdfbcfd4ca6f86eae5f189290cbc1be891a398 Mon Sep 17 00:00:00 2001
- From: Waldemar Brodkorb <wbx@openadk.org>
- Date: Thu, 4 Sep 2014 15:23:36 +0200
- Subject: [PATCH 2/6] nptl: remove duplicate vfork() in libpthread
- Automatic 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.S
- 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
- index 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.arch
- index 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_libpthread
- 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
- index 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.arch
- index 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.S
- deleted file mode 100644
- index 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.arch
- index 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_REENTRANT
- 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
- index 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.arch
- index 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.S
- deleted file mode 100644
- index 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.arch
- index 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_REENTRANT
- 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
- index 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.arch
- index 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_REENTRANT
- 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
- index 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.S
- deleted file mode 100644
- index 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.S
- deleted file mode 100644
- index 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"
- -#endif
- diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch
- index 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_REENTRANT
- 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
- index 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.arch
- index 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_libpthread
- 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
- index 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.arch
- index 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_REENTRANT
- 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
- index 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)
|