This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Update x86_64 bits/stat.h


On Thu, May 31, 2012 at 4:43 PM, Roland McGrath <roland@hack.frob.com> wrote:
> That is fine. ?Have you verified that these are the only differences
> between the old i386 file and the i386 case in the x86_64 file?
>
>

Here is the diff.  It looks OK to me.


-- 
H.J.
--

--- ./sysdeps/unix/sysv/linux/bits/stat.h	2012-02-11 10:04:07.113326914 -0
800
+++ ./sysdeps/unix/sysv/linux/x86_64/bits/stat.h	2012-05-31 16:35:44.5767
16281 -0700
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2002, 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 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
@@ -23,41 +23,60 @@
 #define _BITS_STAT_H	1

 /* Versions of the `struct stat' data structure.  */
+#ifndef __x86_64__
 #define _STAT_VER_LINUX_OLD	1
 #define _STAT_VER_KERNEL	1
 #define _STAT_VER_SVR4		2
 #define _STAT_VER_LINUX		3
-#define _STAT_VER		_STAT_VER_LINUX	/* The one defined below.  */

-/* Versions of the `xmknod' interface.  */
+/* i386 versions of the `xmknod' interface.  */
 #define _MKNOD_VER_LINUX	1
 #define _MKNOD_VER_SVR4		2
 #define _MKNOD_VER		_MKNOD_VER_LINUX /* The bits defined below.  */
+#else
+# define _STAT_VER_KERNEL	0
+# define _STAT_VER_LINUX	1
+
+/* x86-64 versions of the `xmknod' interface.  */
+# define _MKNOD_VER_LINUX	0
+#endif

+#define _STAT_VER		_STAT_VER_LINUX

 struct stat
   {
     __dev_t st_dev;			/* Device.  */
+#ifndef __x86_64__
     unsigned short int __pad1;
-#ifndef __USE_FILE_OFFSET64
+#endif
+#if defined __x86_64__ || !defined __USE_FILE_OFFSET64
     __ino_t st_ino;			/* File serial number.	*/
 #else
     __ino_t __st_ino;			/* 32bit file serial number.	*/
 #endif
+#ifndef __x86_64__
     __mode_t st_mode;			/* File mode.  */
     __nlink_t st_nlink;			/* Link count.  */
+#else
+    __nlink_t st_nlink;		/* Link count.  */
+    __mode_t st_mode;		/* File mode.  */
+#endif
     __uid_t st_uid;			/* User ID of the file's owner.	*/
     __gid_t st_gid;			/* Group ID of the file's group.*/
+#ifdef __x86_64__
+    int __pad0;
+#endif
     __dev_t st_rdev;			/* Device number, if device.  */
+#ifndef __x86_64__
     unsigned short int __pad2;
-#ifndef __USE_FILE_OFFSET64
+#endif
+#if defined __x86_64__ || !defined __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
+#if defined __x86_64__  || !defined __USE_FILE_OFFSET64
     __blkcnt_t st_blocks;		/* Number 512-byte blocks allocated. */
 #else
     __blkcnt64_t st_blocks;		/* Number 512-byte blocks allocated. */
@@ -77,37 +96,52 @@ struct stat
 # 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.  */
+    __syscall_ulong_t st_atimensec;	/* Nscecs of last access.  */
     __time_t st_mtime;			/* Time of last modification.  */
-    unsigned long int st_mtimensec;	/* Nsecs of last modification.  */
+    __syscall_ulong_t 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.  */
+    __syscall_ulong_t st_ctimensec;	/* Nsecs of last status change.  */
 #endif
+#ifdef __x86_64__
+    __syscall_slong_t __unused[3];
+#else
 #ifndef __USE_FILE_OFFSET64
     unsigned long int __unused4;
     unsigned long int __unused5;
 #else
     __ino64_t st_ino;			/* File serial number.	*/
 #endif
+#endif
   };

 #ifdef __USE_LARGEFILE64
+/* Note stat64 has the same shape as stat for x86-64.  */
 struct stat64
   {
     __dev_t st_dev;			/* Device.  */
+# ifdef __x86_64__
+    __ino64_t st_ino;		/* File serial number.  */
+    __nlink_t st_nlink;		/* Link count.  */
+    __mode_t st_mode;		/* File mode.  */
+# else
     unsigned int __pad1;
-
     __ino_t __st_ino;			/* 32bit file serial number.	*/
     __mode_t st_mode;			/* File mode.  */
     __nlink_t st_nlink;			/* Link count.  */
+# endif
     __uid_t st_uid;			/* User ID of the file's owner.	*/
     __gid_t st_gid;			/* Group ID of the file's group.*/
+# ifdef __x86_64__
+    int __pad0;
+    __dev_t st_rdev;		/* Device number, if device.  */
+    __off_t st_size;		/* Size of file, in bytes.  */
+# else
     __dev_t st_rdev;			/* Device number, if device.  */
     unsigned int __pad2;
     __off64_t st_size;			/* Size of file, in bytes.  */
+# endif
     __blksize_t st_blksize;		/* Optimal block size for I/O.  */
-
-    __blkcnt64_t st_blocks;		/* Number 512-byte blocks allocated. */
+    __blkcnt64_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
 # if defined __USE_MISC || defined __USE_XOPEN2K8
     /* Nanosecond resolution timestamps are stored in a format
        equivalent to 'struct timespec'.  This is the type used
@@ -120,13 +154,17 @@ struct stat64
     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.  */
+    __syscall_ulong_t st_atimensec;	/* Nscecs of last access.  */
     __time_t st_mtime;			/* Time of last modification.  */
-    unsigned long int st_mtimensec;	/* Nsecs of last modification.  */
+    __syscall_ulong_t 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.  */
+    __syscall_ulong_t st_ctimensec;	/* Nsecs of last status change.  */
 # endif
+# ifdef __x86_64__
+    __syscall_slong_t __unused[3];
+# else
     __ino64_t st_ino;			/* File serial number.		*/
+# endif
   };
 #endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]