123176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor//===-- main.cpp ------------------------------------------------*- C++ -*-===// 223176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// 323176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// The LLVM Compiler Infrastructure 423176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// 523176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// This file is distributed under the University of Illinois Open Source 623176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// License. See LICENSE.TXT for details. 723176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// 823176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor//===----------------------------------------------------------------------===// 923176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 1023176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// This test is intended to verify that thread states are properly maintained 1123176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// when transitional actions are performed in the debugger. Most of the logic 1223176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// is in the test script. This program merely provides places where the test 1323176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor// can create the intended states. 1423176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 1523176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor#include <unistd.h> 1623176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 1723176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylorvolatile int g_test = 0; 1823176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 1923176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylorint addSomething(int a) 2023176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor{ 2123176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor return a + g_test; 2223176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor} 2323176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 2423176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylorint doNothing() 2523176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor{ 2623176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor int temp = 0; // Set first breakpoint here 2723176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 28fb8abab7116d56be42b8aa44da012ca68807f390Andrew Kaylor while (!g_test && temp < 5) 29fb8abab7116d56be42b8aa44da012ca68807f390Andrew Kaylor { 30fb8abab7116d56be42b8aa44da012ca68807f390Andrew Kaylor ++temp; 31fb8abab7116d56be42b8aa44da012ca68807f390Andrew Kaylor sleep(1); 32fb8abab7116d56be42b8aa44da012ca68807f390Andrew Kaylor } 3323176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 3423176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor return temp; // Set second breakpoint here 3523176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor} 3623176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 3723176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylorint main () 3823176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor{ 3923176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor int result = doNothing(); 4023176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 4123176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor int i = addSomething(result); 4223176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor 4323176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor return 0; 4423176afa5f9be537392e6f7ee9a8678f32830e1aAndrew Kaylor} 45