summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-08-01 20:49:45 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-08-01 20:49:45 +0000
commita9f1039f0a6a3b5e453107ae2e4c5deff0926ea6 (patch)
tree50eb75e4f72ef6e2948166f5135db3e3fd1f238a
parent5d9eaeecb451dc85479c1905d41a0b41c6d8b1d0 (diff)
downloadglibc-a9f1039f0a6a3b5e453107ae2e4c5deff0926ea6.tar.gz
Remove __ASSUME_VFORK_SYSCALL (and some __NR_vfork conditionals).
-rw-r--r--ChangeLog17
-rw-r--r--ports/ChangeLog.arm5
-rw-r--r--ports/ChangeLog.m68k9
-rw-r--r--ports/sysdeps/unix/sysv/linux/arm/kernel-features.h3
-rw-r--r--ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h1
-rw-r--r--ports/sysdeps/unix/sysv/linux/m68k/vfork.S23
-rw-r--r--sysdeps/unix/sysv/linux/i386/vfork.S23
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h11
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S26
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S23
10 files changed, 34 insertions, 107 deletions
diff --git a/ChangeLog b/ChangeLog
index 67d9b3920a..6d7aefe43d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)