Remove __ASSUME_FADVISE64_64_SYSCALL.

This commit is contained in:
Joseph Myers 2012-08-21 21:07:22 +00:00
parent 14a50c9d23
commit 0e1d99119e
10 changed files with 50 additions and 152 deletions

View File

@ -1,3 +1,36 @@
2012-08-21 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_FADVISE64_64_SYSCALL): Remove.
* sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Do not include
<kernel-features.h>.
[__NR_fadvise64_64]: Make code unconditional.
[!__ASSUME_FADVISE64_64_SYSCALL]: Remove conditional code.
[__NR_fadvise64 && (!__ASSUME_FADVISE64_64_SYSCALL ||
!__NR_fadvise64_64)]: Likewise.
[!(__NR_fadvise64 && (!__ASSUME_FADVISE64_64_SYSCALL ||
!__NR_fadvise64_64))]: Likewise.
[__NR_fadvise64]: Make code unconditional.
[!__NR_fadvise64]: Remove conditional code.
* sysdeps/unix/sysv/linux/posix_fadvise64.c: Do not include
<kernel-features.h>.
(__posix_fadvise64_l64) [__NR_fadvise64_64]: Make code
unconditional.
(_posix_fadvise64_l64) [!__ASSUME_FADVISE64_64_SYSCALL]: Remove
conditional code.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: Do
not include <kernel-features.h>.
(__posix_fadvise64_l64) [__NR_fadvise64_64]: Make code
unconditional.
(_posix_fadvise64_l64) [!__ASSUME_FADVISE64_64_SYSCALL]: Remove
conditional code.
* sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: Do not
include <kernel-features.h>.
(__posix_fadvise64_l64) [__NR_fadvise64_64]: Make code
unconditional.
(_posix_fadvise64_l64) [!__ASSUME_FADVISE64_64_SYSCALL]: Remove
conditional code.
2012-08-21 Will Schmidt <will_schmidt@vnet.ibm.com>
* sysdeps/powerpc/powerpc64/power7/memchr.S: Unrolled short loop and

View File

@ -1,3 +1,8 @@
2012-08-21 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
(__ASSUME_FADVISE64_64_SYSCALL): Remove.
2012-08-20 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/m68k/kernel-features.h

View File

@ -1,3 +1,8 @@
2012-08-21 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/tile/kernel-features.h
(__ASSUME_FADVISE64_64_SYSCALL): Remove.
2012-08-20 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/tile/kernel-features.h

View File

@ -22,7 +22,6 @@
/* Many syscalls were added in 2.6.10 for m68k. */
#define __ASSUME_UTIMES 1
#define __ASSUME_FADVISE64_64_SYSCALL 1
#include_next <kernel-features.h>

View File

@ -20,7 +20,6 @@
/* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */
#define __ASSUME_STAT64_SYSCALL 1
#define __ASSUME_UTIMES 1
#define __ASSUME_FADVISE64_64_SYSCALL 1
#define __ASSUME_O_CLOEXEC 1
#define __ASSUME_SOCK_CLOEXEC 1
#define __ASSUME_IN_NONBLOCK 1

View File

@ -1,5 +1,4 @@
/* Copyright (C) 1995-2000,2002,2003,2004,2005,2006
Free Software Foundation, Inc.
/* Copyright (C) 1995-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
@ -20,8 +19,6 @@
#include <bp-sym.h>
#include <bp-asm.h>
#include <kernel-features.h>
#define EINVAL 22
#define ENOSYS 38
#define EOVERFLOW 75
@ -38,8 +35,6 @@
.text
ENTRY (BP_SYM (__posix_fadvise64_l64))
#ifdef __NR_fadvise64_64
/* Save registers. */
pushl %ebp
cfi_adjust_cfa_offset (4)
@ -78,11 +73,6 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
cfi_adjust_cfa_offset (-4)
cfi_restore (ebp)
#ifndef __ASSUME_FADVISE64_64_SYSCALL
cmpl $-ENOSYS, %eax
je 1f
#endif
/* The function returns zero, or the error number. So all we
have to do is negate the value passed back from the kernel. */
/* If 0 > %eax > -4096 there was an error. */
@ -90,72 +80,15 @@ ENTRY (BP_SYM (__posix_fadvise64_l64))
/* Successful; return the syscall's value. */
ret
#endif
#if defined __NR_fadvise64 \
&& (!defined __ASSUME_FADVISE64_64_SYSCALL || !defined __NR_fadvise64_64)
1: /* Save registers. */
pushl %ebx
cfi_adjust_cfa_offset (4)
pushl %esi
cfi_adjust_cfa_offset (4)
pushl %edi
cfi_adjust_cfa_offset (4)
/* Overflow check. */
cmpl $0, LENHI(%esp)
movl $-EOVERFLOW, %eax
jne L(overflow)
movl FD(%esp), %ebx
cfi_rel_offset (ebx, 8)
movl OFFLO(%esp), %ecx
movl OFFHI(%esp), %edx
movl LENLO(%esp), %esi
cfi_rel_offset (esi, 4)
movl FLAGS(%esp), %edi
cfi_rel_offset (edi, 0)
movl $SYS_ify(fadvise64), %eax
ENTER_KERNEL
/* Restore registers. */
L(overflow):
popl %edi
cfi_adjust_cfa_offset (-4)
cfi_restore (edi)
popl %esi
cfi_adjust_cfa_offset (-4)
cfi_restore (esi)
popl %ebx
cfi_adjust_cfa_offset (-4)
cfi_restore (ebx)
/* If 0 > %eax > -4096 there was an error. */
negl %eax
/* Successful; return the syscall's value. */
ret
#else
movl $ENOSYS, %eax
ret
#endif
END (BP_SYM (__posix_fadvise64_l64))
#ifdef __NR_fadvise64
.section .text.compat, "ax"
ENTRY (__posix_fadvise64_l32)
DO_CALL (fadvise64, 5)
negl %eax
ret
PSEUDO_END_ERRVAL (__posix_fadvise64_l32)
#else
ENTRY (BP_SYM (__posix_fadvise64_l32))
movl $ENOSYS, %eax
ret
END (BP_SYM (__posix_fadvise64_l32))
#endif
default_symbol_version (__posix_fadvise64_l64, posix_fadvise64, GLIBC_2.3.3)
symbol_version (__posix_fadvise64_l32, posix_fadvise64, GLIBC_2.2)

