1 /* Verify that MALLOC_ALIGNMENT is honored by malloc. 2 Copyright (C) 2012-2021 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #include <stdio.h> 20 #include <stdlib.h> 21 #include <inttypes.h> 22 #include <malloc-size.h> 23 24 static void * test(size_t s)25test (size_t s) 26 { 27 void *p = malloc (s); 28 29 printf ("malloc: %zu, %p: %zu\n", s, p, 30 ((uintptr_t) p) & MALLOC_ALIGN_MASK); 31 return p; 32 } 33 34 static int do_test(void)35do_test (void) 36 { 37 void *p; 38 int ret = 0; 39 40 p = test (2); 41 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 42 free (p); 43 44 p = test (8); 45 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 46 free (p); 47 48 p = test (13); 49 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 50 free (p); 51 52 p = test (16); 53 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 54 free (p); 55 56 p = test (23); 57 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 58 free (p); 59 60 p = test (43); 61 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 62 free (p); 63 64 p = test (123); 65 ret |= (uintptr_t) p & MALLOC_ALIGN_MASK; 66 free (p); 67 68 return ret; 69 } 70 71 #include <support/test-driver.c> 72