diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | ports/ChangeLog.arm | 5 | ||||
-rw-r--r-- | ports/ChangeLog.m68k | 9 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/arm/kernel-features.h | 3 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h | 1 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/m68k/vfork.S | 23 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/vfork.S | 23 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S | 26 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S | 23 |
10 files changed, 34 insertions, 107 deletions
@@ -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]. diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index bbf9c68127..d7d9f4ce51 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -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. diff --git a/ports/ChangeLog.m68k b/ports/ChangeLog.m68k index 84260c0d6b..993ba7fd28 100644 --- a/ports/ChangeLog.m68k +++ b/ports/ChangeLog.m68k @@ -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] diff --git a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h index 9092df7192..0ab5df094e 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 3b0b441aa4..05d06b2555 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 24e0c9037c..d3e20d4067 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 a8a7e45670..11c530de5f 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 cfe335d0bd..7357165618 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 6625e207a9..ca20f7bebd 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 7baefd0c16..3ce38be884 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) |