/* * Copyright 2002-2019 Intel Corporation. * * This software and the related documents are Intel copyrighted materials, and your * use of them is governed by the express license under which they were provided to * you ("License"). Unless the License provides otherwise, you may not use, modify, * copy, publish, distribute, disclose or transmit this software or the related * documents without Intel's prior written permission. * * This software and the related documents are provided as is, with no express or * implied warranties, other than those that are expressly stated in the License. */ // : debugger-protocol // : component public header #ifndef DEBUGGER_PROTOCOL_EVENT_MAC_HPP #define DEBUGGER_PROTOCOL_EVENT_MAC_HPP #include "debugger-protocol.hpp" #include "debugger-protocol/event-linux.hpp" namespace DEBUGGER_PROTOCOL { /*! * The macOS* signal numbers. These are the same values defined in the system header. */ enum MAC_SIGNAL { MAC_SIGNAL_HUP = 1, MAC_SIGNAL_INT = 2, MAC_SIGNAL_QUIT = 3, MAC_SIGNAL_ILL = 4, MAC_SIGNAL_TRAP = 5, MAC_SIGNAL_ABRT = 6, MAC_SIGNAL_EMT = 7, MAC_SIGNAL_FPE = 8, MAC_SIGNAL_KILL = 9, MAC_SIGNAL_BUS = 10, MAC_SIGNAL_SEGV = 11, MAC_SIGNAL_SYS = 12, MAC_SIGNAL_PIPE = 13, MAC_SIGNAL_ALRM = 14, MAC_SIGNAL_TERM = 15, MAC_SIGNAL_URG = 16, MAC_SIGNAL_STOP = 17, MAC_SIGNAL_TSTP = 18, MAC_SIGNAL_CONT = 19, MAC_SIGNAL_CHLD = 20, MAC_SIGNAL_TTIN = 21, MAC_SIGNAL_TTOU = 22, MAC_SIGNAL_IO = 23, MAC_SIGNAL_XCPU = 24, MAC_SIGNAL_XFSZ = 25, MAC_SIGNAL_VTALRM = 26, MAC_SIGNAL_PROF = 27, MAC_SIGNAL_WINCH = 28, MAC_SIGNAL_INFO = 29, MAC_SIGNAL_USR1 = 30, MAC_SIGNAL_USR2 = 31 }; #if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. /*! * When LLDB connects to an macOS* process, it expects that these signals are initially not * intercepted. If a back-end connects to a debugger of type FRONTEND_TYPE_LLDB, the * back-end should arrange for these signals to be handled internally by the process, * without notifying LLDB. Note that these are only an initial default setting. LLDB may * explicitly ask to intercept these signals later via IEVENT_INTERCEPTION. */ DEBUGGER_PROTOCOL_API EVENT DefaultMacSignalsNotInterceptedByGdb[] = { MAC_SIGNAL_ALRM, MAC_SIGNAL_URG, MAC_SIGNAL_CHLD, MAC_SIGNAL_VTALRM, MAC_SIGNAL_PROF, MAC_SIGNAL_WINCH }; /*! * Number of entries in DefaultMacSignalsNotInterceptedByGdb. */ DEBUGGER_PROTOCOL_API unsigned DefaultMacSignalsNotInterceptedByGdbCount = sizeof(DefaultMacSignalsNotInterceptedByGdb) / sizeof(DefaultMacSignalsNotInterceptedByGdb[0]); #else /*! * Signals not initially intercepted by GDB. */ DEBUGGER_PROTOCOL_API extern EVENT DefaultMacSignalsNotInterceptedByGdb[]; /*! * Number entries in DefaultMacSignalsNotInterceptedByGdb. */ DEBUGGER_PROTOCOL_API extern unsigned DefaultMacSignalsNotInterceptedByGdbCount; #endif /*! * In the future, new fields may be added to the end of the EVENT_INFO_MAC32 * or EVENT_INFO_MAC64 structures. If this happens, clients can use the * \e _version field to retain backward compatibility. * * When a client writes information to these structures, it should set \e _version * to the latest version that it supports. * * When a client reads these structures, it should use \e _version to tell which * fields are valid. A client should allow that \e _version may be greater than * the newest version it knows about, which happens if an older front-end runs * with a newer back-end or vice-versa. */ enum EVENT_INFO_MAC_VERSION { EVENT_INFO_MAC_VERSION_0 ///< This is the only defined version currently. }; /*! * Information about a signal received on a 32-bit macOS* target. */ struct /**/ EVENT_INFO_MAC32 { EVENT_INFO_MAC_VERSION _version; ///< Tells which fields in this structure are valid. SIGINFO32 _siginfo; ///< Signal information. }; /*! * Information about a signal received on a 64-bit macOS* target. */ struct /**/ EVENT_INFO_MAC64 { EVENT_INFO_MAC_VERSION _version; ///< Tells which fields in this structure are valid. SIGINFO64 _siginfo; ///< Signal information. }; } // namespace #endif // file guard