ThreadPlanStepThrough.h revision ad382c523709e86f01bfea27f1991df9afeef2dd
1221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom//===-- ThreadPlanStepThrough.h ---------------------------------*- C++ -*-===// 2e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// 3e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// The LLVM Compiler Infrastructure 4e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// 5e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// This file is distributed under the University of Illinois Open Source 6e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// License. See LICENSE.TXT for details. 7e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// 8e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu//===----------------------------------------------------------------------===// 9e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 10e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#ifndef liblldb_ThreadPlanStepThrough_h_ 11e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#define liblldb_ThreadPlanStepThrough_h_ 12e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 13e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// C Includes 14e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// C++ Includes 15e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// Other libraries and framework includes 16e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu// Project includes 17e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#include "lldb/Target/Thread.h" 18e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#include "lldb/Target/ThreadPlan.h" 19e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 20e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugunamespace lldb_private { 21e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 22e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modaduguclass ThreadPlanStepThrough : public ThreadPlan 23e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu{ 24e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugupublic: 25e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual ~ThreadPlanStepThrough (); 26e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 27e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual void GetDescription (Stream *s, lldb::DescriptionLevel level); 28e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool ValidatePlan (Stream *error); 29e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool PlanExplainsStop (); 30e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool ShouldStop (Event *event_ptr); 31e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool StopOthers (); 32e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual lldb::StateType GetPlanRunState (); 33e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool WillResume (lldb::StateType resume_state, bool current_plan); 34e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool WillStop (); 35e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual bool MischiefManaged (); 36e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu virtual void DidPush(); 37e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 38e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modaduguprotected: 39e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu ThreadPlanStepThrough (Thread &thread, 40e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu bool stop_others); 41e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 42e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu void 43e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu LookForPlanToStepThroughFromCurrentPC (); 44e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 45e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu bool 46e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu HitOurBackstopBreakpoint(); 47e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 48e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modaduguprivate: 49e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu friend ThreadPlan * 50e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu Thread::QueueThreadPlanForStepThrough (bool abort_other_plans, 51e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu bool stop_others); 52e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 53e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu lldb::ThreadPlanSP m_sub_plan_sp; 54e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu lldb::addr_t m_start_address; 55e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu lldb::break_id_t m_backstop_bkpt_id; 56e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu lldb::addr_t m_backstop_addr; 57e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu size_t m_stack_depth; 58e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu bool m_stop_others; 59e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu 60221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepThrough); 61221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 62221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom}; 63221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 64e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu} // namespace lldb_private 65221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 66221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif // liblldb_ThreadPlanStepThrough_h_ 67221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom