xref: /openbsd-src/regress/lib/csu/init_priority/init_priority_test.cc (revision 4a08560fec3d048dc92bd89a9bed5ecee2df248e)
1 /* $OpenBSD: init_priority_test.cc,v 1.4 2013/08/01 21:26:30 kettenis Exp $ */
2 
3 #include <cassert>
4 #include <cstdio>
5 
6 namespace {
7 const int kNumTests = 10;
8 int counter = 0;
9 int log[kNumTests];
10 
11 struct Test {
12 	Test(int x);
13 };
14 
Test(int x)15 Test::Test(int x)
16 {
17 	if (counter < kNumTests)
18 		log[counter] = x;
19 	fprintf(stderr, "%d\n", x);
20 	counter++;
21 }
22 
23 #if __GNUC__ < 4
24 #define TEST(n) Test test_##n (n) __attribute__((init_priority (n)))
25 #else
26 #define TEST(n) Test test_##n __attribute__((init_priority (n))) (n)
27 #endif
28 TEST(12597);
29 TEST(20840);
30 TEST(31319);
31 TEST(17071);
32 TEST(47220);
33 TEST(40956);
34 TEST(28373);
35 TEST(8742);
36 TEST(14117);
37 TEST(6407);
38 #undef TEST
39 }
40 
41 int
main()42 main()
43 {
44 	int i;
45 
46 	assert(counter == kNumTests);
47 	for (i = 1; i < kNumTests; i++)
48 		assert(log[i] >= log[i - 1]);
49 
50 	return (0);
51 }
52