diff --git a/ChangeLog b/ChangeLog index 2e2eb6d0a4..9205c82e29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,26 @@ 2016-12-28 Adhemerval Zanella + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Remove + oldshmctl. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (shmctl): Remove. + * sysdeps/unix/sysv/linux/arm/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/generic/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/hppa/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmctl): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmctl): + Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmctl): Likewise. + * sysdeps/unix/sysv/linux/alpha/shmctl.c: Remove file. + * sysdeps/unix/sysv/linux/arm/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/microblaze/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/shmctl.c: Use default + implementation. + * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Use shmctl syscall + if it is defined. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (shmat): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (shmat): Likewise. diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index 386b3fdd38..4bbe9bf850 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -17,9 +17,6 @@ sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \ osf_getitimer osf_setitimer osf_utimes \ osf_getrusage osf_wait4 -# Support old ipc control -sysdep_routines += oldshmctl - CFLAGS-ioperm.c = -Wa,-mev6 endif diff --git a/sysdeps/unix/sysv/linux/alpha/shmctl.c b/sysdeps/unix/sysv/linux/alpha/shmctl.c deleted file mode 100644 index f73ed6f246..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/shmctl.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 9948d2d176..bf9c8ad70c 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -1,6 +1,5 @@ # File name Caller Syscall name # args Strong name Weak names -oldshmctl EXTRA shmctl i:iip __old_shmctl shmctl@GLIBC_2.0 shmdt - shmdt i:s __shmdt shmdt shmget - shmget i:iii __shmget shmget diff --git a/sysdeps/unix/sysv/linux/arm/shmctl.c b/sysdeps/unix/sysv/linux/arm/shmctl.c deleted file mode 100644 index 23c4b8d0e1..0000000000 --- a/sysdeps/unix/sysv/linux/arm/shmctl.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1995-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , August 1995. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - - -int -__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) -{ - return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, buf); -} - -#include -versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2); diff --git a/sysdeps/unix/sysv/linux/generic/syscalls.list b/sysdeps/unix/sysv/linux/generic/syscalls.list index 0df73a9e2b..80244c4cfb 100644 --- a/sysdeps/unix/sysv/linux/generic/syscalls.list +++ b/sysdeps/unix/sysv/linux/generic/syscalls.list @@ -2,7 +2,6 @@ # SysV APIs shmget - shmget i:iii __shmget shmget -shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt # Socket APIs diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list index f757f026af..d755bfd02e 100644 --- a/sysdeps/unix/sysv/linux/hppa/syscalls.list +++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list @@ -1,7 +1,6 @@ # File name Caller Syscall name # args Strong name Weak names # semaphore and shm system calls -shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt shmget - shmget i:iii __shmget shmget diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list index b0a3a44391..90bd870dcf 100644 --- a/sysdeps/unix/sysv/linux/ia64/syscalls.list +++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list @@ -5,7 +5,6 @@ umount2 - umount 2 __umount2 umount2 getpriority - getpriority i:ii __getpriority getpriority # semaphore and shm system calls -shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt shmget - shmget i:iii __shmget shmget diff --git a/sysdeps/unix/sysv/linux/microblaze/shmctl.c b/sysdeps/unix/sysv/linux/microblaze/shmctl.c deleted file mode 100644 index f73ed6f246..0000000000 --- a/sysdeps/unix/sysv/linux/microblaze/shmctl.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c b/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c index ea0fa94d34..f835cf88db 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c @@ -15,18 +15,11 @@ License along with the GNU C Library. If not, see . */ -#include -#include -#include -#include - -int __shmctl (int shmid, int cmd, struct shmid_ds *buf); - -int -__shmctl (int shmid, int cmd, struct shmid_ds *buf) -{ - return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, buf); -} - #include -versioned_symbol (libc, __shmctl, shmctl, GLIBC_2_0); + +#undef SHLIB_COMPAT +#define SHLIB_COMPAT(a, b, c) 0 + +#define DEFAULT_VERSION GLIBC_2_0 + +#include <./sysdeps/unix/sysv/linux/shmctl.c> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list index 40ed7c5b91..4d478ce38c 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list @@ -1,6 +1,5 @@ # File name Caller Syscall name # args Strong name Weak names # semaphore and shm system calls -shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt shmget - shmget i:iii __shmget shmget diff --git a/sysdeps/unix/sysv/linux/shmctl.c b/sysdeps/unix/sysv/linux/shmctl.c index b2caf7543b..07725fedd1 100644 --- a/sysdeps/unix/sysv/linux/shmctl.c +++ b/sysdeps/unix/sysv/linux/shmctl.c @@ -16,18 +16,34 @@ License along with the GNU C Library; if not, see . */ -#include #include +#include #include - #include -#include -#include -#include #include +#include -#include +#ifndef DEFAULT_VERSION +# define DEFAULT_VERSION GLIBC_2_2 +#endif + + +/* Provide operations to control over shared memory segments. */ +int +__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) +{ +#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS + return INLINE_SYSCALL_CALL (shmctl, shmid, cmd | __IPC_64, buf); +#else + return INLINE_SYSCALL_CALL (ipc, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, + buf); +#endif +} +versioned_symbol (libc, __new_shmctl, shmctl, DEFAULT_VERSION); + + +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) struct __old_shmid_ds { struct __old_ipc_perm shm_perm; /* operation permission struct */ @@ -43,36 +59,15 @@ struct __old_shmid_ds struct vm_area_struct *__attaches; /* descriptors for attaches */ }; -struct __old_shminfo -{ - int shmmax; - int shmmin; - int shmmni; - int shmseg; - int shmall; -}; - -/* Provide operations to control over shared memory segments. */ -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) -int __old_shmctl (int, int, struct __old_shmid_ds *); -#endif -int __new_shmctl (int, int, struct shmid_ds *); - -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) int attribute_compat_text_section __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) { - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); +#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS + return INLINE_SYSCALL_CALL (shmctl, shmid, cmd, buf); +#else + return INLINE_SYSCALL_CALL (ipc, IPCOP_shmctl, shmid, cmd, 0, buf); +#endif } compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0); #endif - -int -__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) -{ - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, - buf); -} - -versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2); diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list index 8712bb83ed..18bd588b4c 100644 --- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list +++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list @@ -6,7 +6,6 @@ pread64 - pread64 Ci:ipii __libc_pread __libc_pread64 __pread64 pread64 __prea preadv64 - preadv Ci:ipii preadv64 preadv pwrite64 - pwrite64 Ci:ipii __libc_pwrite __libc_pwrite64 __pwrite64 pwrite64 __pwrite pwrite pwritev64 - pwritev Ci:ipii pwritev64 pwritev -shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt shmget - shmget i:iii __shmget shmget syscall_clock_gettime EXTRA clock_gettime Ei:ip __syscall_clock_gettime