Remove __ASSUME_MMAP2_SYSCALL.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 20 Aug 2012 14:37:27 +0000 (14:37 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 20 Aug 2012 14:37:27 +0000 (14:37 +0000)
15 files changed:
ChangeLog
ports/ChangeLog.arm
ports/ChangeLog.hppa
ports/ChangeLog.m68k
ports/ChangeLog.tile
ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h
ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h
ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
sysdeps/unix/sysv/linux/i386/mmap.S
sysdeps/unix/sysv/linux/i386/mmap64.S
sysdeps/unix/sysv/linux/kernel-features.h
sysdeps/unix/sysv/linux/mmap64.c
sysdeps/unix/sysv/linux/s390/s390-32/mmap.S
sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S

index 60a7a6d..ab7a87d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2012-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/kernel-features.h
+       (__ASSUME_MMAP2_SYSCALL): Remove all definitions.
+       * sysdeps/unix/sysv/linux/mmap64.c [__NR_mmap2]: Make code
+       unconditional.
+       [!__ASSUME_MMAP2_SYSCALL]: Remove conditional code.
+       * sysdeps/unix/sysv/linux/i386/mmap.S (__mmap)
+       [__ASSUME_MMAP2_SYSCALL]: Make code unconditional.
+       (__mmap) [!__ASSUME_MMAP2_SYSCALL]: Remove conditional code.
+       * sysdeps/unix/sysv/linux/i386/mmap64.S (__mmap64) [__NR_mmap2]:
+       Make code unconditional.
+       (__mmap64) [!__ASSUME_MMAP2_SYSCALL]: Remove conditional code.
+       (__mmap64) [!__NR_mmap2]: Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap)
+       [__ASSUME_MMAP2_SYSCALL]: Make code unconditional.
+       (__mmap) [!__ASSUME_MMAP2_SYSCALL]: Remove conditional code.
+       * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64)
+       [__NR_mmap2]: Make code unconditional.
+       (__mmap64) [!__ASSUME_MMAP2_SYSCALL]: Remove conditional code.
+       (__mmap64) [!__NR_mmap2]: Likewise.
+
 2012-08-20  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * sysdeps/unix/sysv/linux/s390/s390-32/getrlimit.c: Remove.
index 359bd0d..4acc473 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/arm/kernel-features.h
+       (__ASSUME_MMAP2_SYSCALL): Remove.
+
 2012-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
        * sysdeps/arm/nptl/pthread_spin_lock.c: Use generic code.
index a28fbce..97b6c57 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/hppa/kernel-features.h
+       (__ASSUME_MMAP2_SYSCALL): Remove.
+
 2012-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
        * sysdeps/hppa/nptl/pthread_spin_lock.c: Use generic code.
index 62a8eb3..5cdbe37 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/m68k/kernel-features.h
+       (__ASSUME_MMAP2_SYSCALL): Remove.
+
 2012-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
        * sysdeps/m68k/nptl/pthread_spin_lock.c: Use generic code.
index 53afc69..7e5cc6f 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/tile/kernel-features.h
+       (__ASSUME_MMAP2_SYSCALL): Remove.
+
 2012-08-14  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/tile/kernel-features.h
index b003b17..34ed474 100644 (file)
@@ -20,9 +20,8 @@
 /* The utimes syscall was added before 2.6.1.  */
 #define __ASSUME_UTIMES        1
 
-/* On ARM the mmap2/stat64/lstat64/fstat64 syscalls were introduced in
+/* On ARM the stat64/lstat64/fstat64 syscalls were introduced in
    2.3.35.  */
-#define __ASSUME_MMAP2_SYSCALL         1
 #define __ASSUME_STAT64_SYSCALL        1
 
 /* The signal frame layout changed in 2.6.18.  */
index 49ba55f..d5bec07 100644 (file)
@@ -23,7 +23,6 @@
    and expect the final version here.  */
 #define __ASSUME_32BITUIDS             1
 #define __ASSUME_TRUNCATE64_SYSCALL    1
-#define __ASSUME_MMAP2_SYSCALL         1
 #define __ASSUME_STAT64_SYSCALL                1
 #define __ASSUME_IPC64                 1
 #define __ASSUME_ST_INO_64_BIT         1
index 4a8b585..701600e 100644 (file)
@@ -18,7 +18,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 /* These features were surely available with 2.4.12.  */
-#define __ASSUME_MMAP2_SYSCALL         1
 #define __ASSUME_STAT64_SYSCALL        1
 
 /* Many syscalls were added in 2.6.10 for m68k.  */
