aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-10-10 22:32:36 -0700
committerDavid S. Miller <davem@davemloft.net>2013-10-10 22:32:36 -0700
commit75b4202ab03337edb37536e3d9470a48a04c9341 (patch)
tree5e187d42c32db5c190b00009bed479a6a39b8a0e
parent33b853c3b19a2a75f720f9fca312a651ab17728a (diff)
downloadglibc-75b4202ab03337edb37536e3d9470a48a04c9341.zip
glibc-75b4202ab03337edb37536e3d9470a48a04c9341.tar.gz
glibc-75b4202ab03337edb37536e3d9470a48a04c9341.tar.bz2
Fix readdir regressions on sparc 32-bit.
* sysdeps/posix/dirstream.h (struct __dirstream): Fix alignment of directory block.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/posix/dirstream.h9
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index fdc2f0b..5d99bd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-10 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/posix/dirstream.h (struct __dirstream): Fix alignment of
+ directory block.
+
2013-10-10 Joseph Myers <joseph@codesourcery.com>
* soft-fp/extendxftf2.c: Use copyright year range. Use URL
diff --git a/sysdeps/posix/dirstream.h b/sysdeps/posix/dirstream.h
index 8e8570d..be20895 100644
--- a/sysdeps/posix/dirstream.h
+++ b/sysdeps/posix/dirstream.h
@@ -41,8 +41,13 @@ struct __dirstream
int errcode; /* Delayed error code. */
- /* Directory block. */
- char data[0] __attribute__ ((aligned (__alignof__ (void*))));
+ /* Directory block. We must make sure that this block starts
+ at an address that is aligned adequately enough to store
+ dirent entries. Using the alignment of "void *" is not
+ sufficient because dirents on 32-bit platforms can require
+ 64-bit alignment. We use "long double" here to be consistent
+ with what malloc uses. */
+ char data[0] __attribute__ ((aligned (__alignof__ (long double))));
};
#define _DIR_dirfd(dirp) ((dirp)->fd)