Remove __ASSUME_VFORK_SYSCALL (and some __NR_vfork conditionals).

This commit is contained in:
Joseph Myers 2012-08-01 20:49:45 +00:00
parent 5d9eaeecb4
commit a9f1039f0a
10 changed files with 34 additions and 107 deletions

View file

@ -1,3 +1,20 @@
2012-08-01 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_VFORK_SYSCALL): Remove all definitions.
* sysdeps/unix/sysv/linux/i386/vfork.S (__vfork) [__NR_vfork]:
Make code unconditional.
(__vfork) [__ASSUME_VFORK_SYSCALL]: Likewise.
(__vfork) [!__ASSUME_VFORK_SYSCALL]: Remove conditional code.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S (__vfork)
[__NR_vfork]: Make code unconditional.
(__vfork) [__ASSUME_VFORK_SYSCALL]: Likewise.
(__vfork) [!__ASSUME_VFORK_SYSCALL]: Remove conditional code.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork)
[__NR_vfork]: Make code unconditional.
(__vfork) [__ASSUME_VFORK_SYSCALL]: Likewise.
(__vfork) [!__ASSUME_VFORK_SYSCALL]: Remove conditional code.
2012-08-01 Roland McGrath <roland@hack.frob.com>
* sysdeps/generic/sys/param.h (NGROUPS): Define only if [NGROUPS_MAX].

View file

@ -1,3 +1,8 @@
2012-08-01 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/arm/kernel-features.h
(__ASSUME_VFORK_SYSCALL): Remove.
2012-08-01 Roland McGrath <roland@hack.frob.com>
* sysdeps/arm/dl-machine.h (CLEAR_CACHE): Don't define it.

View file

@ -1,3 +1,12 @@
2012-08-01 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
(__ASSUME_VFORK_SYSCALL): Remove.
* sysdeps/unix/sysv/linux/m68k/vfork.S (__vfork) [__NR_vfork]:
Make code unconditional.
(__vfork) [__ASSUME_VFORK_SYSCALL]: Likewise.
(__vfork) [!__ASSUME_VFORK_SYSCALL]: Remove conditional code.
2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138]

View file

@ -30,9 +30,6 @@
/* Arm got fcntl64 in 2.4.4. */
#define __ASSUME_FCNTL64 1
/* The vfork syscall on arm was definitely available in 2.4. */
#define __ASSUME_VFORK_SYSCALL 1
/* The signal frame layout changed in 2.6.18. */
#if __LINUX_KERNEL_VERSION >= 132626
# define __ASSUME_SIGFRAME_V2 1

View file

@ -21,7 +21,6 @@
#define __ASSUME_MMAP2_SYSCALL 1
#define __ASSUME_STAT64_SYSCALL 1
#define __ASSUME_FCNTL64 1
#define __ASSUME_VFORK_SYSCALL 1
/* Many syscalls were added in 2.6.10 for m68k. */
#if __LINUX_KERNEL_VERSION >= 132618

View file

@ -36,8 +36,6 @@
ENTRY (__vfork)
#ifdef __NR_vfork
/* SAVE_PID clobbers call-clobbered registers and
saves data in D1 and A1. */
@ -66,27 +64,8 @@ ENTRY (__vfork)
cfi_adjust_cfa_offset (4)
cfi_rel_offset (%pc, 0)
# ifdef __ASSUME_VFORK_SYSCALL
# ifndef PIC
#ifndef PIC
jbra SYSCALL_ERROR_LABEL
# endif
# else
/* Check if vfork syscall is known at all. */
movel #-ENOSYS,%d1
cmpl %d0,%d1
jne SYSCALL_ERROR_LABEL
# endif
#endif
#ifndef __ASSUME_VFORK_SYSCALL
/* If we don't have vfork, fork is close enough. */
movel #SYS_ify (fork), %d0
trap #0
tstl %d0
jmi SYSCALL_ERROR_LABEL
rts
#endif
PSEUDO_END (__vfork)

View file

@ -28,8 +28,6 @@
ENTRY (__vfork)
#ifdef __NR_vfork
/* Pop the return PC value into ECX. */
popl %ecx
cfi_adjust_cfa_offset (-4)
@ -55,31 +53,10 @@ ENTRY (__vfork)
cmpl $-4095, %eax
/* Branch forward if it failed. */
# ifdef __ASSUME_VFORK_SYSCALL
jae SYSCALL_ERROR_LABEL
# else
jae .Lerror
# endif
ret
# ifndef __ASSUME_VFORK_SYSCALL
.Lerror:
/* Check if vfork syscall is known at all. */
cmpl $-ENOSYS, %eax
jne SYSCALL_ERROR_LABEL
# endif
#endif
#ifndef __ASSUME_VFORK_SYSCALL
/* If we don't have vfork, fork is close enough. */
movl $SYS_ify (fork), %eax
int $0x80
cmpl $-4095, %eax
jae SYSCALL_ERROR_LABEL
ret
#endif
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)

View file

@ -100,12 +100,6 @@
MIPS n32). */
#define __ASSUME_GETDENTS64_SYSCALL 1
/* Starting with 2.4.5 kernels the vfork syscall made it into the
official kernel for PPC. */
#ifdef __powerpc__
# define __ASSUME_VFORK_SYSCALL 1
#endif
/* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
kernel. But PowerPC64 does not support a separate MMAP2 call. */
#if defined __powerpc__ && !defined __powerpc64__
@ -118,11 +112,6 @@
# define __ASSUME_SET_THREAD_AREA_SYSCALL 1
#endif
/* The vfork syscall on x86 and arm was definitely available in 2.4. */
#ifdef __i386__
# define __ASSUME_VFORK_SYSCALL 1
#endif
/* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
their availability with one define. The changes were made first
for i386 and the have to be done separately for the other archs.

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc.
/* Copyright (C) 2003-2012 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
@ -26,32 +26,8 @@
and the process ID of the new process to the old process. */
ENTRY (__vfork)
#ifdef __NR_vfork
DO_CALL (SYS_ify (vfork))
# ifdef __ASSUME_VFORK_SYSCALL
PSEUDO_RET
# else
bnslr+
/* Check if vfork syscall is known at all. */
cmpwi r3,ENOSYS
bne- .Lsyscall_error
# endif
#endif
#ifndef __ASSUME_VFORK_SYSCALL
/* If we don't have vfork, fork is close enough. */
DO_CALL (SYS_ify (fork))
bnslr+
.Lsyscall_error:
b __syscall_error@local
#endif
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2003 Free Software Foundation, Inc.
/* Copyright (C) 2003-2012 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
@ -27,29 +27,8 @@
ENTRY (__vfork)
CALL_MCOUNT 0
#ifdef __NR_vfork
DO_CALL (SYS_ify (vfork))
# ifdef __ASSUME_VFORK_SYSCALL
PSEUDO_RET
# else
bnslr+
/* Check if vfork syscall is known at all. */
cmpdi r3,ENOSYS
bne .Local_syscall_error
# endif
#endif
#ifndef __ASSUME_VFORK_SYSCALL
/* If we don't have vfork, fork is close enough. */
DO_CALL (SYS_ify (fork))
PSEUDO_RET
#endif
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)