index 956f14c..0463448 100644 (file)
@@ -18,7 +18,6 @@
 
 
 /* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */
-#define __ASSUME_MMAP2_SYSCALL         1
 #define __ASSUME_STAT64_SYSCALL                1
 #define __ASSUME_UTIMES                        1
 #define __ASSUME_FADVISE64_64_SYSCALL  1
index c8bf3e1..1f79bde 100644 (file)
 
 ENTRY (__mmap)
 
-/* I don't think it is worthwhile trying to use mmap2 whenever it
-   is available.  Only use it when we are sure the syscall exists.  */
-#ifdef __ASSUME_MMAP2_SYSCALL
-
        /* Save registers.  */
        pushl %ebp
        cfi_adjust_cfa_offset (4)
@@ -73,25 +69,6 @@ L(skip):
        cfi_adjust_cfa_offset (-4)
        cfi_restore (ebp)
 
-#else
-
-       /* Save registers.  */
-       movl %ebx, %edx
-       cfi_register (ebx, edx)
-
-       movl $SYS_ify(mmap), %eax       /* System call number in %eax.  */
-
-       lea 4(%esp), %ebx               /* Address of args is 1st arg.  */
-
-       /* Do the system call trap.  */
-       int $0x80
-
-       /* Restore registers.  */
-       movl %edx, %ebx
-       cfi_restore (ebx)
-
-#endif
-
        /* If 0 > %eax > -4096 there was an error.  */
        cmpl $-4096, %eax
        ja SYSCALL_ERROR_LABEL
index 7599b85..8855109 100644 (file)
@@ -37,8 +37,6 @@
        .text
 ENTRY (BP_SYM (__mmap64))
 
-#ifdef __NR_mmap2
-
        /* Save registers.  */
        pushl %ebp
        cfi_adjust_cfa_offset (4)
@@ -88,12 +86,6 @@ L(do_syscall):
        cfi_adjust_cfa_offset (-4)
        cfi_restore (ebp)
 
-#ifndef __ASSUME_MMAP2_SYSCALL
-2:
-       cmp $-ENOSYS, %eax
-       je 3f
-#endif
-
        /* If 0 > %eax > -4096 there was an error.  */
        cmpl $-4096, %eax
        ja SYSCALL_ERROR_LABEL
@@ -122,42 +114,6 @@ L(einval):
        cfi_restore (ebp)
        movl $-EINVAL, %eax
        jmp SYSCALL_ERROR_LABEL
-#endif
-
-#if !defined __ASSUME_MMAP2_SYSCALL || !defined __NR_mmap2
-3:
-       /* Save registers.  */
-       movl %ebx, %edx
-       cfi_register (ebx, edx)
-
-       cmpl $0, OFFHI-SVRSP(%esp)
-       jne L(einval2)
-
-       movl $SYS_ify(mmap), %eax       /* System call number in %eax.  */
-
-       lea ADDR-SVRSP(%esp), %ebx      /* Address of args is 1st arg.  */
-
-       /* Do the system call trap.  */
-       ENTER_KERNEL
-
-       /* Restore registers.  */
-       movl %edx, %ebx
-       cfi_restore (ebx)
-
-       /* If 0 > %eax > -4096 there was an error.  */
-       cmpl $-4096, %eax
-       ja SYSCALL_ERROR_LABEL
-
-       /* Successful; return the syscall's value.  */
-       ret
-
-       cfi_register (ebx, edx)
-L(einval2):
-       movl %edx, %ebx
-       cfi_restore (ebx)
-       movl $-EINVAL, %eax
-       jmp SYSCALL_ERROR_LABEL
-#endif
 
 PSEUDO_END (BP_SYM (__mmap64))
 
index 6b0eb95..06e1511 100644 (file)
 /* The sendfile syscall was introduced in 2.2.0.  */
 #define __ASSUME_SENDFILE              1
 
-/* On x86 the mmap2 syscall was introduced in 2.3.31.  */
-#ifdef __i386__
-# define __ASSUME_MMAP2_SYSCALL        1
-#endif
-
 /* On x86 the stat64/lstat64/fstat64 syscalls were introduced in 2.3.34.  */
 #ifdef __i386__
 # define __ASSUME_STAT64_SYSCALL       1
 #endif
 
-/* On sparc the mmap2/stat64/lstat64/fstat64 syscalls were introduced
-   in 2.3.35.  */
+/* On sparc the stat64/lstat64/fstat64 syscalls were introduced in
+   2.3.35.  */
 #if defined __sparc__ && !defined __arch64__
