diff options
Diffstat (limited to 'contrib/netbsd-tests/lib/csu/dso/h_initfini3_dso.cxx')
-rw-r--r-- | contrib/netbsd-tests/lib/csu/dso/h_initfini3_dso.cxx | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/lib/csu/dso/h_initfini3_dso.cxx b/contrib/netbsd-tests/lib/csu/dso/h_initfini3_dso.cxx new file mode 100644 index 000000000000..ff90ce66b94b --- /dev/null +++ b/contrib/netbsd-tests/lib/csu/dso/h_initfini3_dso.cxx @@ -0,0 +1,37 @@ +#include <unistd.h> + +#ifdef CHECK_STACK_ALIGNMENT +#include <stdlib.h> + +extern "C" int check_stack_alignment(void); +#endif + +class Test2 { +public: + Test2() + { + static const char msg[] = "constructor2 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 + } + ~Test2() + { + static const char msg[] = "destructor2 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 + } +}; + +Test2 test2; |