mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
* malloc/malloc.c (MALLOC_ALIGNMENT): Revert to (2 * SIZE_SZ) value.
The correct value differs only on powerpc32, and for now changing it there is causing more trouble than it's worth. * malloc/arena.c: Add compile-time sanity check on padding calculation. 2006-03-05 Jakub Jelinek <jakub@redhat.com> * malloc/arena.c (heap_info): Adjust the padding size if MALLOC_ALIGNMENT > 2 * SIZE_SZ.
This commit is contained in:
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2006-03-05 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
|
* malloc/malloc.c (MALLOC_ALIGNMENT): Revert to (2 * SIZE_SZ) value.
|
||||||
|
The correct value differs only on powerpc32, and for now changing it
|
||||||
|
there is causing more trouble than it's worth.
|
||||||
|
|
||||||
|
* malloc/arena.c: Add compile-time sanity check on padding calculation.
|
||||||
|
|
||||||
|
2006-03-05 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* malloc/arena.c (heap_info): Adjust the padding size if
|
||||||
|
MALLOC_ALIGNMENT > 2 * SIZE_SZ.
|
||||||
|
|
||||||
2006-03-05 Roland McGrath <roland@frob.com>
|
2006-03-05 Roland McGrath <roland@frob.com>
|
||||||
|
|
||||||
* sysdeps/posix/sysconf.c (__sysconf): Use #if _POSIX_FOO > 0
|
* sysdeps/posix/sysconf.c (__sysconf): Use #if _POSIX_FOO > 0
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Malloc implementation for multiple threads without lock contention.
|
/* Malloc implementation for multiple threads without lock contention.
|
||||||
Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
Copyright (C) 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
|
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
|
||||||
|
|
||||||
@ -55,9 +55,18 @@ typedef struct _heap_info {
|
|||||||
mstate ar_ptr; /* Arena for this heap. */
|
mstate ar_ptr; /* Arena for this heap. */
|
||||||
struct _heap_info *prev; /* Previous heap. */
|
struct _heap_info *prev; /* Previous heap. */
|
||||||
size_t size; /* Current size in bytes. */
|
size_t size; /* Current size in bytes. */
|
||||||
size_t pad; /* Make sure the following data is properly aligned. */
|
/* Make sure the following data is properly aligned, particularly
|
||||||
|
that sizeof (heap_info) + 2 * SIZE_SZ is a multiple of
|
||||||
|
MALLOG_ALIGNMENT. */
|
||||||
|
char pad[-5 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
||||||
} heap_info;
|
} heap_info;
|
||||||
|
|
||||||
|
/* Get a compile-time error if the heap_info padding is not correct
|
||||||
|
to make alignment work as expected in sYSMALLOc. */
|
||||||
|
extern int sanity_check_heap_info_alignment[(sizeof (heap_info)
|
||||||
|
+ 2 * SIZE_SZ) % MALLOC_ALIGNMENT
|
||||||
|
? -1 : 1];
|
||||||
|
|
||||||
/* Thread specific data */
|
/* Thread specific data */
|
||||||
|
|
||||||
static tsd_key_t arena_key;
|
static tsd_key_t arena_key;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Malloc implementation for multiple threads without lock contention.
|
/* Malloc implementation for multiple threads without lock contention.
|
||||||
Copyright (C) 1996-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
Copyright (C) 1996-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Wolfram Gloger <wg@malloc.de>
|
Contributed by Wolfram Gloger <wg@malloc.de>
|
||||||
and Doug Lea <dl@cs.oswego.edu>, 2001.
|
and Doug Lea <dl@cs.oswego.edu>, 2001.
|
||||||
@ -381,8 +381,15 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
#ifndef MALLOC_ALIGNMENT
|
#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) \
|
#define MALLOC_ALIGNMENT (2 * SIZE_SZ < __alignof__ (long double) \
|
||||||
? __alignof__ (long double) : 2 * SIZE_SZ)
|
? __alignof__ (long double) : 2 * SIZE_SZ)
|
||||||
|
*/
|
||||||
|
#define MALLOC_ALIGNMENT (2 * SIZE_SZ)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* The corresponding bit mask value */
|
/* The corresponding bit mask value */
|
||||||
|
@ -816,25 +816,25 @@ __sysconf (name)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case _SC_V6_ILP32_OFF32:
|
case _SC_V6_ILP32_OFF32:
|
||||||
#if _POSIX_V6_ILP32_OFF32 > 0
|
#ifdef _POSIX_V6_ILP32_OFF32
|
||||||
return _POSIX_V6_ILP32_OFF32;
|
return _POSIX_V6_ILP32_OFF32;
|
||||||
#else
|
#else
|
||||||
return __sysconf_check_spec ("ILP32_OFF32");
|
return __sysconf_check_spec ("ILP32_OFF32");
|
||||||
#endif
|
#endif
|
||||||
case _SC_V6_ILP32_OFFBIG:
|
case _SC_V6_ILP32_OFFBIG:
|
||||||
#if _POSIX_V6_ILP32_OFFBIG > 0
|
#ifdef _POSIX_V6_ILP32_OFFBIG
|
||||||
return _POSIX_V6_ILP32_OFFBIG;
|
return _POSIX_V6_ILP32_OFFBIG;
|
||||||
#else
|
#else
|
||||||
return __sysconf_check_spec ("ILP32_OFFBIG");
|
return __sysconf_check_spec ("ILP32_OFFBIG");
|
||||||
#endif
|
#endif
|
||||||
case _SC_V6_LP64_OFF64:
|
case _SC_V6_LP64_OFF64:
|
||||||
#if _POSIX_V6_LP64_OFF64 > 0
|
#ifdef _POSIX_V6_LP64_OFF64
|
||||||
return _POSIX_V6_LP64_OFF64;
|
return _POSIX_V6_LP64_OFF64;
|
||||||
#else
|
#else
|
||||||
return __sysconf_check_spec ("LP64_OFF64");
|
return __sysconf_check_spec ("LP64_OFF64");
|
||||||
#endif
|
#endif
|
||||||
case _SC_V6_LPBIG_OFFBIG:
|
case _SC_V6_LPBIG_OFFBIG:
|
||||||
#if _POSIX_V6_LPBIG_OFFBIG > 0
|
#ifdef _POSIX_V6_LPBIG_OFFBIG
|
||||||
return _POSIX_V6_LPBIG_OFFBIG;
|
return _POSIX_V6_LPBIG_OFFBIG;
|
||||||
#else
|
#else
|
||||||
return __sysconf_check_spec ("LPBIG_OFFBIG");
|
return __sysconf_check_spec ("LPBIG_OFFBIG");
|
||||||
|
Reference in New Issue
Block a user