1213155Sdavidxu/* $FreeBSD: releng/10.3/tools/regression/pthread/unwind/Test.cpp 213155 2010-09-25 04:26:40Z davidxu $ */ 2213155Sdavidxu 3213155Sdavidxuint destructed; 4213155Sdavidxuint destructed2; 5213155Sdavidxu 6213155Sdavidxuclass Test { 7213155Sdavidxupublic: 8213155Sdavidxu Test() { printf("Test::Test()\n"); } 9213155Sdavidxu ~Test() { printf("Test::~Test()\n"); destructed = 1; } 10213155Sdavidxu}; 11213155Sdavidxu 12213155Sdavidxuvoid 13213155Sdavidxucleanup_handler(void *arg) 14213155Sdavidxu{ 15213155Sdavidxu destructed2 = 1; 16213155Sdavidxu printf("%s()\n", __func__); 17213155Sdavidxu} 18213155Sdavidxu 19213155Sdavidxuvoid 20213155Sdavidxucheck_destruct(void) 21213155Sdavidxu{ 22213155Sdavidxu if (!destructed) 23213155Sdavidxu printf("Bug, object destructor is not called\n"); 24213155Sdavidxu else 25213155Sdavidxu printf("OK\n"); 26213155Sdavidxu} 27213155Sdavidxu 28213155Sdavidxuvoid 29213155Sdavidxucheck_destruct2(void) 30213155Sdavidxu{ 31213155Sdavidxu if (!destructed) 32213155Sdavidxu printf("Bug, object destructor is not called\n"); 33213155Sdavidxu else if (!destructed2) 34213155Sdavidxu printf("Bug, cleanup handler is not called\n"); 35213155Sdavidxu else 36213155Sdavidxu printf("OK\n"); 37213155Sdavidxu} 38