diff options
Diffstat (limited to 'libc/sysdeps/linux/common')
| -rw-r--r-- | libc/sysdeps/linux/common/vfork.c | 22 | 
1 files changed, 7 insertions, 15 deletions
| diff --git a/libc/sysdeps/linux/common/vfork.c b/libc/sysdeps/linux/common/vfork.c index e7c920892..a70ed4a63 100644 --- a/libc/sysdeps/linux/common/vfork.c +++ b/libc/sysdeps/linux/common/vfork.c @@ -4,30 +4,22 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#include <unistd.h> -#include <sys/types.h>  #include <sys/syscall.h> +#if (defined __NR_vfork || (defined __ARCH_USE_MMU__ && defined __NR_fork)) && (defined __USE_BSD || defined __USE_XOPEN_EXTENDED) +# include <unistd.h>  extern __typeof(vfork) __vfork attribute_hidden; -#ifdef __NR_vfork - -# define __NR___vfork __NR_vfork +# ifdef __NR_vfork +#  define __NR___vfork __NR_vfork  _syscall0(pid_t, __vfork) - -weak_alias(__vfork,vfork) -libc_hidden_weak(vfork) - -#elif defined __ARCH_USE_MMU__ && defined __NR_fork - +# else  /* Trivial implementation for arches that lack vfork */ -  pid_t __vfork(void)  {      return fork();  } - -weak_alias(__vfork,vfork) +# endif +strong_alias(__vfork,vfork)  libc_hidden_weak(vfork) -  #endif | 
