Smack: add the execute lable to ldconfig
[platform/upstream/glibc.git] / stdlib / tst-qsort.c
1 /* Test case by Paul Eggert <eggert@twinsun.com> */
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <tst-stack-align.h>
5
6 struct big { char c[4 * 1024]; };
7
8 struct big *array;
9 struct big *array_end;
10
11 static int align_check;
12
13 int
14 compare (void const *a1, void const *b1)
15 {
16   struct big const *a = a1;
17   struct big const *b = b1;
18
19   if (!align_check)
20     align_check = TEST_STACK_ALIGN () ? -1 : 1;
21
22   if (! (array <= a && a < array_end
23          && array <= b && b < array_end))
24     {
25       exit (EXIT_FAILURE);
26     }
27   return b->c[0] - a->c[0];
28 }
29
30 int
31 main (int argc, char **argv)
32 {
33   size_t i;
34   size_t array_members = argv[1] ? atoi (argv[1]) : 50;
35   array = (struct big *) malloc (array_members * sizeof *array);
36   if (array == NULL)
37     {
38       puts ("no memory");
39       exit (EXIT_FAILURE);
40     }
41
42   array_end = array + array_members;
43   for (i = 0; i < array_members; i++)
44     array[i].c[0] = i % 128;
45
46   qsort (array, array_members, sizeof *array, compare);
47
48   if (align_check == -1)
49     {
50       puts ("stack not sufficiently aligned");
51       exit (EXIT_FAILURE);
52     }
53
54   return 0;
55 }