19ab84eeaSChris Fallin #include <stdio.h> 29ab84eeaSChris Fallin #include <wizer.h> 39ab84eeaSChris Fallin 49ab84eeaSChris Fallin class Test { 59ab84eeaSChris Fallin public: Test()69ab84eeaSChris Fallin Test() : value(1) { 7*19c3380bSAlex Crichton printf("global constructor (should be the first printed line)\n"); 89ab84eeaSChris Fallin } ~Test()9*19c3380bSAlex Crichton ~Test() { printf("global destructor (should be the last printed line)\n"); } 109ab84eeaSChris Fallin int value; 119ab84eeaSChris Fallin }; 129ab84eeaSChris Fallin 139ab84eeaSChris Fallin bool initialized = false; 149ab84eeaSChris Fallin int orig_value = 0; 159ab84eeaSChris Fallin Test t; 169ab84eeaSChris Fallin init_func()179ab84eeaSChris Fallinstatic void init_func() { 189ab84eeaSChris Fallin // This should run after the ctor for `t`, and before `main`. 199ab84eeaSChris Fallin orig_value = t.value; 209ab84eeaSChris Fallin t.value = 2; 219ab84eeaSChris Fallin initialized = true; 229ab84eeaSChris Fallin } 239ab84eeaSChris Fallin 249ab84eeaSChris Fallin WIZER_INIT(init_func); 259ab84eeaSChris Fallin main(int argc,char ** argv)269ab84eeaSChris Fallinint main(int argc, char **argv) { 27*19c3380bSAlex Crichton if (!initialized) 28*19c3380bSAlex Crichton init_func(); 299ab84eeaSChris Fallin printf("argc (should not be baked into snapshot): %d\n", argc); 309ab84eeaSChris Fallin printf("orig_value (should be 1): %d\n", orig_value); 319ab84eeaSChris Fallin printf("t.value (should be 2): %d\n", t.value); 329ab84eeaSChris Fallin } 33