1 //===-- StopInfoMachException.h ---------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_StopInfoMachException_h_
11 #define liblldb_StopInfoMachException_h_
17 // Other libraries and framework includes
19 #include "lldb/Target/StopInfo.h"
21 namespace lldb_private {
23 class StopInfoMachException : public StopInfo
26 //------------------------------------------------------------------
27 // Constructors and Destructors
28 //------------------------------------------------------------------
29 StopInfoMachException (Thread &thread,
31 uint32_t exc_data_count,
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)
41 virtual ~StopInfoMachException()
46 virtual lldb::StopReason
47 GetStopReason () const
49 return lldb::eStopReasonException;
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,
61 uint32_t exc_data_count,
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);
69 uint32_t m_exc_data_count;
71 uint64_t m_exc_subcode;
75 } // namespace lldb_private
77 #endif // liblldb_StopInfoMachException_h_