From a9f1039f0a6a3b5e453107ae2e4c5deff0926ea6 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 1 Aug 2012 20:49:45 +0000 Subject: [PATCH] Remove __ASSUME_VFORK_SYSCALL (and some __NR_vfork conditionals). --- ChangeLog | 17 ++++++++++++++ ports/ChangeLog.arm | 5 +++++ ports/ChangeLog.m68k | 9 ++++++++ .../sysdeps/unix/sysv/linux/arm/kernel-features.h | 3 --- .../sysdeps/unix/sysv/linux/m68k/kernel-features.h | 1 - ports/sysdeps/unix/sysv/linux/m68k/vfork.S | 23 +------------------ sysdeps/unix/sysv/linux/i386/vfork.S | 23 ------------------- sysdeps/unix/sysv/linux/kernel-features.h | 11 --------- sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S | 26 +--------------------- sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S | 23 +------------------ 10 files changed, 34 insertions(+), 107 deletions(-) diff --git a/ChangeLog b/ChangeLog index 67d9b39..6d7aefe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2012-08-01 Joseph Myers + + * 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 * sysdeps/generic/sys/param.h (NGROUPS): Define only if [NGROUPS_MAX]. diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index bbf9c68..d7d9f4c 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,8 @@ +2012-08-01 Joseph Myers + + * sysdeps/unix/sysv/linux/arm/kernel-features.h + (__ASSUME_VFORK_SYSCALL): Remove. + 2012-08-01 Roland McGrath * sysdeps/arm/dl-machine.h (CLEAR_CACHE): Don't define it. diff --git a/ports/ChangeLog.m68k b/ports/ChangeLog.m68k index 84260c0..993ba7f 100644 --- a/ports/ChangeLog.m68k +++ b/ports/ChangeLog.m68k @@ -1,3 +1,12 @@ +2012-08-01 Joseph Myers + + * 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 [BZ #14138] diff --git a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h index 9092df7..0ab5df0 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -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 diff --git a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h index 3b0b441..05d06b2 100644 --- a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -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 diff --git a/ports/sysdeps/unix/sysv/linux/m68k/vfork.S b/ports/sysdeps/unix/sysv/linux/m68k/vfork.S index 24e0c90..d3e20d4 100644 --- a/ports/sysdeps/unix/sysv/linux/m68k/vfork.S +++ b/ports/sysdeps/unix/sysv/linux/m68k/vfork.S @@ -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) diff --git a/sysdeps/unix/sysv/linux/i386/vfork.S b/sysdeps/unix/sysv/linux/i386/vfork.S index a8a7e45..11c530d 100644 --- a/sysdeps/unix/sysv/linux/i386/vfork.S +++ b/sysdeps/unix/sysv/linux/i386/vfork.S @@ -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) diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index cfe335d..7357165 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -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. diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S index 6625e20..ca20f7b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S @@ -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) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S index 7baefd0..3ce38be 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S @@ -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) -- 2.7.4