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)15Test::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()42main() 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