aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-05-16 13:23:20 -0700
committerH.J. Lu <hjl.tools@gmail.com>2012-05-16 13:23:20 -0700
commitd4261567b7c22fc411d2435c2a8ccff3fe4c5a50 (patch)
treebbcab1c154e8b923ddae70d4c9608c86b427ca80
parentcf3ff365ec96427f77da45e9aa0b498655b65c2d (diff)
downloadglibc-d4261567b7c22fc411d2435c2a8ccff3fe4c5a50.zip
glibc-d4261567b7c22fc411d2435c2a8ccff3fe4c5a50.tar.gz
glibc-d4261567b7c22fc411d2435c2a8ccff3fe4c5a50.tar.bz2
Add x32 suppport to x86_64/bits/stat.h
-rw-r--r--ChangeLog9
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/stat.h42
2 files changed, 30 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index aa93f95..5d600a4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2012-05-16 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h (_STAT_VER_SVR4):
+ Check __x86_64__ instead of __WORDSIZE.
+ (_STAT_VER_LINUX): Likewise.
+ (stat): Check __x86_64__ instead of __WORDSIZE. Use
+ __syscall_ulong_t and __syscall_slong_t.
+ (stat64): Likewise.
+
+2012-05-16 H.J. Lu <hongjiu.lu@intel.com>
+
* sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h: New file.
2012-05-16 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
index 0c196f5..691c437 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2003,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
@@ -25,7 +25,7 @@
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_KERNEL 0
-#if __WORDSIZE == 32
+#ifndef __x86_64__
# define _STAT_VER_SVR4 2
# define _STAT_VER_LINUX 3
@@ -45,15 +45,15 @@
struct stat
{
__dev_t st_dev; /* Device. */
-#if __WORDSIZE == 32
+#ifndef __x86_64__
unsigned short int __pad1;
#endif
-#if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
+#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
-#if __WORDSIZE == 32
+#ifndef __x86_64__
__mode_t st_mode; /* File mode. */
__nlink_t st_nlink; /* Link count. */
#else
@@ -62,20 +62,20 @@ struct stat
#endif
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
-#if __WORDSIZE == 64
+#ifdef __x86_64__
int __pad0;
#endif
__dev_t st_rdev; /* Device number, if device. */
-#if __WORDSIZE == 32
+#ifndef __x86_64__
unsigned short int __pad2;
#endif
-#if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
+#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. */
-#if __WORDSIZE == 64 || !defined __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. */
@@ -95,14 +95,14 @@ 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
-#if __WORDSIZE == 64
- long int __unused[3];
+#ifdef __x86_64__
+ __syscall_slong_t __unused[3];
#else
# ifndef __USE_FILE_OFFSET64
unsigned long int __unused4;
@@ -118,7 +118,7 @@ struct stat
struct stat64
{
__dev_t st_dev; /* Device. */
-# if __WORDSIZE == 64
+# ifdef __x86_64__
__ino64_t st_ino; /* File serial number. */
__nlink_t st_nlink; /* Link count. */
__mode_t st_mode; /* File mode. */
@@ -130,7 +130,7 @@ struct stat64
# endif
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
-# if __WORDSIZE == 64
+# ifdef __x86_64__
int __pad0;
__dev_t st_rdev; /* Device number, if device. */
__off_t st_size; /* Size of file, in bytes. */
@@ -156,14 +156,14 @@ struct stat64
# 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
-# if __WORDSIZE == 64
- long int __unused[3];
+# ifdef __x86_64__
+ __syscall_slong_t __unused[3];
# else
__ino64_t st_ino; /* File serial number. */
# endif