diff options
Diffstat (limited to 'contrib/netbsd-tests/lib/csu/h_initfini_common.cxx')
-rw-r--r-- | contrib/netbsd-tests/lib/csu/h_initfini_common.cxx | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/lib/csu/h_initfini_common.cxx b/contrib/netbsd-tests/lib/csu/h_initfini_common.cxx new file mode 100644 index 0000000..dd34983 --- /dev/null +++ b/contrib/netbsd-tests/lib/csu/h_initfini_common.cxx @@ -0,0 +1,37 @@ +#include <unistd.h> + +#ifdef CHECK_STACK_ALIGNMENT +#include <stdlib.h> + +extern "C" int check_stack_alignment(void); +#endif + +class Test { +public: + Test() + { + static const char msg[] = "constructor executed\n"; + write(STDOUT_FILENO, msg, sizeof(msg) - 1); +#ifdef CHECK_STACK_ALIGNMENT + if (!check_stack_alignment()) { + static const char msg2[] = "stack unaligned \n"; + write(STDOUT_FILENO, msg2, sizeof(msg2) - 1); + exit(1); + } +#endif + } + ~Test() + { + static const char msg[] = "destructor executed\n"; + write(STDOUT_FILENO, msg, sizeof(msg) - 1); +#ifdef CHECK_STACK_ALIGNMENT + if (!check_stack_alignment()) { + static const char msg2[] = "stack unaligned \n"; + write(STDOUT_FILENO, msg2, sizeof(msg2) - 1); + exit(1); + } +#endif + } +}; + +Test test; |