Set MALLOC_ALIGNMENT to at least __alignof__ (long double) for new ABIs.
authorRoland McGrath <roland@hack.frob.com>
Mon, 21 May 2012 18:13:10 +0000 (11:13 -0700)
committerRoland McGrath <roland@hack.frob.com>
Mon, 21 May 2012 18:13:10 +0000 (11:13 -0700)
ChangeLog
malloc/malloc.c

index 8b4c591170cc6844731d35094a7949fb50110daf..2e2beedd42e6a0d2aac761b4a20628ade85dfad9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-21  Roland McGrath  <roland@hack.frob.com>
+
+       * malloc/malloc.c [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_16)]
+       (MALLOC_ALIGNMENT): Set it to the greater of 2 * SIZE_SZ and
+       __alignof__ (long double).
+
 2012-05-21  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        * sysdeps/powerpc/fpu/libm-test-ulps: Update.
@@ -22,7 +28,8 @@
        * sysdeps/sparc/sysdep.h: ... here.  Include it.
        * sysdeps/unix/sysv/linux/s390/bits/hwcap.h: New file.
        * sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: Update.
-       * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist: Update.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist:
+       Update.
        * sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist: Update.
        * sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: Update.
        * sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: Update.
index abe38723be7d7f00eba4947282e6ebf8dafa81c5..c216d26e65bf541fa8a6ca5fcfc2a94ca59b3dd6 100644 (file)
@@ -337,16 +337,20 @@ __malloc_assert (const char *assertion, const char *file, unsigned int line,
 
 
 #ifndef MALLOC_ALIGNMENT
-/* XXX This is the correct definition.  It differs from 2*SIZE_SZ only on
-   powerpc32.  For the time being, changing this is causing more
-   compatibility problems due to malloc_get_state/malloc_set_state than
-   will returning blocks not adequately aligned for long double objects
-   under -mlong-double-128.
-
-#define MALLOC_ALIGNMENT       (2 * SIZE_SZ < __alignof__ (long double) \
-                               ? __alignof__ (long double) : 2 * SIZE_SZ)
-*/
-#define MALLOC_ALIGNMENT       (2 * SIZE_SZ)
+# if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_16)
+/* This is the correct definition when there is no past ABI to constrain it.
+
+   Among configurations with a past ABI constraint, it differs from
+   2*SIZE_SZ only on powerpc32.  For the time being, changing this is
+   causing more compatibility problems due to malloc_get_state and
+   malloc_set_state than will returning blocks not adequately aligned for
+   long double objects under -mlong-double-128.  */
+
+#  define MALLOC_ALIGNMENT       (2 * SIZE_SZ < __alignof__ (long double) \
+                                 ? __alignof__ (long double) : 2 * SIZE_SZ)
+# else
+#  define MALLOC_ALIGNMENT       (2 * SIZE_SZ)
+# endif
 #endif
 
 /* The corresponding bit mask value */