[10/10] linux: Remove stat-check.c
Commit Message
The check is moved to LFS fstatat implementation (since it is the
code that actually implements the syscall).
---
sysdeps/unix/sysv/linux/fstatat64.c | 12 ++++++++
sysdeps/unix/sysv/linux/generic/Makefile | 2 +-
sysdeps/unix/sysv/linux/generic/stat-check.c | 29 --------------------
3 files changed, 13 insertions(+), 30 deletions(-)
delete mode 100644 sysdeps/unix/sysv/linux/generic/stat-check.c
Comments
On 2/8/21 4:49 PM, Adhemerval Zanella via Libc-alpha wrote:
> The check is moved to LFS fstatat implementation (since it is the
> code that actually implements the syscall).
LGTM.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> ---
> sysdeps/unix/sysv/linux/fstatat64.c | 12 ++++++++
> sysdeps/unix/sysv/linux/generic/Makefile | 2 +-
> sysdeps/unix/sysv/linux/generic/stat-check.c | 29 --------------------
> 3 files changed, 13 insertions(+), 30 deletions(-)
> delete mode 100644 sysdeps/unix/sysv/linux/generic/stat-check.c
>
> diff --git a/sysdeps/unix/sysv/linux/fstatat64.c b/sysdeps/unix/sysv/linux/fstatat64.c
> index ab41f19e94..a609b4d3ff 100644
> --- a/sysdeps/unix/sysv/linux/fstatat64.c
> +++ b/sysdeps/unix/sysv/linux/fstatat64.c
> @@ -28,6 +28,18 @@
> #include <kstat_cp.h>
> #include <stat_t64_cp.h>
>
> +#if __TIMESIZE == 64 \
> + && (__WORDSIZE == 32 \
> + && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32))
> +/* Sanity check to avoid newer 32-bit ABI to support non-LFS calls. */
> +_Static_assert (sizeof (__off_t) == sizeof (__off64_t),
> + "__blkcnt_t and __blkcnt64_t must match");
> +_Static_assert (sizeof (__ino_t) == sizeof (__ino64_t),
> + "__blkcnt_t and __blkcnt64_t must match");
> +_Static_assert (sizeof (__blkcnt_t) == sizeof (__blkcnt64_t),
> + "__blkcnt_t and __blkcnt64_t must match");
> +#endif
> +
> int
> __fstatat64_time64 (int fd, const char *file, struct __stat64_t64 *buf,
> int flag)
> diff --git a/sysdeps/unix/sysv/linux/generic/Makefile b/sysdeps/unix/sysv/linux/generic/Makefile
> index 124f83a0ab..7e27e79772 100644
> --- a/sysdeps/unix/sysv/linux/generic/Makefile
> +++ b/sysdeps/unix/sysv/linux/generic/Makefile
> @@ -1,3 +1,3 @@
> ifeq ($(subdir),misc)
> -sysdep_routines += epoll_create inotify_init stat-check
> +sysdep_routines += epoll_create inotify_init
> endif
> diff --git a/sysdeps/unix/sysv/linux/generic/stat-check.c b/sysdeps/unix/sysv/linux/generic/stat-check.c
> deleted file mode 100644
> index e09264dd3a..0000000000
> --- a/sysdeps/unix/sysv/linux/generic/stat-check.c
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/* Static assert for __blkcnt64_t when __INO_T_MATCHES_INO64_T is defined.
> - Copyright (C) 2019-2021 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
> - 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
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <sys/stat.h>
> -#include <bits/typesizes.h>
> -
> -/* This is due to the layout code in bits/stat.h and the overflow handling in
> - wordsize-32/overflow.h, requiring either all or none of the three types
> - concerned to have padding. */
> -
> -#if defined __INO_T_MATCHES_INO64_T
> -_Static_assert (sizeof (__blkcnt_t) == sizeof (__blkcnt64_t),
> - "__blkcnt_t and __blkcnt64_t must match");
> -#endif
>
@@ -28,6 +28,18 @@
#include <kstat_cp.h>
#include <stat_t64_cp.h>
+#if __TIMESIZE == 64 \
+ && (__WORDSIZE == 32 \
+ && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32))
+/* Sanity check to avoid newer 32-bit ABI to support non-LFS calls. */
+_Static_assert (sizeof (__off_t) == sizeof (__off64_t),
+ "__blkcnt_t and __blkcnt64_t must match");
+_Static_assert (sizeof (__ino_t) == sizeof (__ino64_t),
+ "__blkcnt_t and __blkcnt64_t must match");
+_Static_assert (sizeof (__blkcnt_t) == sizeof (__blkcnt64_t),
+ "__blkcnt_t and __blkcnt64_t must match");
+#endif
+
int
__fstatat64_time64 (int fd, const char *file, struct __stat64_t64 *buf,
int flag)
@@ -1,3 +1,3 @@
ifeq ($(subdir),misc)
-sysdep_routines += epoll_create inotify_init stat-check
+sysdep_routines += epoll_create inotify_init
endif
deleted file mode 100644
@@ -1,29 +0,0 @@
-/* Static assert for __blkcnt64_t when __INO_T_MATCHES_INO64_T is defined.
- Copyright (C) 2019-2021 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
- 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
- <https://www.gnu.org/licenses/>. */
-
-#include <sys/stat.h>
-#include <bits/typesizes.h>
-
-/* This is due to the layout code in bits/stat.h and the overflow handling in
- wordsize-32/overflow.h, requiring either all or none of the three types
- concerned to have padding. */
-
-#if defined __INO_T_MATCHES_INO64_T
-_Static_assert (sizeof (__blkcnt_t) == sizeof (__blkcnt64_t),
- "__blkcnt_t and __blkcnt64_t must match");
-#endif