diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/mips/vfork.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/vfork.S | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S index 8c66151437..8c993fd0a0 100644 --- a/sysdeps/unix/sysv/linux/mips/vfork.S +++ b/sysdeps/unix/sysv/linux/mips/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2005-2016 Free Software Foundation, Inc. +/* Copyright (C) 2005-2018 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 @@ -31,13 +31,13 @@ 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 @@ -60,14 +60,6 @@ NESTED(__vfork,FRAMESZ,sp) PTR_ADDU sp, FRAMESZ cfi_adjust_cfa_offset (-FRAMESZ) - /* Save the PID value. */ - READ_THREAD_POINTER(v1) /* Get the thread pointer. */ - lw a2, PID_OFFSET(v1) /* Load the saved PID. */ - subu a2, $0, a2 /* Negate it. */ - bnez a2, 1f /* If it was zero... */ - lui a2, 0x8000 /* use 0x80000000 instead. */ -1: sw a2, PID_OFFSET(v1) /* Store the temporary PID. */ - li a0, 0x4112 /* CLONE_VM | CLONE_VFORK | SIGCHLD */ move a1, sp @@ -75,17 +67,6 @@ NESTED(__vfork,FRAMESZ,sp) li v0,__NR_clone syscall - /* Restore the old PID value in the parent. */ - 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. */ - lui a0, 0x8000 /* Load 0x80000000... */ - bne a2, a0, 2f /* ... compare against it... */ - li a2, 0 /* ... use 0 instead. */ -2: sw a2, PID_OFFSET(v1) /* Restore the PID. */ -1: - cfi_remember_state bnez a3,L(error) @@ -104,8 +85,10 @@ L(error): RESTORE_GP64_REG j __syscall_error #endif - END(__vfork) + END(__libc_vfork) -libc_hidden_def(__vfork) -weak_alias (__vfork, vfork) -strong_alias (__vfork, __libc_vfork) +#if IS_IN (libc) +weak_alias (__libc_vfork, vfork) +strong_alias (__libc_vfork, __vfork) +libc_hidden_def (__vfork) +#endif |