1 //===-- StopInfoMachException.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 #ifndef liblldb_StopInfoMachException_h_ 11 #define liblldb_StopInfoMachException_h_ 12 13 // C Includes 14 // C++ Includes 15 #include <string> 16 17 // Other libraries and framework includes 18 // Project includes 19 #include "lldb/Target/StopInfo.h" 20 21 namespace lldb_private { 22 23 class StopInfoMachException : public StopInfo 24 { 25 public: 26 //------------------------------------------------------------------ 27 // Constructors and Destructors 28 //------------------------------------------------------------------ 29 StopInfoMachException (Thread &thread, 30 uint32_t exc_type, 31 uint32_t exc_data_count, 32 uint64_t exc_code, 33 uint64_t exc_subcode) : 34 StopInfo (thread, exc_type), 35 m_exc_data_count (exc_data_count), 36 m_exc_code (exc_code), 37 m_exc_subcode (exc_subcode) 38 { 39 } 40 41 virtual ~StopInfoMachException() 42 { 43 } 44 45 46 virtual lldb::StopReason 47 GetStopReason () const 48 { 49 return lldb::eStopReasonException; 50 } 51 52 virtual const char * 53 GetDescription (); 54 55 // Since some mach exceptions will be reported as breakpoints, signals, 56 // or trace, we use this static accessor which will translate the mach 57 // exception into the correct StopInfo. 58 static lldb::StopInfoSP 59 CreateStopReasonWithMachException (Thread &thread, 60 uint32_t exc_type, 61 uint32_t exc_data_count, 62 uint64_t exc_code, 63 uint64_t exc_sub_code, 64 uint64_t exc_sub_sub_code, 65 bool pc_already_adjusted = true, 66 bool adjust_pc_if_needed = false); 67 68 protected: 69 uint32_t m_exc_data_count; 70 uint64_t m_exc_code; 71 uint64_t m_exc_subcode; 72 }; 73 74 75 } // namespace lldb_private 76 77 #endif // liblldb_StopInfoMachException_h_ 78