View File

@ -98,14 +98,6 @@
# define __ASSUME_UTIMES 1
#endif
/* The fixed version of the posix_fadvise64 syscall appeared in
2.6.0-test3. At least for x86 and sparc. Powerpc support appeared
in 2.6.2, but for 32-bit userspace only. */
#if (defined __i386__ || defined __sparc__ \
|| (defined __powerpc__ && !defined __powerpc64__))
# define __ASSUME_FADVISE64_64_SYSCALL 1
#endif
/* On sparc64 stat64/lstat64/fstat64 syscalls were introduced in 2.6.12. */
#if defined __sparc__ && defined __arch64__
# define __ASSUME_STAT64_SYSCALL 1

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004 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
@ -18,7 +18,6 @@
#include <errno.h>
#include <fcntl.h>
#include <sysdep.h>
#include <kernel-features.h>
int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
@ -29,7 +28,6 @@ int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
int
__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
{
#ifdef __NR_fadvise64_64
INTERNAL_SYSCALL_DECL (err);
int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
__LONG_LONG_PAIR ((long) (offset >> 32),
@ -39,28 +37,7 @@ __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
advise);
if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
return 0;
# ifndef __ASSUME_FADVISE64_64_SYSCALL
if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
# endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
#endif
#ifndef __ASSUME_FADVISE64_64_SYSCALL
# ifdef __NR_fadvise64
if (len != (off_t) len)
return EOVERFLOW;
INTERNAL_SYSCALL_DECL (err2);
int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
__LONG_LONG_PAIR ((long) (offset >> 32),
(long) offset),
(off_t) len, advise);
if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
return 0;
return INTERNAL_SYSCALL_ERRNO (ret2, err2);
# else
return ENOSYS;
# endif
#endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
}
#include <shlib-compat.h>

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004 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
@ -18,7 +18,6 @@
#include <errno.h>
#include <fcntl.h>
#include <sysdep.h>
#include <kernel-features.h>
int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
@ -29,34 +28,13 @@ int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
int
__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
{
#ifdef __NR_fadvise64_64
INTERNAL_SYSCALL_DECL (err);
int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
__LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
__LONG_LONG_PAIR ((long)(len >> 32), (long)len));
if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
return 0;
# ifndef __ASSUME_FADVISE64_64_SYSCALL
if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
# endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
#endif
#ifndef __ASSUME_FADVISE64_64_SYSCALL
# ifdef __NR_fadvise64
if (len != (off_t) len)
return EOVERFLOW;
INTERNAL_SYSCALL_DECL (err2);
int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 6, fd, 0,
__LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
(off_t) len, advise);
if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
return 0;
return INTERNAL_SYSCALL_ERRNO (ret2, err2);
# else
return ENOSYS;
# endif
#endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
}
#include <shlib-compat.h>

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004 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
@ -18,7 +18,6 @@
#include <errno.h>
#include <fcntl.h>
#include <sysdep.h>
#include <kernel-features.h>
int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
@ -37,7 +36,6 @@ struct fadvise64_64_layout
int
__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
{
#ifdef __NR_fadvise64_64
struct fadvise64_64_layout parameters;
INTERNAL_SYSCALL_DECL (err);
@ -48,28 +46,7 @@ __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
int ret = INTERNAL_SYSCALL (fadvise64_64, err, 1, &parameters);
if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
return 0;
# ifndef __ASSUME_FADVISE64_64_SYSCALL
if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
# endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
#endif
#ifndef __ASSUME_FADVISE64_64_SYSCALL
# ifdef __NR_fadvise64
if (len != (off_t) len)
return EOVERFLOW;
INTERNAL_SYSCALL_DECL (err2);
int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
__LONG_LONG_PAIR ((long) (offset >> 32),
(long) offset),
(off_t) len, advise);
if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
return 0;
return INTERNAL_SYSCALL_ERRNO (ret2, err2);
# else
return ENOSYS;
# endif
#endif
return INTERNAL_SYSCALL_ERRNO (ret, err);
}
#include <shlib-compat.h>