blob: 699a73c60cdf6bca23448fd2197ed0d044bc9930 [file] [log] [blame]
//===-- Unwind.h ------------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_Unwind_h_
#define liblldb_Unwind_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/lldb-private.h"
namespace lldb_private {
class Unwind
{
protected:
//------------------------------------------------------------------
// Classes that inherit from Unwind can see and modify these
//------------------------------------------------------------------
Unwind(Thread &thread) :
m_thread (thread)
{
}
public:
virtual
~Unwind()
{
}
virtual void
Clear() = 0;
virtual uint32_t
GetFrameCount() = 0;
virtual bool
GetFrameInfoAtIndex (uint32_t frame_idx,
lldb::addr_t& cfa,
lldb::addr_t& pc) = 0;
virtual lldb::RegisterContextSP
CreateRegisterContextForFrame (StackFrame *frame) = 0;
Thread &
GetThread()
{
return m_thread;
}
protected:
//------------------------------------------------------------------
// Classes that inherit from Unwind can see and modify these
//------------------------------------------------------------------
Thread &m_thread;
private:
DISALLOW_COPY_AND_ASSIGN (Unwind);
};
} // namespace lldb_private
#endif // liblldb_Unwind_h_