18eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#include <inttypes.h>
2d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe#include <stdio.h>
3d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe#include <stdlib.h>
4d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippeint main()
5d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe{
6d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   __attribute__((unused)) char *p = malloc (1);
7d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   char *b1 = malloc (128);
8d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   char *b2 = malloc (128);
98eb8bab992e3998c33770b0cdb16059a8b918a06sewardj   fprintf (stderr, "b1 %#" PRIxPTR " b2 %#" PRIxPTR "\n",
108eb8bab992e3998c33770b0cdb16059a8b918a06sewardj                    (uintptr_t)b1, (uintptr_t)b2);
11d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe
12d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   // Try to land in b2 from b1, causing no error
13d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   // with the default redzone-size, but having
14d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   // an error with a bigger redzone-size.
15d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   // We need to choose a value which lands in b2
16d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   // on 32 bits and 64 bits.
17d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   b1[127 + 70] = 'a';
18d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe   return 0;
19d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe}
20