blob: 61e60c17fae2793b834f3952860f2d87152c6331 [file] [log] [blame]
//===-- MachThreadContext_x86_64.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_MachThreadContext_x86_64_h_
#define liblldb_MachThreadContext_x86_64_h_
#if defined (__i386__) || defined (__x86_64__)
#include "MachThreadContext.h"
#include "RegisterContextMach_x86_64.h"
class ThreadMacOSX;
class MachThreadContext_x86_64 : public MachThreadContext
{
public:
static MachThreadContext*
Create(const lldb_private::ArchSpec &arch_spec, ThreadMacOSX &thread);
// Class init function
static void
Initialize();
// Instance init function
void
InitializeInstance();
MachThreadContext_x86_64 (ThreadMacOSX &thread);
virtual
~MachThreadContext_x86_64();
virtual lldb::RegisterContextSP
CreateRegisterContext (lldb_private::StackFrame *frame) const;
virtual void
ThreadWillResume ();
virtual bool
ShouldStop ();
virtual void
RefreshStateAfterStop ();
virtual bool
NotifyException (MachException::Data& exc);
virtual size_t
GetStackFrameData (lldb_private::StackFrame *first_frame, std::vector<std::pair<lldb::addr_t, lldb::addr_t> >& fp_pc_pairs);
protected:
// kern_return_t EnableHardwareSingleStep (bool enable);
uint32_t m_flags_reg;
private:
DISALLOW_COPY_AND_ASSIGN (MachThreadContext_x86_64);
};
//#if defined (__x86_64__)
//typedef MachThreadContext_x86_64 DNBArch;
//#endif
#endif // defined (__i386__) || defined (__x86_64__)
#endif // #ifndef liblldb_MachThreadContext_x86_64_h_