[11/16] linux: Move the struct stat{64} to struct_stat.h
Commit Message
The common definitions are moved to a Linux generic stat.h while
the struct stat{64} definition are moved to a arch-specific
struct_stat.h header.
Checked with a build for all affected Linux ABIs. I checked also
on x86_64-linux-gnu and i686-linux-gnu.
---
sysdeps/unix/sysv/linux/Makefile | 3 +-
.../alpha/bits/{stat.h => struct_stat.h} | 43 +-----
sysdeps/unix/sysv/linux/bits/stat.h | 101 +-------------
sysdeps/unix/sysv/linux/bits/struct_stat.h | 131 ++++++++++++++++++
.../generic/bits/{stat.h => struct_stat.h} | 45 +-----
.../linux/ia64/bits/{stat.h => struct_stat.h} | 45 +-----
.../linux/m68k/bits/{stat.h => struct_stat.h} | 44 +-----
.../microblaze/bits/{stat.h => struct_stat.h} | 53 ++-----
.../linux/mips/bits/{stat.h => struct_stat.h} | 45 +-----
.../powerpc/bits/{stat.h => struct_stat.h} | 48 +------
.../linux/s390/bits/{stat.h => struct_stat.h} | 46 +-----
.../sparc/bits/{stat.h => struct_stat.h} | 49 ++-----
.../linux/x86/bits/{stat.h => struct_stat.h} | 46 +-----
13 files changed, 206 insertions(+), 493 deletions(-)
rename sysdeps/unix/sysv/linux/alpha/bits/{stat.h => struct_stat.h} (72%)
create mode 100644 sysdeps/unix/sysv/linux/bits/struct_stat.h
rename sysdeps/unix/sysv/linux/generic/bits/{stat.h => struct_stat.h} (77%)
rename sysdeps/unix/sysv/linux/ia64/bits/{stat.h => struct_stat.h} (75%)
rename sysdeps/unix/sysv/linux/m68k/bits/{stat.h => struct_stat.h} (77%)
rename sysdeps/unix/sysv/linux/microblaze/bits/{stat.h => struct_stat.h} (81%)
rename sysdeps/unix/sysv/linux/mips/bits/{stat.h => struct_stat.h} (85%)
rename sysdeps/unix/sysv/linux/powerpc/bits/{stat.h => struct_stat.h} (85%)
rename sysdeps/unix/sysv/linux/s390/bits/{stat.h => struct_stat.h} (85%)
rename sysdeps/unix/sysv/linux/sparc/bits/{stat.h => struct_stat.h} (77%)
rename sysdeps/unix/sysv/linux/x86/bits/{stat.h => struct_stat.h} (79%)
Comments
On Thu, 23 Jul 2020 16:46:36 -0300
Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote:
> The common definitions are moved to a Linux generic stat.h while
> the struct stat{64} definition are moved to a arch-specific
> struct_stat.h header.
>
> Checked with a build for all affected Linux ABIs. I checked also
> on x86_64-linux-gnu and i686-linux-gnu.
Reviewed-by: Lukasz Majewski <lukma@denx.de>
> ---
> sysdeps/unix/sysv/linux/Makefile | 3 +-
> .../alpha/bits/{stat.h => struct_stat.h} | 43 +-----
> sysdeps/unix/sysv/linux/bits/stat.h | 101 +-------------
> sysdeps/unix/sysv/linux/bits/struct_stat.h | 131
> ++++++++++++++++++ .../generic/bits/{stat.h => struct_stat.h} |
> 45 +----- .../linux/ia64/bits/{stat.h => struct_stat.h} | 45 +-----
> .../linux/m68k/bits/{stat.h => struct_stat.h} | 44 +-----
> .../microblaze/bits/{stat.h => struct_stat.h} | 53 ++-----
> .../linux/mips/bits/{stat.h => struct_stat.h} | 45 +-----
> .../powerpc/bits/{stat.h => struct_stat.h} | 48 +------
> .../linux/s390/bits/{stat.h => struct_stat.h} | 46 +-----
> .../sparc/bits/{stat.h => struct_stat.h} | 49 ++-----
> .../linux/x86/bits/{stat.h => struct_stat.h} | 46 +-----
> 13 files changed, 206 insertions(+), 493 deletions(-)
> rename sysdeps/unix/sysv/linux/alpha/bits/{stat.h => struct_stat.h}
> (72%) create mode 100644 sysdeps/unix/sysv/linux/bits/struct_stat.h
> rename sysdeps/unix/sysv/linux/generic/bits/{stat.h =>
> struct_stat.h} (77%) rename sysdeps/unix/sysv/linux/ia64/bits/{stat.h
> => struct_stat.h} (75%) rename
> sysdeps/unix/sysv/linux/m68k/bits/{stat.h => struct_stat.h} (77%)
> rename sysdeps/unix/sysv/linux/microblaze/bits/{stat.h =>
> struct_stat.h} (81%) rename sysdeps/unix/sysv/linux/mips/bits/{stat.h
> => struct_stat.h} (85%) rename
> sysdeps/unix/sysv/linux/powerpc/bits/{stat.h => struct_stat.h} (85%)
> rename sysdeps/unix/sysv/linux/s390/bits/{stat.h => struct_stat.h}
> (85%) rename sysdeps/unix/sysv/linux/sparc/bits/{stat.h =>
> struct_stat.h} (77%) rename sysdeps/unix/sysv/linux/x86/bits/{stat.h
> => struct_stat.h} (79%)
>
> diff --git a/sysdeps/unix/sysv/linux/Makefile
> b/sysdeps/unix/sysv/linux/Makefile index 3c28adae0d..f189f65daf 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -94,7 +94,8 @@ sysdep_headers += sys/mount.h sys/acct.h \
> bits/types/struct_semid_ds.h \
> bits/types/struct_msqid_ds.h \
> bits/types/struct_shmid_ds.h \
> - bits/ipc-perm.h
> + bits/ipc-perm.h \
> + bits/struct_stat.h
>
> tests += tst-clone tst-clone2 tst-clone3 tst-fanotify
> tst-personality \ tst-quota tst-sync_file_range tst-sysconf-iov_max
> tst-ttyname \ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/stat.h
> b/sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h similarity index
> 72% rename from sysdeps/unix/sysv/linux/alpha/bits/stat.h
> rename to sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h
> index d20fb5a4b0..1c9b4248b8 100644
> --- a/sysdeps/unix/sysv/linux/alpha/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -16,11 +17,11 @@
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> /* Nanosecond resolution timestamps are stored in a format
> equivalent to 'struct timespec'. This is the type used whenever
> possible but the @@ -111,37 +112,5 @@ struct stat64
> #define _STATBUF_ST_RDEV
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
>
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/bits/stat.h
> b/sysdeps/unix/sysv/linux/bits/stat.h index 0669451f69..85c4c7769e
> 100644 --- a/sysdeps/unix/sysv/linux/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/bits/stat.h
> @@ -22,106 +22,7 @@
> #ifndef _BITS_STAT_H
> #define _BITS_STAT_H 1
>
> -struct stat
> - {
> - __dev_t st_dev; /* Device. */
> - unsigned short int __pad1;
> -#ifndef __USE_FILE_OFFSET64
> - __ino_t st_ino; /* File serial
> number. */ -#else
> - __ino_t __st_ino; /* 32bit file serial
> number. */ -#endif
> - __mode_t st_mode; /* File mode. */
> - __nlink_t st_nlink; /* Link count. */
> - __uid_t st_uid; /* User ID of the file's
> owner. */
> - __gid_t st_gid; /* Group ID of the file's
> group.*/
> - __dev_t st_rdev; /* Device number, if
> device. */
> - unsigned short int __pad2;
> -#ifndef __USE_FILE_OFFSET64
> - __off_t st_size; /* Size of file, in
> bytes. */ -#else
> - __off64_t st_size; /* Size of file, in
> bytes. */ -#endif
> - __blksize_t st_blksize; /* Optimal block size for
> I/O. */ -
> -#ifndef __USE_FILE_OFFSET64
> - __blkcnt_t st_blocks; /* Number 512-byte blocks
> allocated. */ -#else
> - __blkcnt64_t st_blocks; /* Number 512-byte blocks
> allocated. */ -#endif
> -#ifdef __USE_XOPEN2K8
> - /* Nanosecond resolution timestamps are stored in a format
> - equivalent to 'struct timespec'. This is the type used
> - whenever possible but the Unix namespace rules do not allow
> the
> - identifier 'timespec' to appear in the <sys/stat.h> header.
> - Therefore we have to handle the use of this header in strictly
> - standard-compliant sources special. */
> - struct timespec st_atim; /* Time of last access.
> */
> - struct timespec st_mtim; /* Time of last
> modification. */
> - struct timespec st_ctim; /* Time of last status
> change. */ -# define st_atime st_atim.tv_sec /* Backward
> compatibility. */ -# define st_mtime st_mtim.tv_sec
> -# define st_ctime st_ctim.tv_sec
> -#else
> - __time_t st_atime; /* Time of last
> access. */
> - unsigned long int st_atimensec; /* Nscecs of last access.
> */
> - __time_t st_mtime; /* Time of last
> modification. */
> - unsigned long int st_mtimensec; /* Nsecs of last
> modification. */
> - __time_t st_ctime; /* Time of last status
> change. */
> - unsigned long int st_ctimensec; /* Nsecs of last status
> change. */ -#endif
> -#ifndef __USE_FILE_OFFSET64
> - unsigned long int __glibc_reserved4;
> - unsigned long int __glibc_reserved5;
> -#else
> - __ino64_t st_ino; /* File serial
> number. */ -#endif
> - };
> -
> -#ifdef __USE_LARGEFILE64
> -struct stat64
> - {
> - __dev_t st_dev; /* Device. */
> - unsigned int __pad1;
> -
> - __ino_t __st_ino; /* 32bit file serial
> number. */
> - __mode_t st_mode; /* File mode. */
> - __nlink_t st_nlink; /* Link count. */
> - __uid_t st_uid; /* User ID of the file's
> owner. */
> - __gid_t st_gid; /* Group ID of the file's
> group.*/
> - __dev_t st_rdev; /* Device number, if
> device. */
> - unsigned int __pad2;
> - __off64_t st_size; /* Size of file, in
> bytes. */
> - __blksize_t st_blksize; /* Optimal block size for
> I/O. */ -
> - __blkcnt64_t st_blocks; /* Number 512-byte blocks
> allocated. */ -# ifdef __USE_XOPEN2K8
> - /* Nanosecond resolution timestamps are stored in a format
> - equivalent to 'struct timespec'. This is the type used
> - whenever possible but the Unix namespace rules do not allow
> the
> - identifier 'timespec' to appear in the <sys/stat.h> header.
> - Therefore we have to handle the use of this header in strictly
> - standard-compliant sources special. */
> - struct timespec st_atim; /* Time of last access.
> */
> - struct timespec st_mtim; /* Time of last
> modification. */
> - struct timespec st_ctim; /* Time of last status
> change. */ -# else
> - __time_t st_atime; /* Time of last
> access. */
> - unsigned long int st_atimensec; /* Nscecs of last access.
> */
> - __time_t st_mtime; /* Time of last
> modification. */
> - unsigned long int st_mtimensec; /* Nsecs of last
> modification. */
> - __time_t st_ctime; /* Time of last status
> change. */
> - unsigned long int st_ctimensec; /* Nsecs of last status
> change. */ -# endif
> - __ino64_t st_ino; /* File serial
> number. */
> - };
> -#endif
> -
> -/* Tell code we have these members. */
> -#define _STATBUF_ST_BLKSIZE
> -#define _STATBUF_ST_RDEV
> -/* Nanosecond resolution time values are supported. */
> -#define _STATBUF_ST_NSEC
> +#include <bits/struct_stat.h>
>
> /* Encoding of the file mode. */
>
> diff --git a/sysdeps/unix/sysv/linux/bits/struct_stat.h
> b/sysdeps/unix/sysv/linux/bits/struct_stat.h new file mode 100644
> index 0000000000..344bffece6
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/bits/struct_stat.h
> @@ -0,0 +1,131 @@
> +/* Definition for struct stat.
> + Copyright (C) 2020 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/>. */
> +
> +#if !defined _SYS_STAT_H && !defined _FCNTL_H
> +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." +#endif
> +
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
> +
> +#include <bits/endian.h>
> +#include <bits/wordsize.h>
> +
> +struct stat
> + {
> + __dev_t st_dev; /* Device. */
> + unsigned short int __pad1;
> +#ifndef __USE_FILE_OFFSET64
> + __ino_t st_ino; /* File serial
> number. */ +#else
> + __ino_t __st_ino; /* 32bit file serial
> number. */ +#endif
> + __mode_t st_mode; /* File mode. */
> + __nlink_t st_nlink; /* Link count. */
> + __uid_t st_uid; /* User ID of the file's
> owner. */
> + __gid_t st_gid; /* Group ID of the file's
> group.*/
> + __dev_t st_rdev; /* Device number, if
> device. */
> + unsigned short int __pad2;
> +#ifndef __USE_FILE_OFFSET64
> + __off_t st_size; /* Size of file, in
> bytes. */ +#else
> + __off64_t st_size; /* Size of file, in
> bytes. */ +#endif
> + __blksize_t st_blksize; /* Optimal block size for
> I/O. */ +
> +#ifndef __USE_FILE_OFFSET64
> + __blkcnt_t st_blocks; /* Number 512-byte blocks
> allocated. */ +#else
> + __blkcnt64_t st_blocks; /* Number 512-byte blocks
> allocated. */ +#endif
> +#ifdef __USE_XOPEN2K8
> + /* Nanosecond resolution timestamps are stored in a format
> + equivalent to 'struct timespec'. This is the type used
> + whenever possible but the Unix namespace rules do not allow
> the
> + identifier 'timespec' to appear in the <sys/stat.h> header.
> + Therefore we have to handle the use of this header in strictly
> + standard-compliant sources special. */
> + struct timespec st_atim; /* Time of last access.
> */
> + struct timespec st_mtim; /* Time of last
> modification. */
> + struct timespec st_ctim; /* Time of last status
> change. */ +# define st_atime st_atim.tv_sec /* Backward
> compatibility. */ +# define st_mtime st_mtim.tv_sec
> +# define st_ctime st_ctim.tv_sec
> +#else
> + __time_t st_atime; /* Time of last
> access. */
> + unsigned long int st_atimensec; /* Nscecs of last access.
> */
> + __time_t st_mtime; /* Time of last
> modification. */
> + unsigned long int st_mtimensec; /* Nsecs of last
> modification. */
> + __time_t st_ctime; /* Time of last status
> change. */
> + unsigned long int st_ctimensec; /* Nsecs of last status
> change. */ +#endif
> +#ifndef __USE_FILE_OFFSET64
> + unsigned long int __glibc_reserved4;
> + unsigned long int __glibc_reserved5;
> +#else
> + __ino64_t st_ino; /* File serial
> number. */ +#endif
> + };
> +
> +#ifdef __USE_LARGEFILE64
> +struct stat64
> + {
> + __dev_t st_dev; /* Device. */
> + unsigned int __pad1;
> +
> + __ino_t __st_ino; /* 32bit file serial
> number. */
> + __mode_t st_mode; /* File mode. */
> + __nlink_t st_nlink; /* Link count. */
> + __uid_t st_uid; /* User ID of the file's
> owner. */
> + __gid_t st_gid; /* Group ID of the file's
> group.*/
> + __dev_t st_rdev; /* Device number, if
> device. */
> + unsigned int __pad2;
> + __off64_t st_size; /* Size of file, in
> bytes. */
> + __blksize_t st_blksize; /* Optimal block size for
> I/O. */ +
> + __blkcnt64_t st_blocks; /* Number 512-byte blocks
> allocated. */ +# ifdef __USE_XOPEN2K8
> + /* Nanosecond resolution timestamps are stored in a format
> + equivalent to 'struct timespec'. This is the type used
> + whenever possible but the Unix namespace rules do not allow
> the
> + identifier 'timespec' to appear in the <sys/stat.h> header.
> + Therefore we have to handle the use of this header in strictly
> + standard-compliant sources special. */
> + struct timespec st_atim; /* Time of last access.
> */
> + struct timespec st_mtim; /* Time of last
> modification. */
> + struct timespec st_ctim; /* Time of last status
> change. */ +# else
> + __time_t st_atime; /* Time of last
> access. */
> + unsigned long int st_atimensec; /* Nscecs of last access.
> */
> + __time_t st_mtime; /* Time of last
> modification. */
> + unsigned long int st_mtimensec; /* Nsecs of last
> modification. */
> + __time_t st_ctime; /* Time of last status
> change. */
> + unsigned long int st_ctimensec; /* Nsecs of last status
> change. */ +# endif
> + __ino64_t st_ino; /* File serial
> number. */
> + };
> +#endif
> +
> +/* Tell code we have these members. */
> +#define _STATBUF_ST_BLKSIZE
> +#define _STATBUF_ST_RDEV
> +/* Nanosecond resolution time values are supported. */
> +#define _STATBUF_ST_NSEC
> +
> +
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/generic/bits/stat.h
> b/sysdeps/unix/sysv/linux/generic/bits/struct_stat.h similarity index
> 77% rename from sysdeps/unix/sysv/linux/generic/bits/stat.h
> rename to sysdeps/unix/sysv/linux/generic/bits/struct_stat.h
> index 1b586d72fa..5049956030 100644
> --- a/sysdeps/unix/sysv/linux/generic/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/generic/bits/struct_stat.h
> @@ -1,6 +1,6 @@
> -/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 Free Software Foundation, Inc.
> This file is part of the GNU C Library.
> - Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
>
> The GNU C Library is free software; you can redistribute it and/or
> modify it under the terms of the GNU Lesser General Public
> @@ -17,11 +17,11 @@
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> #include <bits/endian.h>
> #include <bits/wordsize.h>
> @@ -124,37 +124,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/ia64/bits/stat.h
> b/sysdeps/unix/sysv/linux/ia64/bits/struct_stat.h similarity index 75%
> rename from sysdeps/unix/sysv/linux/ia64/bits/stat.h
> rename to sysdeps/unix/sysv/linux/ia64/bits/struct_stat.h
> index 6937f3227a..b2272a55b1 100644
> --- a/sysdeps/unix/sysv/linux/ia64/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/ia64/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -12,15 +13,15 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> struct stat
> {
> @@ -105,37 +106,5 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
>
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits//stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/m68k/bits/stat.h
> b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h similarity index 77%
> rename from sysdeps/unix/sysv/linux/m68k/bits/stat.h
> rename to sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
> index c6f761fcc0..bf457a0db7 100644
> --- a/sysdeps/unix/sysv/linux/m68k/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -16,11 +17,11 @@
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> struct stat
> {
> @@ -123,37 +124,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
> b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h similarity
> index 81% rename from sysdeps/unix/sysv/linux/microblaze/bits/stat.h
> rename to sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> index b3068e5c98..db81543b23 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> @@ -1,11 +1,11 @@
> -/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
> -
> +/* Definition for struct stat.
> + Copyright (C) 2020 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.
> + 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
> @@ -13,15 +13,15 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> #ifndef __USE_FILE_OFFSET64
> struct stat
> @@ -155,37 +155,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits determine file type.
> */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device. */
> -#define __S_IFBLK 0060000 /* Block device. */
> -#define __S_IFREG 0100000 /* Regular file. */
> -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on execution. */
> -#define __S_ISGID 02000 /* Set group ID on execution. */
> -#define __S_ISVTX 01000 /* Save swapped text after use
> (sticky). */ -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> -
> -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h. */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/stat.h
> b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h similarity index 85%
> rename from sysdeps/unix/sysv/linux/mips/bits/stat.h
> rename to sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
> index f229c58013..5abd71fc23 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -16,15 +17,14 @@
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> #include <sgidefs.h>
>
> -
> #if _MIPS_SIM == _ABIO32
> /* Structure describing file characteristics. */
> struct stat
> @@ -215,37 +215,4 @@ struct stat64
> #define _STATBUF_ST_BLKSIZE
> #define _STATBUF_ST_RDEV
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
> b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h similarity index
> 85% rename from sysdeps/unix/sysv/linux/powerpc/bits/stat.h
> rename to sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
> index 80c9dc23ac..cb41adc7c0 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -12,19 +13,18 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> #include <bits/wordsize.h>
>
> -
> #if __WORDSIZE == 32
>
> struct stat
> @@ -216,44 +216,10 @@ struct stat64
> # endif /* __USE_LARGEFILE64 */
> #endif
>
> -
> /* Tell code we have these members. */
> #define _STATBUF_ST_BLKSIZE
> #define _STATBUF_ST_RDEV
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/s390/bits/stat.h
> b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h similarity index 85%
> rename from sysdeps/unix/sysv/linux/s390/bits/stat.h
> rename to sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
> index 75fa871a1d..10e7eb0221 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -12,15 +13,15 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> #include <bits/wordsize.h>
>
> @@ -207,37 +208,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/stat.h
> b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h similarity index
> 77% rename from sysdeps/unix/sysv/linux/sparc/bits/stat.h
> rename to sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
> index d10ebb1a9a..546811539a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -12,15 +13,18 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
> +
> +#include <bits/endian.h>
> +#include <bits/wordsize.h>
>
> struct stat
> {
> @@ -124,37 +128,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
> diff --git a/sysdeps/unix/sysv/linux/x86/bits/stat.h
> b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h similarity index 79%
> rename from sysdeps/unix/sysv/linux/x86/bits/stat.h
> rename to sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
> index 2c0a3f120b..dae7aa46b3 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/stat.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
> +/* Definition for struct stat.
> + Copyright (C) 2020 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
> @@ -12,15 +13,15 @@
> 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
> + License along with the GNU C Library. If not, see
> <https://www.gnu.org/licenses/>. */
>
> #if !defined _SYS_STAT_H && !defined _FCNTL_H
> -# error "Never include <bits/stat.h> directly; use <sys/stat.h>
> instead." +# error "Never include <bits/struct_stat.h> directly; use
> <sys/stat.h> instead." #endif
>
> -#ifndef _BITS_STAT_H
> -#define _BITS_STAT_H 1
> +#ifndef _BITS_STRUCT_STAT_H
> +#define _BITS_STRUCT_STAT_H 1
>
> struct stat
> {
> @@ -153,37 +154,4 @@ struct stat64
> /* Nanosecond resolution time values are supported. */
> #define _STATBUF_ST_NSEC
>
> -/* Encoding of the file mode. */
> -
> -#define __S_IFMT 0170000 /* These bits
> determine file type. */ -
> -/* File types. */
> -#define __S_IFDIR 0040000 /* Directory. */
> -#define __S_IFCHR 0020000 /* Character device.
> */ -#define __S_IFBLK 0060000 /* Block device.
> */ -#define __S_IFREG 0100000 /* Regular file.
> */ -#define __S_IFIFO 0010000 /* FIFO. */
> -#define __S_IFLNK 0120000 /* Symbolic link. */
> -#define __S_IFSOCK 0140000 /* Socket. */
> -
> -/* POSIX.1b objects. Note that these macros always evaluate to
> zero. But
> - they do it by enforcing the correct use of the macros. */
> -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
> -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
> -
> -/* Protection bits. */
> -
> -#define __S_ISUID 04000 /* Set user ID on
> execution. */ -#define __S_ISGID 02000 /* Set
> group ID on execution. */ -#define __S_ISVTX
> 01000 /* Save swapped text after use (sticky). */
> -#define __S_IREAD 0400 /* Read by owner. */
> -#define __S_IWRITE 0200 /* Write by owner. */
> -#define __S_IEXEC 0100 /* Execute by owner. */
> - -#ifdef __USE_ATFILE
> -# define UTIME_NOW ((1l << 30) - 1l)
> -# define UTIME_OMIT ((1l << 30) - 2l)
> -#endif
> -
> -#endif /* bits/stat.h */
> +#endif /* _BITS_STRUCT_STAT_H */
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
@@ -94,7 +94,8 @@ sysdep_headers += sys/mount.h sys/acct.h \
bits/types/struct_semid_ds.h \
bits/types/struct_msqid_ds.h \
bits/types/struct_shmid_ds.h \
- bits/ipc-perm.h
+ bits/ipc-perm.h \
+ bits/struct_stat.h
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
similarity index 72%
rename from sysdeps/unix/sysv/linux/alpha/bits/stat.h
rename to sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -16,11 +17,11 @@
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
/* Nanosecond resolution timestamps are stored in a format equivalent to
'struct timespec'. This is the type used whenever possible but the
@@ -111,37 +112,5 @@ struct stat64
#define _STATBUF_ST_RDEV
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
@@ -22,106 +22,7 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-struct stat
- {
- __dev_t st_dev; /* Device. */
- unsigned short int __pad1;
-#ifndef __USE_FILE_OFFSET64
- __ino_t st_ino; /* File serial number. */
-#else
- __ino_t __st_ino; /* 32bit file serial number. */
-#endif
- __mode_t st_mode; /* File mode. */
- __nlink_t st_nlink; /* Link count. */
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group.*/
- __dev_t st_rdev; /* Device number, if device. */
- unsigned short int __pad2;
-#ifndef __USE_FILE_OFFSET64
- __off_t st_size; /* Size of file, in bytes. */
-#else
- __off64_t st_size; /* Size of file, in bytes. */
-#endif
- __blksize_t st_blksize; /* Optimal block size for I/O. */
-
-#ifndef __USE_FILE_OFFSET64
- __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
-#else
- __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#endif
-#ifdef __USE_XOPEN2K8
- /* Nanosecond resolution timestamps are stored in a format
- equivalent to 'struct timespec'. This is the type used
- whenever possible but the Unix namespace rules do not allow the
- identifier 'timespec' to appear in the <sys/stat.h> header.
- Therefore we have to handle the use of this header in strictly
- standard-compliant sources special. */
- struct timespec st_atim; /* Time of last access. */
- struct timespec st_mtim; /* Time of last modification. */
- struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
- __time_t st_atime; /* Time of last access. */
- unsigned long int st_atimensec; /* Nscecs of last access. */
- __time_t st_mtime; /* Time of last modification. */
- unsigned long int st_mtimensec; /* Nsecs of last modification. */
- __time_t st_ctime; /* Time of last status change. */
- unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
-#ifndef __USE_FILE_OFFSET64
- unsigned long int __glibc_reserved4;
- unsigned long int __glibc_reserved5;
-#else
- __ino64_t st_ino; /* File serial number. */
-#endif
- };
-
-#ifdef __USE_LARGEFILE64
-struct stat64
- {
- __dev_t st_dev; /* Device. */
- unsigned int __pad1;
-
- __ino_t __st_ino; /* 32bit file serial number. */
- __mode_t st_mode; /* File mode. */
- __nlink_t st_nlink; /* Link count. */
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group.*/
- __dev_t st_rdev; /* Device number, if device. */
- unsigned int __pad2;
- __off64_t st_size; /* Size of file, in bytes. */
- __blksize_t st_blksize; /* Optimal block size for I/O. */
-
- __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-# ifdef __USE_XOPEN2K8
- /* Nanosecond resolution timestamps are stored in a format
- equivalent to 'struct timespec'. This is the type used
- whenever possible but the Unix namespace rules do not allow the
- identifier 'timespec' to appear in the <sys/stat.h> header.
- Therefore we have to handle the use of this header in strictly
- standard-compliant sources special. */
- struct timespec st_atim; /* Time of last access. */
- struct timespec st_mtim; /* Time of last modification. */
- struct timespec st_ctim; /* Time of last status change. */
-# else
- __time_t st_atime; /* Time of last access. */
- unsigned long int st_atimensec; /* Nscecs of last access. */
- __time_t st_mtime; /* Time of last modification. */
- unsigned long int st_mtimensec; /* Nsecs of last modification. */
- __time_t st_ctime; /* Time of last status change. */
- unsigned long int st_ctimensec; /* Nsecs of last status change. */
-# endif
- __ino64_t st_ino; /* File serial number. */
- };
-#endif
-
-/* Tell code we have these members. */
-#define _STATBUF_ST_BLKSIZE
-#define _STATBUF_ST_RDEV
-/* Nanosecond resolution time values are supported. */
-#define _STATBUF_ST_NSEC
+#include <bits/struct_stat.h>
/* Encoding of the file mode. */
new file mode 100644
@@ -0,0 +1,131 @@
+/* Definition for struct stat.
+ Copyright (C) 2020 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/>. */
+
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
+#endif
+
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
+
+#include <bits/endian.h>
+#include <bits/wordsize.h>
+
+struct stat
+ {
+ __dev_t st_dev; /* Device. */
+ unsigned short int __pad1;
+#ifndef __USE_FILE_OFFSET64
+ __ino_t st_ino; /* File serial number. */
+#else
+ __ino_t __st_ino; /* 32bit file serial number. */
+#endif
+ __mode_t st_mode; /* File mode. */
+ __nlink_t st_nlink; /* Link count. */
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group.*/
+ __dev_t st_rdev; /* Device number, if device. */
+ unsigned short int __pad2;
+#ifndef __USE_FILE_OFFSET64
+ __off_t st_size; /* Size of file, in bytes. */
+#else
+ __off64_t st_size; /* Size of file, in bytes. */
+#endif
+ __blksize_t st_blksize; /* Optimal block size for I/O. */
+
+#ifndef __USE_FILE_OFFSET64
+ __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
+#else
+ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
+#endif
+#ifdef __USE_XOPEN2K8
+ /* Nanosecond resolution timestamps are stored in a format
+ equivalent to 'struct timespec'. This is the type used
+ whenever possible but the Unix namespace rules do not allow the
+ identifier 'timespec' to appear in the <sys/stat.h> header.
+ Therefore we have to handle the use of this header in strictly
+ standard-compliant sources special. */
+ struct timespec st_atim; /* Time of last access. */
+ struct timespec st_mtim; /* Time of last modification. */
+ struct timespec st_ctim; /* Time of last status change. */
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+#else
+ __time_t st_atime; /* Time of last access. */
+ unsigned long int st_atimensec; /* Nscecs of last access. */
+ __time_t st_mtime; /* Time of last modification. */
+ unsigned long int st_mtimensec; /* Nsecs of last modification. */
+ __time_t st_ctime; /* Time of last status change. */
+ unsigned long int st_ctimensec; /* Nsecs of last status change. */
+#endif
+#ifndef __USE_FILE_OFFSET64
+ unsigned long int __glibc_reserved4;
+ unsigned long int __glibc_reserved5;
+#else
+ __ino64_t st_ino; /* File serial number. */
+#endif
+ };
+
+#ifdef __USE_LARGEFILE64
+struct stat64
+ {
+ __dev_t st_dev; /* Device. */
+ unsigned int __pad1;
+
+ __ino_t __st_ino; /* 32bit file serial number. */
+ __mode_t st_mode; /* File mode. */
+ __nlink_t st_nlink; /* Link count. */
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group.*/
+ __dev_t st_rdev; /* Device number, if device. */
+ unsigned int __pad2;
+ __off64_t st_size; /* Size of file, in bytes. */
+ __blksize_t st_blksize; /* Optimal block size for I/O. */
+
+ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
+# ifdef __USE_XOPEN2K8
+ /* Nanosecond resolution timestamps are stored in a format
+ equivalent to 'struct timespec'. This is the type used
+ whenever possible but the Unix namespace rules do not allow the
+ identifier 'timespec' to appear in the <sys/stat.h> header.
+ Therefore we have to handle the use of this header in strictly
+ standard-compliant sources special. */
+ struct timespec st_atim; /* Time of last access. */
+ struct timespec st_mtim; /* Time of last modification. */
+ struct timespec st_ctim; /* Time of last status change. */
+# else
+ __time_t st_atime; /* Time of last access. */
+ unsigned long int st_atimensec; /* Nscecs of last access. */
+ __time_t st_mtime; /* Time of last modification. */
+ unsigned long int st_mtimensec; /* Nsecs of last modification. */
+ __time_t st_ctime; /* Time of last status change. */
+ unsigned long int st_ctimensec; /* Nsecs of last status change. */
+# endif
+ __ino64_t st_ino; /* File serial number. */
+ };
+#endif
+
+/* Tell code we have these members. */
+#define _STATBUF_ST_BLKSIZE
+#define _STATBUF_ST_RDEV
+/* Nanosecond resolution time values are supported. */
+#define _STATBUF_ST_NSEC
+
+
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 77%
rename from sysdeps/unix/sysv/linux/generic/bits/stat.h
rename to sysdeps/unix/sysv/linux/generic/bits/struct_stat.h
@@ -1,6 +1,6 @@
-/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,11 +17,11 @@
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
#include <bits/endian.h>
#include <bits/wordsize.h>
@@ -124,37 +124,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 75%
rename from sysdeps/unix/sysv/linux/ia64/bits/stat.h
rename to sysdeps/unix/sysv/linux/ia64/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -12,15 +13,15 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
struct stat
{
@@ -105,37 +106,5 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits//stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 77%
rename from sysdeps/unix/sysv/linux/m68k/bits/stat.h
rename to sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -16,11 +17,11 @@
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
struct stat
{
@@ -123,37 +124,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 81%
rename from sysdeps/unix/sysv/linux/microblaze/bits/stat.h
rename to sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
@@ -1,11 +1,11 @@
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
-
+/* Definition for struct stat.
+ Copyright (C) 2020 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.
+ 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
@@ -13,15 +13,15 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
#ifndef __USE_FILE_OFFSET64
struct stat
@@ -155,37 +155,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h. */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 85%
rename from sysdeps/unix/sysv/linux/mips/bits/stat.h
rename to sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -16,15 +17,14 @@
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
#include <sgidefs.h>
-
#if _MIPS_SIM == _ABIO32
/* Structure describing file characteristics. */
struct stat
@@ -215,37 +215,4 @@ struct stat64
#define _STATBUF_ST_BLKSIZE
#define _STATBUF_ST_RDEV
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 85%
rename from sysdeps/unix/sysv/linux/powerpc/bits/stat.h
rename to sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -12,19 +13,18 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
#include <bits/wordsize.h>
-
#if __WORDSIZE == 32
struct stat
@@ -216,44 +216,10 @@ struct stat64
# endif /* __USE_LARGEFILE64 */
#endif
-
/* Tell code we have these members. */
#define _STATBUF_ST_BLKSIZE
#define _STATBUF_ST_RDEV
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 85%
rename from sysdeps/unix/sysv/linux/s390/bits/stat.h
rename to sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -12,15 +13,15 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
#include <bits/wordsize.h>
@@ -207,37 +208,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 77%
rename from sysdeps/unix/sysv/linux/sparc/bits/stat.h
rename to sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -12,15 +13,18 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
+
+#include <bits/endian.h>
+#include <bits/wordsize.h>
struct stat
{
@@ -124,37 +128,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */
similarity index 79%
rename from sysdeps/unix/sysv/linux/x86/bits/stat.h
rename to sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Definition for struct stat.
+ Copyright (C) 2020 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
@@ -12,15 +13,15 @@
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
+ License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
#endif
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
+#ifndef _BITS_STRUCT_STAT_H
+#define _BITS_STRUCT_STAT_H 1
struct stat
{
@@ -153,37 +154,4 @@ struct stat64
/* Nanosecond resolution time values are supported. */
#define _STATBUF_ST_NSEC
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_ATFILE
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-
-#endif /* bits/stat.h */
+#endif /* _BITS_STRUCT_STAT_H */