Index: gdb/target/waitstatus.h |
diff --git a/gdb/target/waitstatus.h b/gdb/target/waitstatus.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7b0316ce0705caf5d735389541b64d09ace799b1 |
--- /dev/null |
+++ b/gdb/target/waitstatus.h |
@@ -0,0 +1,126 @@ |
+/* Target waitstatus definitions and prototypes. |
+ |
+ Copyright (C) 1990-2013 Free Software Foundation, Inc. |
+ |
+ This file is part of GDB. |
+ |
+ This program is free software; you can redistribute it and/or modify |
+ it under the terms of the GNU General Public License as published by |
+ the Free Software Foundation; either version 3 of the License, or |
+ (at your option) any later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
+ |
+#ifndef WAITSTATUS_H |
+#define WAITSTATUS_H |
+ |
+#include "common-utils.h" |
+#include "ptid.h" |
+#include "gdb_signals.h" |
+ |
+/* Stuff for target_wait. */ |
+ |
+/* Generally, what has the program done? */ |
+enum target_waitkind |
+{ |
+ /* The program has exited. The exit status is in value.integer. */ |
+ TARGET_WAITKIND_EXITED, |
+ |
+ /* The program has stopped with a signal. Which signal is in |
+ value.sig. */ |
+ TARGET_WAITKIND_STOPPED, |
+ |
+ /* The program has terminated with a signal. Which signal is in |
+ value.sig. */ |
+ TARGET_WAITKIND_SIGNALLED, |
+ |
+ /* The program is letting us know that it dynamically loaded |
+ something (e.g. it called load(2) on AIX). */ |
+ TARGET_WAITKIND_LOADED, |
+ |
+ /* The program has forked. A "related" process' PTID is in |
+ value.related_pid. I.e., if the child forks, value.related_pid |
+ is the parent's ID. */ |
+ TARGET_WAITKIND_FORKED, |
+ |
+ /* The program has vforked. A "related" process's PTID is in |
+ value.related_pid. */ |
+ TARGET_WAITKIND_VFORKED, |
+ |
+ /* The program has exec'ed a new executable file. The new file's |
+ pathname is pointed to by value.execd_pathname. */ |
+ TARGET_WAITKIND_EXECD, |
+ |
+ /* The program had previously vforked, and now the child is done |
+ with the shared memory region, because it exec'ed or exited. |
+ Note that the event is reported to the vfork parent. This is |
+ only used if GDB did not stay attached to the vfork child, |
+ otherwise, a TARGET_WAITKIND_EXECD or |
+ TARGET_WAITKIND_EXIT|SIGNALLED event associated with the child |
+ has the same effect. */ |
+ TARGET_WAITKIND_VFORK_DONE, |
+ |
+ /* The program has entered or returned from a system call. On |
+ HP-UX, this is used in the hardware watchpoint implementation. |
+ The syscall's unique integer ID number is in |
+ value.syscall_id. */ |
+ TARGET_WAITKIND_SYSCALL_ENTRY, |
+ TARGET_WAITKIND_SYSCALL_RETURN, |
+ |
+ /* Nothing happened, but we stopped anyway. This perhaps should |
+ be handled within target_wait, but I'm not sure target_wait |
+ should be resuming the inferior. */ |
+ TARGET_WAITKIND_SPURIOUS, |
+ |
+ /* An event has occured, but we should wait again. |
+ Remote_async_wait() returns this when there is an event |
+ on the inferior, but the rest of the world is not interested in |
+ it. The inferior has not stopped, but has just sent some output |
+ to the console, for instance. In this case, we want to go back |
+ to the event loop and wait there for another event from the |
+ inferior, rather than being stuck in the remote_async_wait() |
+ function. This way the event loop is responsive to other events, |
+ like for instance the user typing. */ |
+ TARGET_WAITKIND_IGNORE, |
+ |
+ /* The target has run out of history information, |
+ and cannot run backward any further. */ |
+ TARGET_WAITKIND_NO_HISTORY, |
+ |
+ /* There are no resumed children left in the program. */ |
+ TARGET_WAITKIND_NO_RESUMED |
+}; |
+ |
+struct target_waitstatus |
+{ |
+ enum target_waitkind kind; |
+ |
+ /* Additional information about the event. */ |
+ union |
+ { |
+ /* Exit status */ |
+ int integer; |
+ /* Signal number */ |
+ enum gdb_signal sig; |
+ /* Forked child pid */ |
+ ptid_t related_pid; |
+ /* execd pathname */ |
+ char *execd_pathname; |
+ /* Syscall number */ |
+ int syscall_number; |
+ } value; |
+}; |
+ |
+/* Prototypes */ |
+ |
+/* Return a pretty printed form of target_waitstatus. |
+ Space for the result is malloc'd, caller must free. */ |
+extern char *target_waitstatus_to_string (const struct target_waitstatus *); |
+ |
+#endif /* WAITSTATUS_H */ |