You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.3 KiB

/*
* 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.
*/
// <COMPONENT>: debugger-protocol
// <FILE-TYPE>: 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 <signal.h> 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 /*<POD>*/ 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 /*<POD>*/ EVENT_INFO_MAC64
{
EVENT_INFO_MAC_VERSION _version; ///< Tells which fields in this structure are valid.
SIGINFO64 _siginfo; ///< Signal information.
};
} // namespace
#endif // file guard