Set MALLOC_ALIGNMENT to at least __alignof__ (long double) for new ABIs.

This commit is contained in:
Roland McGrath 2012-05-21 11:13:10 -07:00
parent 478143fa17
commit cbc00a0398
2 changed files with 21 additions and 10 deletions

View File

@ -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.

View 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.
# if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_16)
/* This is the correct definition when there is no past ABI to constrain it.
#define MALLOC_ALIGNMENT (2 * SIZE_SZ < __alignof__ (long double) \
? __alignof__ (long double) : 2 * SIZE_SZ)
*/
#define MALLOC_ALIGNMENT (2 * SIZE_SZ)
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 */