diff options
author | Roland McGrath <roland@hack.frob.com> | 2012-05-21 11:13:10 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2012-05-21 11:13:10 -0700 |
commit | cbc00a03986c5890f0a9d2c7cdac26b7606fe98c (patch) | |
tree | 864ed2965fbee17dabb6483a0359921fed969cf0 | |
parent | 478143fa1706a0212366dfa4d9bcf3d8334ca131 (diff) | |
download | glibc-cbc00a03986c5890f0a9d2c7cdac26b7606fe98c.tar.gz glibc-cbc00a03986c5890f0a9d2c7cdac26b7606fe98c.tar.xz glibc-cbc00a03986c5890f0a9d2c7cdac26b7606fe98c.zip |
Set MALLOC_ALIGNMENT to at least __alignof__ (long double) for new ABIs.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | malloc/malloc.c | 24 |
2 files changed, 22 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog index 8b4c591170..2e2beedd42 100644 --- 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. diff --git a/malloc/malloc.c b/malloc/malloc.c index abe38723be..c216d26e65 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -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 */ |