mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 06:20:06 +00:00
Remove __ASSUME_MMAP2_SYSCALL.
This commit is contained in:
parent
bc5bc0e510
commit
348363b2c3
22
ChangeLog
22
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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -25,10 +25,6 @@
|
||||
|
||||
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
|
||||
|
@ -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))
|
||||
|
||||
|
@ -40,20 +40,14 @@
|
||||
/* 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
|
||||
|
||||
@ -86,12 +79,6 @@
|
||||
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
|
||||
|
||||
|
@ -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.
|
||||
|
||||
@ -26,76 +26,42 @@
|
||||
|
||||
#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
|
||||
#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))
|
||||
{
|
||||
__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)
|
||||
|
@ -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)
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user