linux-generic: fix alignment of struct stat/statfs for nios2
authorChung-Lin Tang <cltang@codesourcery.com>
Wed, 20 Nov 2013 21:12:18 +0000 (16:12 -0500)
committerChris Metcalf <cmetcalf@tilera.com>
Wed, 20 Nov 2013 21:12:18 +0000 (16:12 -0500)
The hard alignment of 8 was appropriate for most platforms for
which 8-byte values are 8-byte aligned, but this is not true
for the nios2 platform, so only align to the alignment of the
8-byte type on the platform.

Remove the explicit alignment of struct statfs as it's redundant.

ports/ChangeLog.linux-generic
ports/sysdeps/unix/sysv/linux/generic/bits/stat.h
ports/sysdeps/unix/sysv/linux/generic/bits/statfs.h

index 2e04b65..c8acddc 100644 (file)
@@ -1,3 +1,12 @@
+2013-11-13  Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/generic/bits/stat.h (__field64): Use
+       __alignof__(type64) in alignment attribute instead of 8.
+       * sysdeps/unix/sysv/linux/generic/bits/statfs.h (__field64): Use
+       __alignof__(type64) in alignment attribute instead of 8.
+       (struct statfs): Remove alignment attribute.
+       (struct statfs64): Likewise.
+
 2013-06-05  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list:
index 6e74cec..feb5f2b 100644 (file)
 # define __field64(type, type64, name) type name
 #elif __BYTE_ORDER == __LITTLE_ENDIAN
 # define __field64(type, type64, name) \
-  type name __attribute__((__aligned__(8))); int __##name##_pad
+  type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad
 #else
 # define __field64(type, type64, name) \
-  int __##name##_pad __attribute__((__aligned__(8))); type name
+  int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name
 #endif
 
 struct stat
index 7063c7a..8aecb04 100644 (file)
 # define __field64(type, type64, name) type name
 #elif __BYTE_ORDER == __LITTLE_ENDIAN
 # define __field64(type, type64, name) \
-  type name __attribute__((__aligned__(8))); int __##name##_pad
+  type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad
 #else
 # define __field64(type, type64, name) \
-  int __##name##_pad __attribute__((__aligned__(8))); type name
+  int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name
 #endif
 
 struct statfs
@@ -58,7 +58,7 @@ struct statfs
     __SWORD_TYPE f_frsize;
     __SWORD_TYPE f_flags;
     __SWORD_TYPE f_spare[4];
-  } __attribute__((__aligned__(8)));
+  };
 
 #undef __field64
 
@@ -77,7 +77,7 @@ struct statfs64
     __SWORD_TYPE f_frsize;
     __SWORD_TYPE f_flags;
     __SWORD_TYPE f_spare[4];
-  } __attribute__((__aligned__(8)));
+  };
 #endif
 
 /* Tell code we have these members.  */