x32: remove redundant definitions
* file.c [X32]: Do not define "struct stat" and "struct
__old_kernel_stat" locally, use definitions provided by <asm/stat.h>.
Do not define "struct stat64" exclusively, reuse another definition
added earlier for X86_64.
diff --git a/file.c b/file.c
index f4ff3ef..f210652 100644
--- a/file.c
+++ b/file.c
@@ -71,67 +71,7 @@
# define stat kernel_stat
# include <asm/stat.h>
# undef stat
-#elif defined(X32)
-struct stat {
- unsigned long long st_dev;
- unsigned long long st_ino;
- unsigned long long st_nlink;
-
- unsigned int st_mode;
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned int __pad0;
- unsigned long long st_rdev;
- long long st_size;
- long long st_blksize;
- long long st_blocks;
-
- unsigned long long st_atime;
- unsigned long long st_atime_nsec;
- unsigned long long st_mtime;
- unsigned long long st_mtime_nsec;
- unsigned long long st_ctime;
- unsigned long long st_ctime_nsec;
- long long __unused[3];
-};
-
-struct stat64 {
- unsigned long long st_dev;
- unsigned char __pad0[4];
- unsigned long __st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
- unsigned long st_uid;
- unsigned long st_gid;
- unsigned long long st_rdev;
- unsigned char __pad3[4];
- long long st_size;
- unsigned long st_blksize;
- unsigned long long st_blocks;
- unsigned long st_atime;
- unsigned long st_atime_nsec;
- unsigned long st_mtime;
- unsigned int st_mtime_nsec;
- unsigned long st_ctime;
- unsigned long st_ctime_nsec;
- unsigned long long st_ino;
-} __attribute__((packed));
-# define HAVE_STAT64 1
-
-struct __old_kernel_stat {
- unsigned short st_dev;
- unsigned short st_ino;
- unsigned short st_mode;
- unsigned short st_nlink;
- unsigned short st_uid;
- unsigned short st_gid;
- unsigned short st_rdev;
- unsigned int st_size;
- unsigned int st_atime;
- unsigned int st_mtime;
- unsigned int st_ctime;
-};
-#else
+#else /* !SPARC && !SPARC64 */
# undef dev_t
# undef ino_t
# undef mode_t
@@ -420,16 +360,15 @@
# define printstat printstat64
#endif
-#if !defined HAVE_STAT64 && (defined AARCH64 || defined X86_64)
+#if !defined HAVE_STAT64 && (defined AARCH64 || defined X86_64 || defined X32)
/*
- * Linux x86_64 has unified `struct stat' but its i386 biarch needs
- * `struct stat64'. Its <asm-i386/stat.h> definition expects 32-bit `long'.
- * <linux/include/asm-x86_64/ia32.h> is not in the public includes set.
+ * Linux x86_64 and x32 have unified `struct stat' but their i386 personality
+ * needs `struct stat64'.
+ * linux/arch/x86/include/uapi/asm/stat.h defines `struct stat64' only for i386.
* __GNUC__ is needed for the required __attribute__ below.
*
* Similarly, aarch64 has a unified `struct stat' but its arm personality
- * needs `struct stat64' (which also expects a 32-bit `long' but which
- * shouldn't be packed).
+ * needs `struct stat64' (unlike x86, it shouldn't be packed).
*/
struct stat64 {
unsigned long long st_dev;
@@ -452,7 +391,7 @@
unsigned int st_ctime_nsec;
unsigned long long st_ino;
}
-# if defined X86_64
+# if defined X86_64 || defined X32
__attribute__((packed))
# define STAT64_SIZE 96
#else
@@ -460,7 +399,7 @@
# endif
;
# define HAVE_STAT64 1
-#endif
+#endif /* AARCH64 || X86_64 || X32 */
#ifdef HAVE_STAT64
static void