-# define __ASSUME_MMAP2_SYSCALL                1
 # define __ASSUME_STAT64_SYSCALL       1
 #endif
 
@@ -70,9 +64,8 @@
 # define __ASSUME_IPC64                1
 #endif
 
-/* SH kernels got stat64 and mmap2 during 2.4.0-test.  */
+/* SH kernels got stat64 during 2.4.0-test.  */
 #ifdef __sh__
-# define __ASSUME_MMAP2_SYSCALL                1
 # define __ASSUME_STAT64_SYSCALL       1
 #endif
 
    MIPS n32).  */
 #define __ASSUME_GETDENTS64_SYSCALL    1
 
-/* 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__
-# define __ASSUME_MMAP2_SYSCALL                1
-#endif
-
 /* Beginning with 2.6.12 the clock and timer supports CPU clocks.  */
 #define __ASSUME_POSIX_CPU_TIMERS      1
 
index 495d777..bca15f9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2001,2002,2006,2010 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 1999.
 
 
 #include <kernel-features.h>
 
-#ifdef __NR_mmap2
-
 /* This is always 12, even on architectures where PAGE_SHIFT != 12.  */
-# if MMAP2_PAGE_SHIFT == -1
+#if MMAP2_PAGE_SHIFT == -1
 static int page_shift;
-# else
-#  ifndef MMAP2_PAGE_SHIFT
-#   define MMAP2_PAGE_SHIFT 12
-#  endif
-# define page_shift MMAP2_PAGE_SHIFT
-# endif
-
-# ifndef __ASSUME_MMAP2_SYSCALL
-static int have_no_mmap2;
+#else
+# ifndef MMAP2_PAGE_SHIFT
+#  define MMAP2_PAGE_SHIFT 12
 # endif
+#define page_shift MMAP2_PAGE_SHIFT
 #endif
 
 
 void *
 __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset)
 {
-#ifdef __NR_mmap2
-# if MMAP2_PAGE_SHIFT == -1
+#if MMAP2_PAGE_SHIFT == -1
   if (page_shift == 0)
     {
       int page_size = getpagesize ();
       while ((1 << ++page_shift) != page_size)
        ;
     }
-# endif
-  if (offset & ((1 << page_shift) - 1))
-    {
-      __set_errno (EINVAL);
-      return MAP_FAILED;
-    }
-# ifndef __ASSUME_MMAP2_SYSCALL
-  if (! have_no_mmap2)
-# endif
-    {
-# ifndef __ASSUME_MMAP2_SYSCALL
-      int saved_errno = errno;
-# endif
-      void *result;
-      __ptrvalue (result) = (void *__unbounded)
-       INLINE_SYSCALL (mmap2, 6, __ptrvalue (addr),
-                       len, prot, flags, fd,
-                       (off_t) (offset >> MMAP2_PAGE_SHIFT));
-# if __BOUNDED_POINTERS__
-      __ptrlow (result) = __ptrvalue (result);
-      __ptrhigh (result) = __ptrvalue (result) + len;
-# endif
-# ifndef __ASSUME_MMAP2_SYSCALL
-      if (result != MAP_FAILED || errno != ENOSYS)
-# endif
-       return result;
-
-# ifndef __ASSUME_MMAP2_SYSCALL
-      __set_errno (saved_errno);
-      have_no_mmap2 = 1;
-# endif
-    }
 #endif
-#ifndef __ASSUME_MMAP2_SYSCALL
-  if (offset != (off_t) offset || (offset + len) != (off_t) (offset + len))
+  if (offset & ((1 << page_shift) - 1))
     {
       __set_errno (EINVAL);
       return MAP_FAILED;
     }
-
-  return __mmap (addr, len, prot, flags, fd, (off_t) offset);
+  void *result;
+  __ptrvalue (result) = (void *__unbounded)
+    INLINE_SYSCALL (mmap2, 6, __ptrvalue (addr),
+                   len, prot, flags, fd,
+                   (off_t) (offset >> MMAP2_PAGE_SHIFT));
+#if __BOUNDED_POINTERS__
+  __ptrlow (result) = __ptrvalue (result);
+  __ptrhigh (result) = __ptrvalue (result) + len;
 #endif
+  return result;
 }
 weak_alias (__mmap64, mmap64)
index 6e5ba94..0357ab4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -40,8 +40,8 @@ ENTRY(__mmap)
        cfi_adjust_cfa_offset (120)
        st      %r1,0(%r15)             /* store back chain */
 
