Home | History | Annotate | Download | only in POSIX
      1 //===-- POSIXStopInfo.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_POSIXStopInfo_H_
     11 #define liblldb_POSIXStopInfo_H_
     12 
     13 // C Includes
     14 // C++ Includes
     15 // Other libraries and framework includes
     16 // Project includes
     17 #include "lldb/Target/StopInfo.h"
     18 
     19 #include "POSIXThread.h"
     20 #include "ProcessMessage.h"
     21 
     22 //===----------------------------------------------------------------------===//
     23 /// @class POSIXStopInfo
     24 /// @brief Simple base class for all POSIX-specific StopInfo objects.
     25 ///
     26 class POSIXStopInfo
     27     : public lldb_private::StopInfo
     28 {
     29 public:
     30     POSIXStopInfo(lldb_private::Thread &thread, uint32_t status)
     31         : StopInfo(thread, status)
     32         { }
     33 };
     34 
     35 //===----------------------------------------------------------------------===//
     36 /// @class POSIXLimboStopInfo
     37 /// @brief Represents the stop state of a process ready to exit.
     38 ///
     39 class POSIXLimboStopInfo
     40     : public POSIXStopInfo
     41 {
     42 public:
     43     POSIXLimboStopInfo(POSIXThread &thread)
     44         : POSIXStopInfo(thread, 0)
     45         { }
     46 
     47     ~POSIXLimboStopInfo();
     48 
     49     lldb::StopReason
     50     GetStopReason() const;
     51 
     52     const char *
     53     GetDescription();
     54 
     55     bool
     56     ShouldStop(lldb_private::Event *event_ptr);
     57 
     58     bool
     59     ShouldNotify(lldb_private::Event *event_ptr);
     60 };
     61 
     62 
     63 //===----------------------------------------------------------------------===//
     64 /// @class POSIXCrashStopInfo
     65 /// @brief Represents the stop state of process that is ready to crash.
     66 ///
     67 class POSIXCrashStopInfo
     68     : public POSIXStopInfo
     69 {
     70 public:
     71     POSIXCrashStopInfo(POSIXThread &thread, uint32_t status,
     72                        ProcessMessage::CrashReason reason,
     73                        lldb::addr_t fault_addr)
     74         : POSIXStopInfo(thread, status),
     75           m_crash_reason(reason),
     76           m_fault_addr(fault_addr)
     77         { }
     78 
     79     ~POSIXCrashStopInfo();
     80 
     81     lldb::StopReason
     82     GetStopReason() const;
     83 
     84     const char *
     85     GetDescription();
     86 
     87 private:
     88     ProcessMessage::CrashReason m_crash_reason;
     89     lldb::addr_t m_fault_addr;
     90 };
     91 
     92 //===----------------------------------------------------------------------===//
     93 /// @class POSIXNewThreadStopInfo
     94 /// @brief Represents the stop state of process when a new thread is spawned.
     95 ///
     96 
     97 class POSIXNewThreadStopInfo
     98     : public POSIXStopInfo
     99 {
    100 public:
    101     POSIXNewThreadStopInfo (POSIXThread &thread)
    102         : POSIXStopInfo (thread, 0)
    103         { }
    104 
    105     ~POSIXNewThreadStopInfo();
    106 
    107     lldb::StopReason
    108     GetStopReason() const;
    109 
    110     const char *
    111     GetDescription();
    112 
    113     bool
    114     ShouldStop(lldb_private::Event *event_ptr);
    115 
    116     bool
    117     ShouldNotify(lldb_private::Event *event_ptr);
    118 };
    119 
    120 #endif
    121