]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/unix/sysv/linux/mips/vfork.S
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / mips / vfork.S
index 0913d6b7f909866c0ea5089e176250d5717b2151..ec0f6bd376cf8f3959aff5cc6295ab7f4ce4dc31 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -13,7 +13,7 @@
 
    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/>.  */
+   <https://www.gnu.org/licenses/>.  */
 
 /* vfork() is just a special case of clone().  */
 
 #include <sysdep.h>
 #include <asm/unistd.h>
 #include <sgidefs.h>
-
-#ifndef SAVE_PID
-#define SAVE_PID
-#endif
-
-#ifndef RESTORE_PID
-#define RESTORE_PID
-#endif
+#include <tls.h>
 
 
 /* int vfork() */
 LOCALSZ= 1
 FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
 GPOFF= FRAMESZ-(1*SZREG)
-NESTED(__vfork,FRAMESZ,sp)
+NESTED(__libc_vfork,FRAMESZ,sp)
 #ifdef __PIC__
        SETUP_GP
 #endif
        PTR_SUBU sp, FRAMESZ
        cfi_adjust_cfa_offset (FRAMESZ)
-       SETUP_GP64_REG (a5, __vfork)
+       SETUP_GP64_REG (a5, __libc_vfork)
 #ifdef __PIC__
        SAVE_GP (GPOFF)
 #endif
@@ -67,8 +60,6 @@ NESTED(__vfork,FRAMESZ,sp)
        PTR_ADDU        sp, FRAMESZ
        cfi_adjust_cfa_offset (-FRAMESZ)
 
-       SAVE_PID
-
        li              a0, 0x4112      /* CLONE_VM | CLONE_VFORK | SIGCHLD */
        move            a1, sp
 
@@ -76,8 +67,6 @@ NESTED(__vfork,FRAMESZ,sp)
        li              v0,__NR_clone
        syscall
 
-       RESTORE_PID
-
        cfi_remember_state
        bnez            a3,L(error)
 
@@ -96,7 +85,10 @@ L(error):
        RESTORE_GP64_REG
        j               __syscall_error
 #endif
-       END(__vfork)
+       END(__libc_vfork)
 
-libc_hidden_def(__vfork)
-weak_alias (__vfork, vfork)
+#if IS_IN (libc)
+weak_alias (__libc_vfork, vfork)
+strong_alias (__libc_vfork, __vfork)
+libc_hidden_def (__vfork)
+#endif