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);