aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/generic
AgeCommit message (Collapse)Author
2018-06-18Add MSG_STAT_ANY from Linux 4.17 to bits/msq.h.Joseph Myers
Linux 4.17 adds a MSG_STAT_ANY constant (ipcs command). This patch adds it to the relevant bits/msq.h headers. Tested for x86_64. * sysdeps/unix/sysv/linux/alpha/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): New macro. * sysdeps/unix/sysv/linux/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/generic/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/hppa/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/ia64/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/mips/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/s390/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise. * sysdeps/unix/sysv/linux/x86/bits/msq.h [__USE_MISC] (MSG_STAT_ANY): Likewise.
2018-05-02Deprecate ustat syscall interfaceAdhemerval Zanella
As for sysctl, ustat has been deprecated in favor of {f}statfs. Also some newer ports which uses generic interface builds a stub version that returns ENOSYS. This patch deprecates ustat interface by removing ustat.h related headers, adding a compatibility symbol, and avoiding new ports to build and provide the symbol. Checked on x86_64-linux-gnu and i686-linux-gnu. Also checked with a check-abi on all affected ABIs. * NEWS: Add ustat.h deprecation entry. * bits/ustat.h: Remove file. * misc/sys/ustat.h: Likewise. * misc/ustat.h: Likewise. * sysdeps/unix/sysv/linux/generic/ustat.c: Likewise. * misc/Makefile (headers): Remove ustat.h and sys/ustat.h. * misc/ustat.c (__ustat): Rename to __old_ustat and export only in compatibility mode. * sysdeps/unix/sysv/linux/ustat.c (__ustat): Likewise. * sysdeps/unix/sysv/linux/mips/ustat.c: Define DEV_TO_KDEV and use generic Linux implementation.
2018-04-19Consolidate Linux getdents{64} implementationAdhemerval Zanella
This patch consolidates Linux getdents{64} implementation on just the default sysdeps/unix/sysv/linux/getdents{64}{_r}.c ones. Although this symbol is used only internally, the non-LFS version still need to be build due the non-LFS getdirentries which requires its semantic. The non-LFS default implementation now uses the wordsize-32 as base which uses getdents64 syscall plus adjustment for overflow (it allows to use the same code for architectures that does not support non-LFS getdents syscall). It has two main differences to wordsize-32 one: - DIRENT_SET_DP_INO is added to handle alpha requirement to zero the padding. - alloca is removed by allocating a bounded temporary buffer (it increases stack usage by roughly 276 bytes). The default implementation handle the Linux requirements: * getdents is only built for _DIRENT_MATCHES_DIRENT64 being 0. * getdents64 is always built and aliased to getdents for ABIs that define _DIRENT_MATCHES_DIRENT64 to 1. * A compat symbol is added for getdents64 for ABI that used to export the old non-LFS version. Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu, sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/getdents.c: Add comments with alpha requirements. (_DIRENT_MATCHES_DIRENT64): Undef * sysdeps/unix/sysv/linux/alpha/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/arm/getdents64.c: Remove file. * sysdeps/unix/sysv/linux/generic/getdents.c: Likewise. * sysdeps/unix/sysv/linux/generic/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: Likewise. * sysdeps/unix/sysv/linux/getdents.c: Simplify implementation by use getdents64 syscalls as base. * sysdeps/unix/sysv/linux/getdents64.c: Likewise and add compatibility symbol if required. * sysdeps/unix/sysv/linux/hppa/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/getdents.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/getdents64.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c (__get_clockfreq_via_proc_openprom): Use __getdents64. * sysdeps/unix/sysv/linux/mips/mips64/getdents64.c: New file.
2018-03-26Unify umount function implementations (bug 16552).Joseph Myers
Linux kernel architectures have various arrangements for umount syscalls. There is a syscall that takes flags, and an older one that does not. Newer architectures have only the one taking flags, under the name umount2 (or under the name umount, in the ia64 case). Older architectures may have both, under the names umount2 and umount (or under the names umount and oldumount, in the alpha case). glibc then has several similar implementations of the umount function (no flags) in terms of either the __umount2 function, or the corresponding syscall, or in terms of the old syscall under either of its names. This patch simplifies the implementations in glibc by always using the __umount2 function to implement the umount function on all systems using the Linux kernel. The linux/generic implementation is moved to sysdeps/unix/sysv/linux (without any changes to code or comments) and all the other variants are removed. (This will have the effect of causing the new syscall to be used in some cases that previously used the old one, but as discussed for previous changes, such a change to the underlying syscalls used is OK.) There remain two variants of how the __umount2 function is implemented, either in umount2.S, or, for ia64, in syscalls.list. Tested with build-many-glibcs.py. [BZ #16552] * sysdeps/unix/sysv/linux/generic/umount.c: Move to .... * sysdeps/unix/sysv/linux/umount.c: ... here. * sysdeps/unix/sysv/linux/arm/umount.c: Remove file. * sysdeps/unix/sysv/linux/hppa/umount.c: Likewise. * sysdeps/unix/sysv/linux/ia64/umount.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/umount.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: Likewise. * sysdeps/unix/sysv/linux/umount.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/umount.c: Likewise.
2018-03-06Add missing start-of-file descriptive comment.Samuel Thibault
* io/futimens.c: Add missing start-of-file descriptive comment. * io/utime.c: Likewise. * misc/futimesat.c: Likewise. * misc/utimes.c: Likewise. * sysdeps/mach/hurd/futimesat.c: Likewise. * sysdeps/mach/hurd/utimes.c: Likewise. * sysdeps/posix/utime.c: Likewise. * sysdeps/posix/utimes.c: Likewise. * sysdeps/unix/sysv/linux/futimesat.c: Likewise. * sysdeps/unix/sysv/linux/generic/futimesat.c: Likewise. * sysdeps/unix/sysv/linux/generic/utimes.c: Likewise. * sysdeps/unix/sysv/linux/utimes.c: Likewise.
2018-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers
* All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
2017-09-04Hide __chmod and __mkdir [BZ #18822]H.J. Lu
Hide internal __chmod and __mkdir functions to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/sys/stat.h (__chmod): Add libc_hidden_proto. (__mkdir): Likewise. * io/chmod.c (__chmod): Add libc_hidden_def. * io/mkdir.c (__mkdir): Likewise. * sysdeps/mach/hurd/chmod.c (__chmod): Likewise. * sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise. * sysdeps/unix/sysv/linux/generic/chmod.c (__chmod): Likewise. * sysdeps/unix/sysv/linux/generic/mkdir.c (__mkdir): Likewise.
2017-06-30Consolidate Linux fcntl implementationAdhemerval Zanella
This patch consolidates the fcntl Linux syscall generation on sysdeps/unix/sysv/linux/fcntl.c. It basically removes all the architecture specific implementations. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/arm/fcntl.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/hppa/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/m68k/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/microblaze/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/sh/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/fcntl.c: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Refactor to use default implementation.
2017-05-18posix: Consolidate Linux pause syscallAdhemerval Zanella
This patch consolidates the pause Linux implementation on sysdeps/unix/sysv/linux/pause.c. If defined the pause syscall (__NR_pause) will be used, other ppoll with 0 arguments will be used instead. It has the small advantage of generic pause implementation with uses rt_sigprocmask plus rt_sigsuspend because it requires only one syscall and the pause is done atomically regarding signal handling (for instance, pause may not be interrupted if the signal arrives between the rt_sigprocmask and rt_sigsuspend syscall). Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, powerpc64le-linux-gnu, sparc64-linux-gnu, and sparcv9-linux-gnu. * sysdeps/unix/sysv/linux/generic/pause.c: Remove file. * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h [__arch64__] (__NR_pause): Undefine. * sysdeps/unix/sysv/linux/pause.c: New file. * sysdeps/unix/sysv/linux/syscalls.list: Remove pause from auto-generation list.
2017-05-11Consolidate Linux creat implementationAdhemerval Zanella
This patch consolidates the creat Linux syscall implementation on sysdeps/unix/sysv/linux/creat{64}.c. The changes are: 1. Remove creat{64} from auto-generation syscalls.list. 2. Add a new creat{64}.c implementation. For architectures that define __OFF_T_MATCHES_OFF64_T the default creat64 will create alias to required creat symbols. 3. Use __NR_creat where possible, otherwise use internal open{64} call with expected flags. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * io/Makefile (CFLAGS-creat.c): New rule. (CFLAGS-creat64.c): Likewise. * sysdeps/unix/sysv/linux/alpha/creat.c: Remove file. * sysdeps/unix/sysv/linux/generic/creat.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/creat64.c: Likewise. * sysdeps/unix/sysv/linux/creat.c: New file. * sysdeps/unix/sysv/linux/creat64.c: Likewise. * sysdeps/unix/sysv/linux/syscalls.list: Remove create from auto-generated list. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise.
2017-05-11Consolidate Linux open implementationAdhemerval Zanella
This patch consolidates the open Linux syscall implementation on sysdeps/unix/sysv/linux/open{64}.c. The changes are: 1. Remove open{64} from auto-generation syscalls.list. 2. Add a new open{64}.c implementation. For architectures that define __OFF_T_MATCHES_OFF64_T the default open64 will create alias to required open symbols. 3. Use __NR_openat as default syscall for open{64}. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/generic/open.c: Remove file. * sysdeps/unix/sysv/linux/generic/open64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/open64.c: Likewise. * sysdeps/unix/sysv/linux/open.c: New file. * sysdeps/unix/sysv/linux/open64.c (__libc_open64): Use O_LARGEFILE only for __OFF_T_MATCHES_OFF64_T and add alias to open if the case. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Remove open from auto-generated list.
2017-05-03Consolidate Linux epoll_wait syscallAdhemerval Zanella
This patch consolidates the epoll_wait Linux syscall generation on sysdeps/unix/sysv/linux/epoll_wait.c. The implementation tries to use __NR_epoll_wait if defined, otherwise calls epoll_pwait. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/epoll_wait.c: New file. * sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove file. * sysdeps/unix/sysv/linux/syscalls.list: Remove epoll_wait from auto-generation list.
2017-05-03Consolidate Linux select implementationAdhemerval Zanella
This patch consolidates the select Linux syscall implementation on sysdeps/unix/sysv/linux/select.c. The changes are: 1. Remove select from auto-generation syscalls.list on the architecture that uses __NR_select. 2. Remove generic implementation add a default one that handle all current cases (with the expection of alpha) The new default implementation will either use __NR_select if available of fallback to __NR_pselect6 otherwise. 3. Add a alpha outlier implementation which requires old compatibility symbols. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Add osf_select. * sysdeps/unix/sysv/linux/alpha/select.c: New file. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove select and osf_select from auto-generation list. * sysdeps/unix/sysv/linux/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/select.c: Remove file. * sysdeps/unix/sysv/linux/select.c: New file.
2017-05-03Consolidate Linux poll implementationAdhemerval Zanella
This patch consolidates the poll Linux syscall implementation on sysdeps/unix/sysv/linux/poll.c. It basically removes poll from auto-generation list and add a default implementation that either call __NR_poll directly (if the kernel headers defines it) or ppoll adjusting the timeout argument (as the generic implementation). Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/generic/poll.c: Remove file. * sysdeps/unix/sysv/linux/poll.c: New file. * sysdeps/unix/sysv/linux/syscalls.list: Remove poll from auto-generation list.
2017-04-12Consolidate Linux mmap implementation (BZ#21270)Adhemerval Zanella
This patch consolidates all Linux mmap implementations on default sysdeps/unix/sysv/linux/mmap{64}.c one. To accomodate all required architecture specific requeriments a new internal header is created (mmap_internal.h) where each architecture add its specific code requirements. Currently only x86_64 (to define MMAP_PREPARE to add MAP_32BITS), s390 (which have a different kernel ABI for mmap), m68k (which have variable minimum page sizes), and MIPS n32 (which zero extend the offset to handle negative one correctly) redefine the new header. The patch also fixes BZ#21270 where default mmap64 on architectures which uses mmap2 silent truncates large offsets value (larger than 1 << (page shift + 8 * sizeof (off_t)) or 1<<44 on architectures with 4096 bytes page size). The new consolidate implementation returns EINVAL as allowed by POSIX. It also adds a tests for on current tst-mmap-offset one. I have run a full make check on x86_64, x86_64-32, i686, aarch64, armhf, powerpc, powerpc64le, sparc64, and sparcv9 without any regressions. I also ran some basic tests (tst-mmap-offset) on sh4, m68k, and on qemu simulated MIPS32 and MIPS64. [BZ #21270] * posix/tst-mmap-offset.c (do_prepare): New function. (do_test): Rename to do_test_bz18877 and use FAIL_RET. (do_test_bz21270): New function. * sysdeps/unix/sysv/linux/aarch64/mmap.c: Remove file. * sysdeps/unix/sysv/linux/arm/mmap.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c: Likewise. * sysdeps/unix/sysv/linux/hppa/mmap.c: Likewise. * sysdeps/unix/sysv/linux/i386/mmap.c: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap64.c: Likewise. * sysdeps/unix/sysv/linux/microblaze/mmap.S: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/mmap.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/mmap.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/mmap.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/mmap64.c: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/mmap.c: Likewise. * sysdeps/unix/sysv/linux/mmap_internal.h: New file. * sysdeps/unix/sysv/linux/m68k/mmap_internal.h: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/mmap_internal.h: Likewise. * sysdeps/unix/sysv/linux/s390/mmap_internal.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/mmap_internal.h: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list: Remove mmap from auto-generation list. * sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mmap.c: New file. * sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Add check for invalid offsets and support for mmap2 syscall.
2017-03-09Consolidate Linux send implementationAdhemerval Zanella
This patch consolidates the send Linux syscall implementation on sysdeps/unix/sysv/linux/send{to}.c. The changes are: 1. Remove send from auto-generation syscalls.list on the architecture that uses __NR_send. 2. Define __NR_send for architectures that supports it. It was done instead of defining in default kernel-features.h because current Linux practice for new ports are to implement only __NR_sendto [1] and it will require adding new kernel-features for ports that do not require it (aarch64 for instance). 3. Remove __ASSUME_SENDTO_FOR_SEND_SYSCALL and decide to use __NR_sendto for send generation based on __ASSUME_SENDTO_SYSCALL. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/sysdep.h (HAVE_INTERNAL_SEND_SYMBOL): Define. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (HAVE_INTERNAL_SEND_SYMBOL): Undefine. * sysdeps/unix/sysv/linux/nios2/sysdep.h (HAVE_INTERNAL_SEND_SYMBOL): Likewise. * sysdeps/unix/sysv/linux/tile/sysdep.h (HAVE_INTERNAL_SEND_SYMBOL): Likewise. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_RECV_SYSCALL): Define. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/hppa/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/ia64/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Remove define. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove send from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewike. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/send.c: Simplify includes. (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Replace by __ASSUME_SENDTO_SYSCALL. * sysdeps/unix/sysv/linux/x86_64/send.c: Remove file. * sysdeps/unix/sysv/linux/mips/mips64/send.c: Likewise. * sysdeps/unix/sysv/linux/generic/send.c: Likewise.
2017-03-09Consolidate Linux sendto implementationAdhemerval Zanella
This patch consolidates the sendto Linux syscall implementation on sysdeps/unix/sysv/linux/sendto.c. The changes are: 1. Define __ASSUME_SENDTO_SYSCALL by default. 2. Undef it for architectures that do not support __NR_sendto. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove sendto from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Define by default. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Undef it is kernel does not support __NR_sendto. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Remove definition. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_SENDTO_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h: (__ASSUME_SENDTO_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sendto.c: Simplify includes.
2017-03-09Consolidate Linux recv implementationAdhemerval Zanella
This patch consolidates the recv Linux syscall implementation on sysdeps/unix/sysv/linux/recv.c. The changes are: 1. Remove recv from auto-generation syscalls.list on the architecture that uses __NR_recv. 2. Define __NR_recv for architectures that supports it. It was done instead of defining in default kernel-features.h because current Linux practice for new ports is to implement only __NR_recvfrom [1] and it will require adding new kernel-features for ports that do not require it (aarch64 for instance). 3. Remove __ASSUME_RECVFROM_FOR_RECV_SYSCALL and decide to use __NR_recvfrom for recv generation based on __ASSUME_RECVFROM_SYSCALL. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove recv from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_RECV_SYSCALL): New define. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/hppa/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/ia64/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_RECV_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Remove define. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Remove define. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Remove define. * sysdeps/unix/sysv/linux/generic/recv.c: Remove file. * sysdeps/unix/sysv/linux/mips/mips64/recv.c: Likewise. * sysdeps/unix/sysv/linux/x86_64/recv.c: Likewise. * sysdeps/unix/sysv/linux/recv.c: Simplify includes. (__libc_recv): Use __ASSUME_RECVFROM_SYSCALL instead of __ASSUME_RECVFROM_FOR_RECV_SYSCALL to issue recvfrom syscall. [1] include/asm-generic/unistd.h (__ARCH_WANT_SYSCALL_DEPRECATED)
2017-03-09Consolidate Linux recvfrom implementationAdhemerval Zanella
This patch consolidates the recvfrom Linux syscall implementation on sysdeps/unix/sysv/linux/recvfrom.c. The changes are: 1. Define __ASSUME_RECVFROM_SYSCALL by default 2. Undef it for architectures that do not support __NR_recvfrom. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove recvfrom from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Define by default. (__ASSUME_RECVFROM_SYSCALL): Undef it if kernel does not support __NR_recvfrom. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Remove definition. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_RECVFROM_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/recvfrom.c: Simplify includes.
2017-03-09Consolidate Linux connect implementationAdhemerval Zanella
This patch consolidates the connect Linux syscall implementation on sysdeps/unix/sysv/linux/accept.c. The changes are: 1. Remove connect from auto-generation syscalls.list on the architecture that uses __NR_connect. 2. Define __NR_connect as default (__ASSUME_CONNECT_SYSCALL) and undef for architectures that do not support it. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove connect from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/connect.c: Simplify include list. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_CONNECT_SYSCALL): Define. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_CONNECT_SYSCALL): Undef if kernel does not support it. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_CONNECT_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_CONNECT_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_CONNECT_SYSCALL): Likewise.
2017-03-09Consolidate Linux accept implementationAdhemerval Zanella
This patch consolidates the accept Linux syscall implementation on sysdeps/unix/sysv/linux/accept.c. The changes are: 1. Remove accept from auto-generation syscalls.list on the architecture that uses __NR_accept. 2. Define __NR_accept as default (__ASSUME_ACCEPT_SYSCALL) and undef for architectures that do not support it. 3. Remove __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL and decide to use __NR_accept4 for accept generation based on __ASSUME_ACCEPT4_SYSCALL. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/accept.c (__libc_accept): Replace __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL by __ASSUME_ACCEPT4_SYSCALL. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove accept from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): New define. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Define wheter kernel version supports. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Define. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine for 32 bits.
2017-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers
2016-12-28Use shmget syscall for linux implementationAdhemerval Zanella
this patch add a direct call to shmget syscall if it is supported by kernel features. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (shmget): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmget): Likewise. * sysdeps/unix/sysv/linux/shmget.c (shmget): Use shmget syscall if it is defined.
2016-12-28Use shmdt syscall for linux implementationAdhemerval Zanella
this patch add a direct call to shmdt syscall if it is supported by kernel features. hecked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (shmdt): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmdt): Likewise. * sysdeps/unix/sysv/linux/shmdt.c (shmdt): Use shmdt syscall if it is defined.
2016-12-28Consolidate Linux shmctl implementationAdhemerval Zanella
This patch consolidates the shmctl Linux implementation in only one default file, sysdeps/unix/sysv/linux/shmctl.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. The patch also simplify header inclusion and reorganize internal compat symbol to be built only if old ipc is defined. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * 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.
2016-12-28Use shmat syscall for Linux implementationAdhemerval Zanella
This patch add a direct call to shmat syscall if it is supported by kernel features. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * 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. * sysdeps/unix/sysv/linux/hppa/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmat): Likewise. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__NR_shmat): Define to __NR_osf_shmat. * sysdeps/unix/sysv/linux/shmat.c (shmat): Use shmat syscall if it is defined.
2016-12-28Consolidate Linux semtimedop implementationAdhemerval Zanella
This patch consolidates the semtimedop Linux implementation in only one default file, sysdeps/unix/sysv/linux/semtimedop.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semtimedop): Likewise. * sysdeps/unix/sysv/linux/m68k/semtimedop.S: Remove file. * sysdeps/unix/sysv/linux/s390/semtimedop.c: Reorganize headers and add a comment about s390 syscall difference from default one. * sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Use semtimedop syscall if it is defined.
2016-12-28Use semop syscall for Linux implementationAdhemerval Zanella
This patch add a direct call to semop syscall if it is supported by kernel headers. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (semop): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semop): Likewise. * sysdeps/unix/sysv/linux/semop.c (semop): Use semop syscall if it is defined.
2016-12-28Use semget syscall for Linux implementationAdhemerval Zanella
This patch add a direct call to semget syscall if it is supported by kernel features. hecked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (semget): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semget): Likewise. * sysdeps/unix/sysv/linux/semget.c (semget): Use semget syscall if it is defined.
2016-12-28Consolidate Linux semctl implementationAdhemerval Zanella
This patch consolidates the semctl Linux implementation in only one default file, sysdeps/unix/sysv/linux/semctl.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. The patch also simplify header inclusion and reorganize internal compat symbol to be built only if old ipc is defined. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Remove oldsemctl. * sysdeps/unix/sysv/linux/alpha/semctl.c: Remove file. * sysdeps/unix/sysv/linux/arm/semctl.c: Likewise. * sysdeps/unix/sysv/linux/microblaze/semctl.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/semctl.c: Use defaulf implementation. * sysdeps/unix/sysv/linux/semctl.c (__new_semctl): Use semctl syscall if it is defined. * sysdeps/unix/sysv/linux/generic/syscalls.list (semctl): Remove. * sysdeps/unix/sysv/linux/alpha/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semctl): Likewise.
2016-12-28Use msgget syscall for Linux implementationAdhemerval Zanella
This patch add a direct call to msgget syscall if it is supported by kernel features. hecked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgget): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgget): Likewise. * sysdeps/unix/sysv/linux/msgget.c (msgget): Use msgget syscall if define.
2016-12-28Use msgsnd syscall for Linux implementationAdhemerval Zanella
This patch add a direct call to msgsnd syscall if it is supported by kernel features. hecked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgsnd): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgsnd): Likewise. * sysdeps/unix/sysv/linux/msgsnd.c (__libc_msgsnd): Use msgsnd syscall if defined.
2016-12-28Consolidate Linux msgrcv implementationAdhemerval Zanella
This patch consolidates the msgrcv Linux implementation in only one default file, sysdeps/unix/sysv/linux/msgrcv.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgctl): Remove. * sysdeps/unix/sysv/linux/arm/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgctl): Likewise, * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/msgrcv.c (__libc_msgrcv): Use msgrcv syscall if defined. * sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c: Remove file.
2016-12-28Consolidate Linux msgctl implementationAdhemerval Zanella
This patch consolidates the msgctl Linux implementation in only one default file, sysdeps/unix/sysv/linux/msgctl.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. The patch also simplify header inclusion and reorganize internal compat symbol to be built only if old ipc is defined. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Remove oldmsgctl. * sysdeps/unix/sysv/linux/alpha/msgctl.c: Remove file. * sysdeps/unix/sysv/linux/arm/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/microblaze/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/syscalls.list (oldmsgctl): Remove. * sysdeps/unix/sysv/linux/generic/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgctl): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/msgctl.c: Use default implementation. * sysdeps/unix/sysv/linux/msgctl.c (__new_msgctl): Use msgctl syscall if defined.
2016-12-14Consolidate rename Linux implementationAdhemerval Zanella
This patch consolidates the Linux rename implementation on sysdeps/unix/sysv/linux/rename.c. Current code try to use __NR_rename if is defined and apply the same strategy for __NR_renameat and __NR_renameat2. Check on x86_64 and aarch64. * sysdeps/unix/sysv/linux/rename.c: New file. * sysdeps/unix/sysv/linux/generic/rename.c: Remove file.
2016-11-29Use XSTAT_IS_XSTAT64 in generic xstat functionsSteve Ellcey
* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: Do not define fxstat if XSTAT_IS_XSTAT64 is set to non-zero. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: Ditto for fxstatat. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: Ditto for lxstat. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: Ditto for xstat. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat64.c: New file. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat64.c: New file. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: Make __lxstat an alias of __lxstat64 if XSTAT_IS_XSTAT64 is set to non-zero. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: Ditto for __xstat.
2016-11-22Allow [f]statfs64 to alias [f]statfsSteve Ellcey
* sysdeps/unix/sysv/linux/fstatfs64.c: Hide prototypes for fstatfs and __fstatfs. Make them aliases of __fstatfs64 if STATFS_IS_STATFS64 is set to non-zero. * sysdeps/unix/sysv/linux/statfs64.c: Ditto for __statfs, statfs, and __statfs64. * sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: Do not define __fstatfs and fstatfs if STATFS_IS_STATFS64 is non-zero. * sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: Ditto for __statfs and statfs. * sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Set STATFS_IS_STATFS64 to 0. * sysdeps/unix/sysv/linux/generic/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: Ditto.
2016-11-21Always define XSTAT_IS_XSTAT64Steve Ellcey
* sysdeps/unix/sysv/linux/generic/kernel_stat.h: Set XSTAT_IS_XSTAT64 to 0 when in 32 bit mode. * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Set XSTAT_IS_XSTAT64 to 0. * sysdeps/unix/sysv/linux/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/fxstat.c: Replace #ifdef with #if on XSTAT_IS_XSTAT64 test. * sysdeps/unix/sysv/linux/fxstatat.c: Ditto. * sysdeps/unix/sysv/linux/generic/lxstat.c: Ditto. * sysdeps/unix/sysv/linux/generic/xstat.c: Ditto. * sysdeps/unix/sysv/linux/i386/fxstat.c: Ditto. * sysdeps/unix/sysv/linux/i386/fxstatat.c: Ditto. * sysdeps/unix/sysv/linux/i386/lxstat.c: Ditto. * sysdeps/unix/sysv/linux/i386/xstat.c: Ditto. * sysdeps/unix/sysv/linux/lxstat.c: Ditto. * sysdeps/unix/sysv/linux/mips/xstatconv.c: Ditto. * sysdeps/unix/sysv/linux/xstat.c: Ditto. * sysdeps/unix/sysv/linux/xstatconv.c: Ditto.
2016-11-17Consolidate Linux setrlimit and getrlimit implementationAdhemerval Zanella
This patch consolidates all Linux setrlimit and getrlimit on the default sysdeps/unix/sysv/linux/{set,get}rlimit{64}.c. It contains two exceptions: 1. mips32 and mips64n32 which requires a versioned symbol for GLIBC 2.19 and higher due a broken RLIM64_INFINITY constant. 2. sparc32 does not define a compat symbol for getrlimit64 for old 2GB limit. I am not sure if it is required, but a RLIM_INFINITY fix [1] change its definition without adding a compat symbol. This patch does not aim to address this possible issue, it follow current symbol export. The default implementation uses prlimit64 for 64 bit rlim_t ({set,get}rlimit64) and if it fails with ENOSYS it fall back to {get,set}rlimit syscall. This code path is only used on kernel older than 2.6.36 (basically now only x86) and I avoid to user __ASSUME_PRLIMTI64 to simplify the implementation. Once x86 moves to be on par with other architectures regarding minimum kernel supported we can get rid of using old syscalls and default path. A new type size define is added, __RLIM_T_MATCHES_RLIM64_T, where is set as default for 64 bits ports. This allows the default implementation to avoid {get,set}rlimit building and alias {get,set}rlimit64 to {get,set}rlimit. Checked on x86_64, i386, armhf, aarch64, and powerpc64le. I also did a sanity build plus check-abi on all other supported architectures. [1] Commit 9c96ff23858b0759e12ad69e3c4599931c90bee8 Adhemerval Zanella <adhemerval.zanella@linaro.org> Yury Norov <ynorov@caviumnetworks.com> * bits/typesizes.h (__RLIM_T_MATCHES_RLIM64_T): define. * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__RLIM_T_MATCHES_RLIM64_T): Likewise. * sysdeps/unix/sysv/linux/generic/bits/typesizes.h (__RLIM_T_MATCHES_RLIM64_T): Likewise. * sysdeps/unix/sysv/linux/s390/bits/typesizes.h [__s390x__] (__RLIM_T_MATCHES_RLIM64_T): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h [__arch64__ || __sparcv9] (__RLIM_T_MATCHES_RLIM64_T): Likewise. * sysdeps/unix/sysv/linux/x86/bits/typesizes.h [__86_64__] (__RLIM_T_MATCHES_RLIM64_T): Likewise. * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = resource] (sysdep_routines): Remove oldgetrlimit64. * sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) = resource] (sysdep_routines): Likewise. * sysdeps/unix/sysv/linux/m68k/Makefile [$(subdir) = resource] (sysdep_routines): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile [$(subdir) = resource] (sysdep_routines): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/Makefile [$(subdir) = resource] (sysdep_routines): Likewise. * sysdeps/unix/sysv/linux/arm/getrlimit64.c: Remove file. * sysdeps/unix/sysv/linux/arm/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/hppa/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/m68k/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/sh/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/setrlimit64.c: Likewise. * sysdeps/sysv/linux/generic/wordsize-32/syscalls.list: Remove setrlimit and getrlimit. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/getrlimit.c: New file. * sysdeps/unix/sysv/linux/sparc/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/setrlimit.c: Likewise. * sysdeps/unix/sysv/linux/getrlimit64.c (__getrlimit64): Handle __RLIM_T_MATCHES_RLIM64_T and add alias if defined. (__old_getrlimit64): Add compatibility symbol. * sysdeps/unix/sysv/linux/setrlimit64.c (__setrlimit): Likewise.
2016-11-10Consolidate Linux access implementationAdhemerval Zanella
This patch consolidates the Linux access implementation on sysdeps/unix/sysv/linux/access.c. Similar to auto-generation through syscalls.list, __NR_access is check and __NR_faccessat is used only for newer architectures (where __NR_access is not defined). Checked on x86_64. * sysdeps/unix/sysv/linux/access.c: New file. * sysdeps/unix/sysv/linux/generic/access.c: Remove file.
2016-11-09Consolidate Linux truncate implementationsAdhemerval Zanella
This patch consolidates all Linux truncate implementation on sysdeps/unix/sysv/linux/truncate{64}.c. It is based on {INTERNAL,INLINE}_SYSCALL patch [1] to simplify the syscall construction. General idea is to build ftruncate iff __OFF_T_MATCHES_OFF64_T is not defined, otherwise ftruncate64 will be build and ftruncate will be an alias. The fallocate will use old compat syscall and pass 32-bit off_t argument, while fallocate64 will handle the correct off64_t passing using __ALIGNMENT_ARG and SYSCALL_LL64 macros. Tested on x86_64, i386, aarch64, and armhf. * sysdeps/unix/sysv/linux/arm/truncate64.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c: Likewise. * sysdeps/sysv/linux/generic/wordsize-32/truncate64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/truncate64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/truncate64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/truncate64.c: Likewise. * sysdeps/unix/sysv/linux/truncate.c: New file. * sysdeps/unix/sysv/linux/truncate64.c (truncate64): Use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG and SYSCALL_LL64 macros. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (truncate): Remove. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (truncate): Likewise. [1] https://sourceware.org/ml/libc-alpha/2016-08/msg00646.html
2016-11-09Consolidate Linux ftruncate implementationsAdhemerval Zanella
THis patch consolidates all Linux ftruncate implementation on sysdeps/unix/sysv/linux/ftruncate{64}.c. It is based on {INTERNAL,INLINE}_SYSCALL patch [1] to simplify the syscall construction. General idea is to build ftruncate iff __OFF_T_MATCHES_OFF64_T is not defined, otherwise ftruncate64 will be build and ftruncate will be an alias. The fallocate will use old compat syscall and pass 32-bit off_t argument, while fallocate64 will handle the correct off64_t passing using __ALIGNMENT_ARG and SYSCALL_LL64 macros. Tested on x86_64, i386, aarch64, and armhf. * posix/tst-truncate-common.c: New file. * posix/tst-truncate.c: Use tst-truncate-common.c. * posix/tst-truncate64.c: Likewise and add LFS tests. * sysdeps/unix/sysv/linux/arm/ftruncate64.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/ftruncate64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/ftruncate64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c: Likewise. * sysdeps/unix/sysv/linux/ftruncate.c: New file. * sysdeps/unix/sysv/linux/ftruncate64.c (__ftruncate64): Use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG and SYSCALL_LL64 macros. [__OFF_T_MATCHES_OFF64_T] (ftruncate): Add alias. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (ftruncate): Remove. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (ftruncate): Likewise. [1] https://sourceware.org/ml/libc-alpha/2016-08/msg00646.html
2016-11-08Consolidate lseek/lseek64/llseek implementationsAdhemerval Zanella
This patch consolidates all Linux lseek/lseek64/llseek implementation in on on sysdeps/unix/sysv/linux/lseek{64}.c. It also removes the llseek file and instead consolidate the LFS lseek implementation on lseek64.c as for other LFS symbols implementations. The general idea is: - lseek: ABIs that not define __OFF_T_MATCHES_OFF64_T will preferable use __NR__llseek if kernel supports it, otherwise they will use __NR_lseek. ABIs that defines __OFF_T_MATCHES_OFF64_T won't produce any symbol. - lseek64: ABIs with __OFF_T_MATCHES_OFF64_T will preferable use __NR_lseek (since it will use 64-bit arguments without low/high splitting) and __NR__llseek if __NR_lseek is not defined (for some ILP32 ports). - llseek: files will be removed and symbols will be aliased ot lseek64. ABI without __OFF_T_MATCHES_OFF64_T and without __NR_llseek (basically MIPS64n32 so far) are covered by building lseek with off_t as expected and lseek64 using __NR_lseek (as expected for off64_t being passed using 64-bit registers). For this consolidation I mantained the x32 assembly specific implementation because to correctly fix this it would required both the x32 fix for {INLINE,INTERNAL}_SYSCALL [1] and a wrapper to correctly subscribe it to return 64 bits instead of default 32 bits (as for times). It could a future cleanup. It is based on my previous {INTERNAL,INLINE}_SYSCALL_CALL macro [2], although it is mainly for simplification. Tested on x86_64, i686, aarch64, armhf, and powerpc64le. * nptl/Makefile (libpthread-routines): Remove ptw-llseek and add ptw-lseek64. * sysdeps/unix/sysv/linux/Makefile (sysdeps_routines): Remove llseek. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c: Remove file. * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: Likewise. * sysdeps/unix/sysv/linux/llseek.c: Remove file. * sysdeps/unix/sysv/linux/lseek.c: New file. * sysdeps/unix/sysv/linux/lseek64.c: Add default Linux implementation. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: Remove lseek and __libc_lseek64 from auto-generation. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/lseek64.S: New file. [1] https://sourceware.org/ml/libc-alpha/2016-08/msg00443.html [2] https://sourceware.org/ml/libc-alpha/2016-08/msg00646.html
2016-10-07Consolidate posix_fadvise implementationsAdhemerval Zanella
This patch consolidates mostly of the Linux posix_fadvise{64} implementations on sysdeps/unix/sysv/linux/posix_fadvise{64}.c. It still keeps arch-specific files for: * S390-32: it uses a packed structure to pass all the arguments on syscall. It is the only supported port that implements __NR_fadvise64_64 in this way. * ARM: it does not implement __NR_fadvise64 (as other 32-bits ports), so posix_fadvise calls internal posix_fadvise64 symbol. * MIPS64 n64: it requires a different version number that other ports. The new macro SYSCALL_LL{64} is used to handle the offset argument and INTERNAL_SYSCALL_CALL to handle passing the correct number of expect arguments. The default Linux adds two new defines a port can use to control how __NR_fadvise64_64 passes the kernel arguments: * __ASSUME_FADVISE64_64_6ARG: the 'advise' argument is moved on second position. This is the case of powerpc32 and arm to avoid implement 7 argument syscall. * __ASSUME_FADVISE64_64_NO_ALIGN: for ABIs that defines __ASSUME_ALIGNED_REGISTER_PAIRS packs the offset without the leading '0'. This is the case of tile 32 bits. ARM also defines __NR_fadvise64_64 as __NR_arm_fadvise64_64 (which is also handled on arch kernel-feature.h). Tested on x86_64, x32, i686, armhf, and aarch64. * posix/Makefile (tests): Add tst-posix_fadvise and tst-posix_fadvise64. * posix/tst-posix_fadvise.c: New file. * posix/tst-posix_fadvise64.c: Likewise. * posix/tst-posix_fadvise-common.c: Likewise. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_FADVISE64_64_6ARG): Define. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h [!__powerpc64__] (__ASSUME_FADVISE64_64_6ARG): Add define. * sysdeps/unix/sysv/linux/arm/posix_fadvise64.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c (SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) [__posix_fadvise64_l64]: Alias to __posix_fadvise64_l32. (SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) [__posix_fadvise64_l32]: Add compat definition to posix_fadvise64. (SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) [__posix_fadvise64_l64]: Add versioned definition to posix_fadvise64. * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Build iff __OFF_T_MATCHES_OFF64_T is defined, use INTERNAL_SYSCALL_CALL, add __ASSUME_FADVISE64_64_6ARG/__ASSUME_FADVISE64_64_NO_ALIGN support. * sysdeps/unix/sysv/linux/posix_fadvise64.c (posix_fadvise64): Add __ASSUME_FADVISE64_64_NO_ALIGN support and use INTERNAL_SYSCALL_CALL.
2016-06-06Consolidate pwritev/pwritev64 implementationsAdhemerval Zanella
This patch consolidates all the pwritev{64} implementation for Linux in only one (sysdeps/unix/sysv/linux/pwritev{64}.c). It also removes the syscall from the auto-generation using assembly macros. It was based on previous pwrite/pwrite64 consolidation patch. The new macro SYSCALL_LL{64} is used to handle the offset argument and alias is created for __ASSUME_OFF_DIFF_OFF64 in case of pread64. Checked on x86_64, i386, aarch64, and powerpc64le. * misc/Makefile (CFLAGS-pwritev.c): New variable: add cancellation required flags. (CFLAGS-pwritev64.c): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/pwritev64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwritev.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwritev64.: Likwise. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (pwritev): Remove syscall from auto-generation. * sysdeps/unix/sysv/linux/pwritev.c: Rewrite implementation. [WORDSIZE == 64] (pwritev64): Remove macro. [!PWRITEV] (PWRITEV): Likewise. [!PWRITEV] (PWRITEV_REPLACEMENT): Likewise. [!PWRITEV] (PWRITE): Likewise. [!PWRITEV] (OFF_T): Likewise. [!__ASSUME_PWRITEV] (PWRITEV_REPLACEMENT): Likewise. (LO_HI_LONG): Remove macro. [__WORDSIZE != 64 || __ASSUME_OFF_DIFF_OFF64] (pwritev): Add function. * sysdeps/unix/sysv/linux/pwritev64.c: Rewrite implementation. (PWRITEV): Remove macro. (PWRITEV_REPLACEMENTE): Likewise. (PWRITE): Likewise. (OFF_T): Likewise. (pwritev64): New function. * nptl/tst-cancel4.c (tf_writev): Add test.
2016-06-06Consolidate preadv/preadv64 implementationAdhemerval Zanella
This patch consolidates all the preadv{64} implementation for Linux in only one (sysdeps/unix/sysv/linux/preadv{64}.c). It also removes the syscall from the auto-generation using assembly macros. It was based on previous pread/pread64 consolidation patch. The new macro SYSCALL_LL{64} is used to handle the offset argument and alias is created for __ASSUME_OFF_DIFF_OFF64 in case of pread64. Checked on x86_64, i386, aarch64, and powerpc64le. * misc/Makefile (CFLAGS-preadv.c): New variable: add cancellation required flags. (CFLAGS-preadv64.c): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/preadv64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/preadv.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/preadv64.: Likwise. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (preadv): Remove syscall from auto-generation. * sysdeps/unix/sysv/linux/preadv.c: Rewrite implementation. [WORDSIZE == 64] (preadv64): Remove macro. [!PREADV] (PREADV): Likewise. [!PREADV] (PREADV_REPLACEMENT): Likewise. [!PREADV] (PREAD): Likewise. [!PREADV] (OFF_T): Likewise. [!__ASSUME_PREADV] (PREADV_REPLACEMENT): Likewise. (LO_HI_LONG): Remove macro. [__WORDSIZE != 64 || __ASSUME_OFF_DIFF_OFF64] (preadv): Add function. * sysdeps/unix/sysv/linux/preadv64.c: Rewrite implementation. (PREADV): Remove macro. (PREADV_REPLACEMENTE): Likewise. (PREAD): Likewise. (OFF_T): Likewise. (preadv64): New function. * nptl/tst-cancel4.c (tf_preadv): Add test.
2016-05-25Adjust kernel-features.h defaults for recvmsg and sendmsgAdhemerval Zanella
This patch removes the auto-generation for recvmsg and sendmsg syscall and adjust the kernel-features.h for all architectures supported on Linux. This patch follows the idea of 'Adjust kernel-features.h defaults for socket syscalls.' (35ade9f11b9007ee9683529f2d33698ff35255c8) by define __ASSUME_SENDMSG_SYSCALL and __ASSUME_RECVMSG_SYSCALL as supported by default and undefine it for the architecture that do not support it directly. The main rationale is to make is easier add code wrapper over the syscall to fix BZ#16919 (recvmsg standard compliance). Tested on x86_64, i686, aarch64, armhf, and powerpc64le. * sysdeps/unix/sysv/linux/alpha/syscalls.list (recvmsg): Remove from auto-generation. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/arm/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/generic/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/mips/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (recvmsg): Likewise. (sendmsg): Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL): Remove. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_SENDMSG_SYSCALL): Undefine. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SENDMSG_SYSCALL): Define. (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/m68k/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL): Remove. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_SENDMSG_SYSCALL): Undefine. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL): Remove. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_SENDMSG_SYSCALL): Undefine. [__LINUX_KERNEL_VERSION < 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_SENDMSG_SYSCALL): Undefine. (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_SENDMSG_SYSCALL): Likewise. (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_SENDMSG_SYSCALL): Likewise. (__ASSUME_RECVMSG_SYSCALL): Likewise.
2016-04-11Consolidate pwrite/pwrite64 implementationsAdhemerval Zanella
This patch consolidates all the pwrite/pwrite64 implementation for Linux in only one (sysdeps/unix/sysv/linux/pwrite{64}.c). It also removes the syscall from the auto-generation using assembly macros. For pwrite{64} offset argument placement the new SYSCALL_LL{64} macro is used. For pwrite ports that do not define __NR_pwrite will use __NR_pwrite64 and for pwrite64 ports that dot define __NR_pwrite64 will use __NR_pwrite for the syscall. Checked on x86_64, x32, i386, aarch64, and ppc64le. * sysdeps/unix/sysv/linux/arm/pwrite.c: Remove file. * sysdeps/unix/sysv/linux/arm/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (prite): Remove syscalls generation. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h [__NR_pwrite64] (__NR_write): Remove define. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h [__NR_pwrite64] (__NR_write): Remove define. * sysdeps/unix/sysv/linux/pwrite.c [__NR_pwrite64] (__NR_pwrite): Remove define. (__libc_pwrite): Use SYSCALL_LL macro on offset argument. * sysdeps/unix/sysv/linux/pwrite64.c [__NR_pwrite64] (__NR_pwrite): Remove define. (__libc_pwrite64): Use SYSCALL_LL64 macro on offset argument. * sysdeps/unix/sysv/linux/sh/pwrite.c: Rewrite using default Linux implementation as base. * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
2016-04-11Consolidate pread/pread64 implementationsAdhemerval Zanella
This patch consolidates all the pread/pread64 implementation for Linux in only one (sysdeps/unix/sysv/linux/pread.c). It also removes the syscall from the auto-generation using assembly macros. For pread{64} offset argument placement the new SYSCALL_LL{64} macro is used. For pread ports that do not define __NR_pread will use __NR_pread64 and for pread64 ports that dot define __NR_pread64 will use __NR_pread for the syscall. Checked on x86_64, x32, i386, aarch64, and ppc64le. * sysdeps/unix/sysv/linux/arm/pread.c: Remove file. * sysdeps/unix/sysv/linux/arm/pread64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c: Likewise, * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pread64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (pread): Remove syscall generation. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h [__NR_pread64] (__NR_pread): Remove define. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: [__NR_pread64] (__NR_pread): Likewise. * sysdeps/unix/sysv/linux/pread.c [__NR_pread64] (__NR_pread): Remove define. (__libc_pread): Use SYSCALL_LL macro on offset argument. * sysdeps/unix/sysv/linux/pread64.c [__NR_pread64] (__NR_pread): Remove define. (__libc_pread64): Use SYSCALL_LL64 macro on offset argument. * sysdeps/unix/sysv/linux/sh/pread.c: Rewrite using default Linux implementation as base. * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
2016-04-11Consolidate off_t/off64_t syscall argument passingAdhemerval Zanella
This patch add three new macros (SYSCALL_LL, SYSCALL_LL64, and __ASSUME_WORDSIZE64_ILP32) to use along with off_t and off64_t argument syscalls. The rationale for this change is: 1. Remove multiple implementations for the same syscall for different architectures (for instance, pread have 6 different implementations). 2. Also remove the requirement to use syscall wrappers for cancellable entrypoints. The macro usage should be used along __ALIGNMENT_ARG to follow ABI constrains for architecture where it applies. For instance, pread can be rewritten as: return SYSCALL_CANCEL (pread, fd, buf, count, __ALIGNMENT_ARG SYSCALL_LL (offset)); Another macro, SYSCALL_LL64, is provided for off64_t. The macro __ASSUME_WORDSIZE64_ILP32 is used by the ABI to define is uses 64-bit register even if ABI is ILP32 (for instance x32 and mips64-n32). The changes itself are not currently used in any implementation, so no code change is expected. * sysdeps/unix/sysv/linux/generic/sysdep.h (__ALIGNMENT_ARG): Move definition. (__ALIGNMENT_COUNT): Likewise. * sysdeps/unix/sysv/linux/sysdep.h (__ALIGNMENT_ARG): To here. (__ALIGNMENT_COUNT): Likewise. (SYSCALL_LL): New define. (SYSCALL_LL64): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h: [_MIPS_SIM == _ABIO32] (__ASSUME_WORDSIZE64_ILP32): Define. * sysdeps/unix/sysv/linux/x86_64/kernel-features.h: [ILP32] (__ASUME_WORDSIZE64_ILP32): Likewise.