mcheck: Align struct hdr to MALLOC_ALIGNMENT bytes [BZ #28068]

1. Align struct hdr to MALLOC_ALIGNMENT bytes so that malloc hooks in
libmcheck align memory to MALLOC_ALIGNMENT bytes.
2. Remove tst-mallocalign1 from tests-exclude-mcheck for i386 and x32.
3. Add tst-pvalloc-fortify and tst-reallocarray to tests-exclude-mcheck
since they use malloc_usable_size (see BZ #22057).

This fixed BZ #28068.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
This commit is contained in:
H.J. Lu 2021-07-12 14:36:39 -07:00
parent 72e84d1db2
commit 84ea6ea24b
4 changed files with 5 additions and 10 deletions

View File

@ -95,7 +95,9 @@ tests-exclude-mcheck = tst-mallocstate \
tst-malloc_info \ tst-malloc_info \
tst-memalign \ tst-memalign \
tst-posix_memalign \ tst-posix_memalign \
tst-realloc tst-realloc \
tst-pvalloc-fortify \
tst-reallocarray
tests-mcheck = $(filter-out $(tests-exclude-mcheck), $(tests)) tests-mcheck = $(filter-out $(tests-exclude-mcheck), $(tests))

View File

@ -20,6 +20,7 @@
#ifndef _MALLOC_INTERNAL #ifndef _MALLOC_INTERNAL
# define _MALLOC_INTERNAL # define _MALLOC_INTERNAL
# include <malloc.h> # include <malloc.h>
# include <malloc-size.h>
# include <mcheck.h> # include <mcheck.h>
# include <stdint.h> # include <stdint.h>
# include <stdio.h> # include <stdio.h>
@ -53,7 +54,7 @@ struct hdr
struct hdr *next; struct hdr *next;
void *block; /* Real block allocated, for memalign. */ void *block; /* Real block allocated, for memalign. */
unsigned long int magic2; /* Extra, keeps us doubleword aligned. */ unsigned long int magic2; /* Extra, keeps us doubleword aligned. */
}; } __attribute__ ((aligned (MALLOC_ALIGNMENT)));
/* This is the beginning of the list of all memory blocks allocated. /* This is the beginning of the list of all memory blocks allocated.
It is only constructed if the pedantic testing is requested. */ It is only constructed if the pedantic testing is requested. */

View File

@ -5,10 +5,6 @@ asm-CPPFLAGS += -DGAS_SYNTAX
# The i386 `long double' is a distinct type we support. # The i386 `long double' is a distinct type we support.
long-double-fcts = yes long-double-fcts = yes
ifeq ($(subdir),malloc)
tests-exclude-mcheck += tst-mallocalign1
endif
ifeq ($(subdir),math) ifeq ($(subdir),math)
# These functions change the rounding mode internally and need to # These functions change the rounding mode internally and need to
# update both the SSE2 rounding mode and the 387 rounding mode. See # update both the SSE2 rounding mode and the 387 rounding mode. See

View File

@ -1,7 +1,3 @@
ifeq ($(subdir),malloc)
tests-exclude-mcheck += tst-mallocalign1
endif
ifeq ($(subdir),math) ifeq ($(subdir),math)
# Since x32 returns 32-bit long int and 64-bit long long int in the # Since x32 returns 32-bit long int and 64-bit long long int in the
# same 64-bit register, we make the 32b-bit lround an alias of the # same 64-bit register, we make the 32b-bit lround an alias of the