1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

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> 2012-08-01 Roland McGrath <roland@hack.frob.com>
* sysdeps/generic/sys/param.h (NGROUPS): Define only if [NGROUPS_MAX]. * 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> 2012-08-01 Roland McGrath <roland@hack.frob.com>
* sysdeps/arm/dl-machine.h (CLEAR_CACHE): Don't define it. * 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> 2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138] [BZ #14138]

View File

@ -30,9 +30,6 @@
/* Arm got fcntl64 in 2.4.4. */ /* Arm got fcntl64 in 2.4.4. */
#define __ASSUME_FCNTL64 1 #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. */ /* The signal frame layout changed in 2.6.18. */
#if __LINUX_KERNEL_VERSION >= 132626 #if __LINUX_KERNEL_VERSION >= 132626
# define __ASSUME_SIGFRAME_V2 1 # define __ASSUME_SIGFRAME_V2 1

View File

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

View File

@ -36,8 +36,6 @@
ENTRY (__vfork) ENTRY (__vfork)
#ifdef __NR_vfork
/* SAVE_PID clobbers call-clobbered registers and /* SAVE_PID clobbers call-clobbered registers and
saves data in D1 and A1. */ saves data in D1 and A1. */
@ -66,27 +64,8 @@ ENTRY (__vfork)
cfi_adjust_cfa_offset (4) cfi_adjust_cfa_offset (4)
cfi_rel_offset (%pc, 0) cfi_rel_offset (%pc, 0)
# ifdef __ASSUME_VFORK_SYSCALL #ifndef PIC
# ifndef PIC
jbra SYSCALL_ERROR_LABEL 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 #endif
PSEUDO_END (__vfork) PSEUDO_END (__vfork)

View File

@ -28,8 +28,6 @@
ENTRY (__vfork) ENTRY (__vfork)
#ifdef __NR_vfork
/* Pop the return PC value into ECX. */ /* Pop the return PC value into ECX. */
popl %ecx popl %ecx
cfi_adjust_cfa_offset (-4) cfi_adjust_cfa_offset (-4)
@ -55,31 +53,10 @@ ENTRY (__vfork)
cmpl $-4095, %eax cmpl $-4095, %eax
/* Branch forward if it failed. */ /* Branch forward if it failed. */
# ifdef __ASSUME_VFORK_SYSCALL
jae SYSCALL_ERROR_LABEL jae SYSCALL_ERROR_LABEL
# else
jae .Lerror
# endif
ret 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) PSEUDO_END (__vfork)
libc_hidden_def (__vfork) libc_hidden_def (__vfork)

View File

@ -100,12 +100,6 @@
MIPS n32). */ MIPS n32). */
#define __ASSUME_GETDENTS64_SYSCALL 1 #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 /* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
kernel. But PowerPC64 does not support a separate MMAP2 call. */ kernel. But PowerPC64 does not support a separate MMAP2 call. */
#if defined __powerpc__ && !defined __powerpc64__ #if defined __powerpc__ && !defined __powerpc64__
@ -118,11 +112,6 @@
# define __ASSUME_SET_THREAD_AREA_SYSCALL 1 # define __ASSUME_SET_THREAD_AREA_SYSCALL 1
#endif #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 /* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
their availability with one define. The changes were made first their availability with one define. The changes were made first
for i386 and the have to be done separately for the other archs. 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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. */ and the process ID of the new process to the old process. */
ENTRY (__vfork) ENTRY (__vfork)
#ifdef __NR_vfork
DO_CALL (SYS_ify (vfork)) DO_CALL (SYS_ify (vfork))
# ifdef __ASSUME_VFORK_SYSCALL
PSEUDO_RET 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) PSEUDO_END (__vfork)
libc_hidden_def (__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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -27,29 +27,8 @@
ENTRY (__vfork) ENTRY (__vfork)
CALL_MCOUNT 0 CALL_MCOUNT 0
#ifdef __NR_vfork
DO_CALL (SYS_ify (vfork)) DO_CALL (SYS_ify (vfork))
# ifdef __ASSUME_VFORK_SYSCALL
PSEUDO_RET 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) PSEUDO_END (__vfork)
libc_hidden_def (__vfork) libc_hidden_def (__vfork)