-       /* Store parameters on stack, because old_mmap/mmap2
-        * take only one parameter: a pointer to the parameter area
+       /* Store parameters on stack, because mmap2
+        * takes only one parameter: a pointer to the parameter area
         */
        st      %r6,0x70(%r15)          /* Store 'fd'.      */
        st      %r5,0x6C(%r15)          /* Store 'flags'.   */
@@ -50,10 +50,6 @@ ENTRY(__mmap)
        st      %r2,0x60(%r15)          /* Store 'start'.   */
        l       %r1,216(%r15)           /* Load offset.     */
 
-#ifdef __ASSUME_MMAP2_SYSCALL
-       /* I don't think it is worthwhile trying to use mmap2 whenever 
-        * it is available.  Only use it when we are sure the syscall
-        * exists.  */
        tml     %r1,0x0fff              /* Offset page aligned ?  */
        lhi     %r2,-EINVAL
        jnz     1f                      /* No -> EINVAL.  */
@@ -61,11 +57,6 @@ ENTRY(__mmap)
        st      %r1,0x74(%r15)          /* Store page offset.  */
        la      %r2,0x60(%r15)          /* Load address of parameter list.  */
        svc     SYS_ify(mmap2)          /* Do the system call trap.  */
-#else  
-       st      %r1,0x74(%r15)          /* Store offset unmodified.  */
-       la      %r2,0x60(%r15)          /* Load address of parameter list.  */
-       svc     SYS_ify(mmap)           /* Do the system call trap.  */
-#endif
 
 1:     l       %r15,0(%r15)            /* Load back chain.  */
        cfi_adjust_cfa_offset (-120)
index ad6d254..8b4bd45 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -41,15 +41,14 @@ ENTRY(__mmap64)
        cfi_adjust_cfa_offset (120)
        st      %r1,0(%r15)             /* Store back chain.  */
 
-       /* Store parameters on stack, because mmap2 and old_mmap
-        * take only one parameter: a pointer to the parameter area.  */
+       /* Store parameters on stack, because mmap2
+        * takes only one parameter: a pointer to the parameter area.  */
        st      %r6,0x70(%r15)          /* Store 'fd'.      */
        st      %r5,0x6C(%r15)          /* Store 'flags'.   */
        st      %r4,0x68(%r15)          /* Store 'prot'.    */
        st      %r3,0x64(%r15)          /* Store 'length'.  */
        st      %r2,0x60(%r15)          /* Store 'start'.   */
 
-#ifdef __NR_mmap2
        lm      %r0,%r1,216(%r15)       /* Load 64 bit offset.  */
        tml     %r1,0x0fff              /* Offset page aligned ?  */
        jnz     2f                      /* No -> EINVAL.  */
@@ -61,11 +60,6 @@ ENTRY(__mmap64)
        la      %r2,0x60(%r15)          /* Load address of parameter list.  */
        svc     SYS_ify(mmap2)          /* Do the system call trap.  */
 
-#ifndef __ASSUME_MMAP2_SYSCALL
-       chi     %r2,-ENOSYS
-       je      1f
-#endif
-
        l       %r15,0(%r15)            /* Load back chain.  */
        cfi_adjust_cfa_offset (-120)
        lm      %r6,%r15,24(%r15)       /* Load registers.  */
@@ -78,31 +72,6 @@ ENTRY(__mmap64)
        /* Successful; return the syscall's value.  */
        br      %r14
 
-#endif
-
-#if !defined __ASSUME_MMAP2_SYSCALL || !defined __NR_mmap2
-1:     lm      %r0,%r1,216(%r15)       /* Load 64 bit offset.  */
-       st      %r1,0x74(%r15)          /* Store lower word of offset.  */
-       ltr     %r0,%r0                 /* Offset > 2^32 ?  */
-       jnz     2f
-       alr     %r1,%r3                 /* Add length to offset.  */
-       brc     3,2f                    /* Carry -> EINVAL.  */
-
-       la      %r2,0x60(%r15)          /* Load address of parameter list.  */
-       svc     SYS_ify(mmap)   /* Do the system call trap.  */
-
-       l       %r15,0(%r15)            /* Load back chain.  */
-       lm      %r6,%r15,24(%r15)       /* Load registers.  */
-
-       /* Check gpr 2 for error.  */
-       lhi     %r0,-4096
-       clr     %r2,%r0
-       jnl     SYSCALL_ERROR_LABEL
-
-       /* Successful; return the syscall's value.  */
-       br      %r14
-#endif
-
 2:     lhi     %r2,-EINVAL
        l       %r15,0(%r15)            /* Load back chain.  */
        lm      %r6,%r15,24(%r15)       /* Load registers.  */