1 /* Test case by Alexandre Duret-Lutz <duret_g@epita.fr>. */
7 #define obstack_chunk_alloc verbose_malloc
8 #define obstack_chunk_free verbose_free
9 #define ALIGN_BOUNDARY 64
10 #define ALIGN_MASK (ALIGN_BOUNDARY - 1)
11 #define OBJECT_SIZE 1000
14 verbose_malloc (size_t size)
16 void *buf = malloc (size);
17 printf ("malloc (%zu) => %p\n", size, buf);
22 verbose_free (void *buf)
25 printf ("free (%p)\n", buf);
38 int align_mask = align - 1;
40 printf ("\n Alignment mask: %d\n", align_mask);
43 obstack_alignment_mask (&obs) = align_mask;
44 /* finish an empty object to take alignment into account */
45 obstack_finish (&obs);
47 /* let's allocate some objects and print their addresses */
48 for (i = 15; i > 0; --i)
50 void *obj = obstack_alloc (&obs, OBJECT_SIZE);
52 printf ("obstack_alloc (%u) => %p \t%s\n", OBJECT_SIZE, obj,
53 ((uintptr_t) obj & align_mask) ? "(not aligned)" : "");
54 result |= ((uintptr_t) obj & align_mask) != 0;
58 obstack_free (&obs, 0);