DNBArch.h revision 24943d2ee8bfaa7cf5893e4709143924157a5c1e
1//===-- DNBArch.h -----------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// Created by Greg Clayton on 6/24/07. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef __DebugNubArch_h__ 15#define __DebugNubArch_h__ 16 17#include "DNBDefs.h" 18#include "MacOSX/MachException.h" 19 20#include <mach/mach.h> 21#include <stdio.h> 22 23struct DNBRegisterValue; 24struct DNBRegisterSetInfo; 25 26class DNBArchProtocol 27{ 28public: 29 static const DNBRegisterSetInfo * 30 GetRegisterSetInfo (nub_size_t *num_reg_sets); 31 32 virtual bool GetRegisterValue (int set, int reg, DNBRegisterValue *value) = 0; 33 virtual bool SetRegisterValue (int set, int reg, const DNBRegisterValue *value) = 0; 34 virtual nub_size_t GetRegisterContext (void *buf, nub_size_t buf_len) = 0; 35 virtual nub_size_t SetRegisterContext (const void *buf, nub_size_t buf_len) = 0; 36 37 virtual kern_return_t GetRegisterState (int set, bool force) = 0; 38 virtual kern_return_t SetRegisterState (int set) = 0; 39 virtual bool RegisterSetStateIsValid (int set) const = 0; 40 41 virtual uint64_t GetPC (uint64_t failValue) = 0; // Get program counter 42 virtual uint64_t GetSP (uint64_t failValue) = 0; // Get stack pointer 43 virtual void ThreadWillResume () = 0; 44 virtual bool ThreadDidStop () = 0; 45 virtual bool NotifyException (MachException::Data& exc) { return false; } 46 virtual uint32_t NumSupportedHardwareBreakpoints() { return 0; } 47 virtual uint32_t NumSupportedHardwareWatchpoints() { return 0; } 48 virtual uint32_t EnableHardwareBreakpoint (nub_addr_t addr, nub_size_t size) { return INVALID_NUB_HW_INDEX; } 49 virtual uint32_t EnableHardwareWatchpoint (nub_addr_t addr, nub_size_t size, bool read, bool write) { return INVALID_NUB_HW_INDEX; } 50 virtual bool DisableHardwareBreakpoint (uint32_t hw_index) { return false; } 51 virtual bool DisableHardwareWatchpoint (uint32_t hw_index) { return false; } 52 virtual bool StepNotComplete () { return false; } 53}; 54 55 56#include "MacOSX/arm/DNBArchImpl.h" 57#include "MacOSX/i386/DNBArchImplI386.h" 58#include "MacOSX/x86_64/DNBArchImplX86_64.h" 59#include "MacOSX/ppc/DNBArchImpl.h" 60 61#endif 62