summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h')
-rw-r--r--lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h148
1 files changed, 0 insertions, 148 deletions
diff --git a/lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h b/lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h
deleted file mode 100644
index 761f433405b..00000000000
--- a/lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h
+++ /dev/null
@@ -1,148 +0,0 @@
-//===-- MachException.h -----------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-
-#ifndef liblldb_MachException_h_
-#define liblldb_MachException_h_
-
-#include <mach/mach.h>
-#include <vector>
-#include "lldb/lldb-private.h"
-#include "lldb/Target/Thread.h"
-// TODO: Get the config script to run to this plug-in
-//#include "PDConfig.h"
-#define HAVE_64_BIT_MACH_EXCEPTIONS // REMOVE THIS WHEN PDConfig.h is included above
-#ifdef HAVE_64_BIT_MACH_EXCEPTIONS
-
-#define MACH_EXCEPTION_DATA_FMT_DEC "%lld"
-#define MACH_EXCEPTION_DATA_FMT_HEX "0x%16.16llx"
-#define MACH_EXCEPTION_DATA_FMT_MINHEX "0x%llx"
-
-#else
-
-#define MACH_EXCEPTION_DATA_FMT_DEC "%d"
-#define MACH_EXCEPTION_DATA_FMT_HEX "0x%8.8x"
-#define MACH_EXCEPTION_DATA_FMT_MINHEX "0x%x"
-
-#endif
-
-class MachProcess;
-
-typedef union MachMessageTag
-{
- mach_msg_header_t hdr;
- char data[1024];
-} MachMessage;
-
-
-class MachException
-{
-public:
-
- struct PortInfo
- {
- exception_mask_t masks[EXC_TYPES_COUNT];
- mach_port_t ports[EXC_TYPES_COUNT];
- exception_behavior_t behaviors[EXC_TYPES_COUNT];
- thread_state_flavor_t flavors[EXC_TYPES_COUNT];
- mach_msg_type_number_t count;
-
- PortInfo();
- kern_return_t Save(task_t task);
- kern_return_t Restore(task_t task);
- };
-
- struct Data
- {
- task_t task_port;
- lldb::tid_t thread_port;
- exception_type_t exc_type;
- std::vector<lldb::addr_t> exc_data;
- Data() :
- task_port(TASK_NULL),
- thread_port(THREAD_NULL),
- exc_type(0),
- exc_data()
- {
- }
-
- void Clear()
- {
- task_port = TASK_NULL;
- thread_port = THREAD_NULL;
- exc_type = 0;
- exc_data.clear();
- }
- bool IsValid() const
- {
- return task_port != TASK_NULL &&
- thread_port != THREAD_NULL &&
- exc_type != 0;
- }
- // Return the SoftSignal for this MachException data, or zero if there is none
- int SoftSignal() const
- {
- if (exc_type == EXC_SOFTWARE && exc_data.size() == 2 && exc_data[0] == EXC_SOFT_SIGNAL)
- return exc_data[1];
- return LLDB_INVALID_SIGNAL_NUMBER;
- }
- bool IsBreakpoint() const
- {
- return (exc_type == EXC_BREAKPOINT) || ((exc_type == EXC_SOFTWARE) && exc_data[0] == 1);
- }
- void PutToLog(lldb_private::Log *log) const;
- void DumpStopReason() const;
- lldb::StopInfoSP GetStopInfo (lldb_private::Thread &thread) const;
- };
-
- struct Message
- {
- MachMessage exc_msg;
- MachMessage reply_msg;
- Data state;
-
- Message() :
- exc_msg(),
- reply_msg(),
- state()
- {
- memset(&exc_msg, 0, sizeof(exc_msg));
- memset(&reply_msg, 0, sizeof(reply_msg));
- }
- bool CatchExceptionRaise();
- void PutToLog(lldb_private::Log *log) const;
- kern_return_t Reply (task_t task, pid_t pid, int signal);
- kern_return_t Receive( mach_port_t receive_port,
- mach_msg_option_t options,
- mach_msg_timeout_t timeout,
- mach_port_t notify_port = MACH_PORT_NULL);
-
- typedef std::vector<Message> collection;
- typedef collection::iterator iterator;
- typedef collection::const_iterator const_iterator;
- };
-
- enum
- {
- e_actionForward, // Forward signal to inferior process
- e_actionStop // Stop when this signal is received
- };
- struct Action
- {
- task_t task_port; // Set to TASK_NULL for any TASK
- lldb::tid_t thread_port; // Set to THREAD_NULL for any thread
- exception_type_t exc_mask; // Mach exception mask to watch for
- std::vector<mach_exception_data_type_t> exc_data_mask; // Mask to apply to exception data, or empty to ignore exc_data value for exception
- std::vector<mach_exception_data_type_t> exc_data_value; // Value to compare to exception data after masking, or empty to ignore exc_data value for exception
- uint8_t flags; // Action flags describing what to do with the exception
- };
- static const char *Name(exception_type_t exc_type);
-};
-
-#endif
OpenPOWER on IntegriCloud