mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-23 10:12:33 +03:00
Linux kernel have remove stat64 family from default syscall set, new implementations with statx is needed when __ARCH_WANT_STAT64 is not define. This patch add conditionals for relevant functions, using statx system call to get information and then copy to the return buf, ref to include/linux/fs.h from linux kernel. * sysdeps/unix/sysv/linux/Makefile: Add statx_cp.c. * sysdeps/unix/sysv/linux/fxstat64.c: Add conditionals for kernel without stat64 system call support. * sysdeps/unix/sysv/linux/fxstatat64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/statx_cp.c: New file. * sysdeps/unix/sysv/linux/statx_cp.c: Likewise. * sysdeps/unix/sysv/linux/statx_cp.h: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/statx_cp.c: Likewise.
This hierarchy supports Linux systems using the new asm-generic/unistd.h, which removes many familiar old syscalls. For example, to implement open(), newer Linux architectures require glibc to invoke the __NR_openat syscall with AT_FDCWD. This hierarchy provides all those implementations. It also provides support for 32-bit platforms using the 64-bit kernel syscall APIs, as the 32-bit ones are no longer provided. Note that newer ILP32 environments (x32 or AArch64:ILP32, for example) are converting to use more 64-bit types in kernel syscalls, so that aspect of this support is in more flux as of this writing.