[PATCH] linux: Define STAT64_IS_KERNEL_STAT64 by default
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Nov 22 13:00:31 GMT 2021
On 20/11/2021 18:09, Stafford Horne via Libc-alpha wrote:
> In commit 36260d5035 ("linux: Set default kernel_stat.h to LFS") the
> default for STAT64_IS_KERNEL_STAT64 was removed. This patch adds it
> back.
>
> For architectures that want to used the default kernel_stat.h and do not
> have __NR_newfstatat, STAT64_IS_KERNEL_STAT64 needs to be defined. Set
> the default as 1 as modern port's stat64 struct should match the kernel
> stat64 layout.
>
> I tested this on the OpenRISC port and it seems to work fine. Currently,
> all archs that use the default kernel_stat.h define __NR_newfstatat so
> they will not use the STAT64_IS_KERNEL_STAT64 macro. However, arc seems
> to be an outlier it uses the default kernel_stat.h, but does not define
> __NR_newfstatat or __NR_fstatat64 I am not clear how arc works here.
arc and usually newer 32-bit ports will only use __NR_statx:
138 #if (__WORDSIZE == 32 \
139 && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)) \
140 || defined STAT_HAS_TIME32
141 # define FSTATAT_USE_STATX 1
142 #else
143 # define FSTATAT_USE_STATX 0
144 #endif
The patch looks ok, but it seems strange that ork1 requires it since it
setting minimum required kernel to 5.10. I would expect that __ASSUME_STATX
would be defined and only fstatat64_time64_statx would be used.
> ---
> sysdeps/unix/sysv/linux/kernel_stat.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/sysdeps/unix/sysv/linux/kernel_stat.h b/sysdeps/unix/sysv/linux/kernel_stat.h
> index 6c1b175cb4..b8c376f41e 100644
> --- a/sysdeps/unix/sysv/linux/kernel_stat.h
> +++ b/sysdeps/unix/sysv/linux/kernel_stat.h
> @@ -20,3 +20,4 @@
> #define XSTAT_IS_XSTAT64 1
> #define STATFS_IS_STATFS64 __STATFS_MATCHES_STATFS64
> #define STAT_IS_KERNEL_STAT 1
> +#define STAT64_IS_KERNEL_STAT64 1
>
More information about the Libc-alpha
mailing list