1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Target signal translation functions for GDB.
2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   2000, 2001, 2002, 2011 Free Software Foundation, Inc.
4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Contributed by Cygnus Support.
5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This file is part of GDB.
7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   It has been modified to integrate it in valgrind
8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This program is free software; you can redistribute it and/or modify
10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   it under the terms of the GNU General Public License as published by
11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   the Free Software Foundation; either version 2 of the License, or
12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   (at your option) any later version.
13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This program is distributed in the hope that it will be useful,
15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   but WITHOUT ANY WARRANTY; without even the implied warranty of
16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   GNU General Public License for more details.
18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   You should have received a copy of the GNU General Public License
20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   along with this program; if not, write to the Free Software
21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Foundation, Inc., 51 Franklin Street, Fifth Floor,
22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Boston, MA 02110-1301, USA.  */
23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include "server.h"
25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined(VGO_darwin)
27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// ???? darwin signal.h defines SIGPOLL conditionnally ????
28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef SIGPOLL
29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define SIGPOLL 7
30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum target_signal target_signal_from_name (char *name);
34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum target_signal target_signal_from_command (int num);
35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* This table must match in order and size the signals in enum target_signal
37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   in gdb/signals.h. */
38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* *INDENT-OFF* */
39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic struct {
40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   char *name;
41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   char *string;
42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} signals [] =
43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {
44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"0", "Signal 0"},
45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGHUP", "Hangup"},
46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGINT", "Interrupt"},
47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGQUIT", "Quit"},
48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGILL", "Illegal instruction"},
49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGTRAP", "Trace/breakpoint trap"},
50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGABRT", "Aborted"},
51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGEMT", "Emulation trap"},
52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGFPE", "Arithmetic exception"},
53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGKILL", "Killed"},
54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGBUS", "Bus error"},
55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGSEGV", "Segmentation fault"},
56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGSYS", "Bad system call"},
57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPIPE", "Broken pipe"},
58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGALRM", "Alarm clock"},
59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGTERM", "Terminated"},
60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGURG", "Urgent I/O condition"},
61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGSTOP", "Stopped (signal)"},
62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGTSTP", "Stopped (user)"},
63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGCONT", "Continued"},
64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGCHLD", "Child status changed"},
65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGTTIN", "Stopped (tty input)"},
66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGTTOU", "Stopped (tty output)"},
67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGIO", "I/O possible"},
68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGXCPU", "CPU time limit exceeded"},
69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGXFSZ", "File size limit exceeded"},
70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGVTALRM", "Virtual timer expired"},
71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPROF", "Profiling timer expired"},
72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGWINCH", "Window size changed"},
73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGLOST", "Resource lost"},
74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGUSR1", "User defined signal 1"},
75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGUSR2", "User defined signal 2"},
76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPWR", "Power fail/restart"},
77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPOLL", "Pollable event occurred"},
78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGWIND", "SIGWIND"},
79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPHONE", "SIGPHONE"},
80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGWAITING", "Process's LWPs are blocked"},
81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGLWP", "Signal LWP"},
82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGDANGER", "Swap space dangerously low"},
83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGGRANT", "Monitor mode granted"},
84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGRETRACT", "Need to relinquish monitor mode"},
85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGMSG", "Monitor mode data available"},
86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGSOUND", "Sound completed"},
87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGSAK", "Secure attention"},
88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGPRIO", "SIGPRIO"},
89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG33", "Real-time event 33"},
90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG34", "Real-time event 34"},
91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG35", "Real-time event 35"},
92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG36", "Real-time event 36"},
93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG37", "Real-time event 37"},
94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG38", "Real-time event 38"},
95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG39", "Real-time event 39"},
96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG40", "Real-time event 40"},
97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG41", "Real-time event 41"},
98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG42", "Real-time event 42"},
99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG43", "Real-time event 43"},
100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG44", "Real-time event 44"},
101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG45", "Real-time event 45"},
102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG46", "Real-time event 46"},
103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG47", "Real-time event 47"},
104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG48", "Real-time event 48"},
105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG49", "Real-time event 49"},
106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG50", "Real-time event 50"},
107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG51", "Real-time event 51"},
108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG52", "Real-time event 52"},
109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG53", "Real-time event 53"},
110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG54", "Real-time event 54"},
111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG55", "Real-time event 55"},
112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG56", "Real-time event 56"},
113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG57", "Real-time event 57"},
114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG58", "Real-time event 58"},
115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG59", "Real-time event 59"},
116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG60", "Real-time event 60"},
117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG61", "Real-time event 61"},
118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG62", "Real-time event 62"},
119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG63", "Real-time event 63"},
120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGCANCEL", "LWP internal signal"},
121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG32", "Real-time event 32"},
122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG64", "Real-time event 64"},
123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG65", "Real-time event 65"},
124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG66", "Real-time event 66"},
125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG67", "Real-time event 67"},
126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG68", "Real-time event 68"},
127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG69", "Real-time event 69"},
128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG70", "Real-time event 70"},
129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG71", "Real-time event 71"},
130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG72", "Real-time event 72"},
131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG73", "Real-time event 73"},
132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG74", "Real-time event 74"},
133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG75", "Real-time event 75"},
134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG76", "Real-time event 76"},
135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG77", "Real-time event 77"},
136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG78", "Real-time event 78"},
137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG79", "Real-time event 79"},
138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG80", "Real-time event 80"},
139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG81", "Real-time event 81"},
140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG82", "Real-time event 82"},
141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG83", "Real-time event 83"},
142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG84", "Real-time event 84"},
143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG85", "Real-time event 85"},
144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG86", "Real-time event 86"},
145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG87", "Real-time event 87"},
146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG88", "Real-time event 88"},
147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG89", "Real-time event 89"},
148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG90", "Real-time event 90"},
149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG91", "Real-time event 91"},
150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG92", "Real-time event 92"},
151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG93", "Real-time event 93"},
152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG94", "Real-time event 94"},
153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG95", "Real-time event 95"},
154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG96", "Real-time event 96"},
155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG97", "Real-time event 97"},
156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG98", "Real-time event 98"},
157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG99", "Real-time event 99"},
158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG100", "Real-time event 100"},
159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG101", "Real-time event 101"},
160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG102", "Real-time event 102"},
161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG103", "Real-time event 103"},
162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG104", "Real-time event 104"},
163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG105", "Real-time event 105"},
164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG106", "Real-time event 106"},
165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG107", "Real-time event 107"},
166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG108", "Real-time event 108"},
167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG109", "Real-time event 109"},
168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG110", "Real-time event 110"},
169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG111", "Real-time event 111"},
170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG112", "Real-time event 112"},
171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG113", "Real-time event 113"},
172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG114", "Real-time event 114"},
173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG115", "Real-time event 115"},
174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG116", "Real-time event 116"},
175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG117", "Real-time event 117"},
176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG118", "Real-time event 118"},
177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG119", "Real-time event 119"},
178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG120", "Real-time event 120"},
179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG121", "Real-time event 121"},
180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG122", "Real-time event 122"},
181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG123", "Real-time event 123"},
182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG124", "Real-time event 124"},
183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG125", "Real-time event 125"},
184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG126", "Real-time event 126"},
185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIG127", "Real-time event 127"},
186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"SIGINFO", "Information request"},
188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {NULL, "Unknown signal"},
190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {NULL, "Internal error: printing TARGET_SIGNAL_DEFAULT"},
191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* Mach exceptions */
193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_BAD_ACCESS", "Could not access memory"},
194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_BAD_INSTRUCTION", "Illegal instruction/operand"},
195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_ARITHMETIC", "Arithmetic exception"},
196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_EMULATION", "Emulation instruction"},
197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_SOFTWARE", "Software generated exception"},
198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {"EXC_BREAKPOINT", "Breakpoint"},
199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* Last entry, used to check whether the table is the right size.  */
201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      {NULL, "TARGET_SIGNAL_MAGIC"}
202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   };
203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* *INDENT-ON* */
204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Return the name for a signal.  */
208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovchar *target_signal_to_name (enum target_signal sig)
209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if ((sig >= TARGET_SIGNAL_FIRST) && (sig <= TARGET_SIGNAL_LAST)
211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov       && signals[sig].name != NULL)
212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return signals[sig].name;
213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   else
214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* I think the code which prints this will always print it along
215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         with the string, so no need to be verbose (very old comment).  */
216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return "?";
217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Given a name, return its signal.  */
220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum target_signal target_signal_from_name (char *name)
221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   enum target_signal sig;
223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   /* It's possible we also should allow "SIGCLD" as well as "SIGCHLD"
225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for TARGET_SIGNAL_SIGCHLD.  SIGIOT, on the other hand, is more
226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      questionable; seems like by now people should call it SIGABRT
227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instead.  */
228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   /* This ugly cast brought to you by the native VAX compiler.  */
230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (sig = TARGET_SIGNAL_HUP;
231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        sig < TARGET_SIGNAL_LAST;
232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        sig = (enum target_signal) ((int) sig + 1))
233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      if (signals[sig].name != NULL
234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov          && strcmp (name, signals[sig].name) == 0)
235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         return sig;
236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return TARGET_SIGNAL_UNKNOWN;
237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* The following functions are to help certain targets deal
241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   with the signal/waitstatus stuff.  They could just as well be in
242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   a file called native-utils.c or unixwaitstatus-utils.c or whatever.  */
243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Convert host signal to our signals.  */
245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum target_signal target_signal_from_host (int hostsig)
246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   /* A switch statement would make sense but would require special kludges
248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      to deal with the cases where more than one signal has the same number.  */
249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == 0)
251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_0;
252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGHUP)
254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGHUP)
255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_HUP;
256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGINT)
258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGINT)
259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_INT;
260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGQUIT)
262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGQUIT)
263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_QUIT;
264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGILL)
266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGILL)
267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_ILL;
268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTRAP)
270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGTRAP)
271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_TRAP;
272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGABRT)
274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGABRT)
275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_ABRT;
276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGEMT)
278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGEMT)
279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_EMT;
280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGFPE)
282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGFPE)
283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_FPE;
284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGKILL)
286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGKILL)
287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_KILL;
288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGBUS)
290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGBUS)
291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_BUS;
292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSEGV)
294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGSEGV)
295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_SEGV;
296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSYS)
298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGSYS)
299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_SYS;
300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPIPE)
302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPIPE)
303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_PIPE;
304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGALRM)
306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGALRM)
307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_ALRM;
308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTERM)
310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGTERM)
311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_TERM;
312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGUSR1)
314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGUSR1)
315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_USR1;
316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGUSR2)
318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGUSR2)
319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_USR2;
320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCLD)
322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGCLD)
323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_CHLD;
324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCHLD)
326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGCHLD)
327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_CHLD;
328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPWR)
330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPWR)
331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_PWR;
332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWINCH)
334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGWINCH)
335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_WINCH;
336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGURG)
338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGURG)
339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_URG;
340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGIO)
342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGIO)
343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_IO;
344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPOLL)
346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPOLL)
347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_POLL;
348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSTOP)
350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGSTOP)
351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_STOP;
352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTSTP)
354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGTSTP)
355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_TSTP;
356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCONT)
358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGCONT)
359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_CONT;
360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTTIN)
362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGTTIN)
363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_TTIN;
364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTTOU)
366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGTTOU)
367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_TTOU;
368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGVTALRM)
370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGVTALRM)
371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_VTALRM;
372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPROF)
374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPROF)
375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_PROF;
376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGXCPU)
378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGXCPU)
379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_XCPU;
380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGXFSZ)
382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGXFSZ)
383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_XFSZ;
384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWIND)
386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGWIND)
387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_WIND;
388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPHONE)
390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPHONE)
391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_PHONE;
392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGLOST)
394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGLOST)
395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_LOST;
396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWAITING)
398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGWAITING)
399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_WAITING;
400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCANCEL)
402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGCANCEL)
403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_CANCEL;
404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGLWP)
406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGLWP)
407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_LWP;
408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGDANGER)
410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGDANGER)
411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_DANGER;
412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGGRANT)
414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGGRANT)
415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_GRANT;
416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGRETRACT)
418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGRETRACT)
419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_RETRACT;
420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGMSG)
422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGMSG)
423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_MSG;
424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSOUND)
426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGSOUND)
427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_SOUND;
428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSAK)
430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGSAK)
431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_SAK;
432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPRIO)
434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGPRIO)
435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_PRIO;
436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   /* Mach exceptions.  Assumes that the values for EXC_ are positive! */
439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_BAD_ACCESS)
441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_BAD_ACCESS;
442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_BAD_INSTRUCTION)
445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_BAD_INSTRUCTION;
446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_ARITHMETIC) && defined (_NSIG)
448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_ARITHMETIC)
449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_ARITHMETIC;
450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_EMULATION) && defined (_NSIG)
452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_EMULATION)
453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_EMULATION;
454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_SOFTWARE) && defined (_NSIG)
456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_SOFTWARE)
457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_SOFTWARE;
458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BREAKPOINT) && defined (_NSIG)
460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == _NSIG + EXC_BREAKPOINT)
461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_EXC_BREAKPOINT;
462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGINFO)
465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (hostsig == VKI_SIGINFO)
466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return TARGET_SIGNAL_INFO;
467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return TARGET_SIGNAL_UNKNOWN;
470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Convert a OURSIG (an enum target_signal) to the form used by the
473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   target operating system (refered to as the ``host'') or zero if the
474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   equivalent host signal is not available.  Set/clear OURSIG_OK
475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   accordingly. */
476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic
478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint do_target_signal_to_host (enum target_signal oursig,
479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov			  int *oursig_ok)
480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   *oursig_ok = 1;
482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   switch (oursig) {
483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_0:
484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return 0;
485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGHUP)
487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_HUP:
488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGHUP;
489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGINT)
491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_INT:
492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGINT;
493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGQUIT)
495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_QUIT:
496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGQUIT;
497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGILL)
499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_ILL:
500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGILL;
501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTRAP)
503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_TRAP:
504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGTRAP;
505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGABRT)
507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_ABRT:
508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGABRT;
509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGEMT)
511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_EMT:
512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGEMT;
513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGFPE)
515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_FPE:
516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGFPE;
517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGKILL)
519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_KILL:
520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGKILL;
521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGBUS)
523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_BUS:
524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGBUS;
525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSEGV)
527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_SEGV:
528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGSEGV;
529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSYS)
531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_SYS:
532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGSYS;
533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPIPE)
535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_PIPE:
536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPIPE;
537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGALRM)
539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_ALRM:
540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGALRM;
541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTERM)
543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_TERM:
544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGTERM;
545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGUSR1)
547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_USR1:
548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGUSR1;
549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGUSR2)
551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_USR2:
552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGUSR2;
553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCHLD) || defined (VKI_SIGCLD)
555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_CHLD:
556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCHLD)
557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGCHLD;
558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGCLD;
560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* SIGCLD or SIGCHLD */
562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPWR)
563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_PWR:
564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPWR;
565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWINCH)
567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_WINCH:
568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGWINCH;
569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGURG)
571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_URG:
572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGURG;
573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGIO)
575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_IO:
576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGIO;
577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPOLL)
579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_POLL:
580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPOLL;
581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSTOP)
583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_STOP:
584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGSTOP;
585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTSTP)
587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_TSTP:
588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGTSTP;
589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCONT)
591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_CONT:
592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGCONT;
593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTTIN)
595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_TTIN:
596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGTTIN;
597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGTTOU)
599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_TTOU:
600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGTTOU;
601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGVTALRM)
603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_VTALRM:
604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGVTALRM;
605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPROF)
607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_PROF:
608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPROF;
609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGXCPU)
611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_XCPU:
612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGXCPU;
613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGXFSZ)
615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_XFSZ:
616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGXFSZ;
617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWIND)
619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_WIND:
620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGWIND;
621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPHONE)
623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_PHONE:
624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPHONE;
625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGLOST)
627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_LOST:
628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGLOST;
629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGWAITING)
631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_WAITING:
632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGWAITING;
633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGCANCEL)
635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_CANCEL:
636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGCANCEL;
637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGLWP)
639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_LWP:
640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGLWP;
641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGDANGER)
643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_DANGER:
644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGDANGER;
645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGGRANT)
647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_GRANT:
648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGGRANT;
649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGRETRACT)
651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_RETRACT:
652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGRETRACT;
653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGMSG)
655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_MSG:
656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGMSG;
657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSOUND)
659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_SOUND:
660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGSOUND;
661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGSAK)
663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_SAK:
664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGSAK;
665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGPRIO)
667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_PRIO:
668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGPRIO;
669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* Mach exceptions.  Assumes that the values for EXC_ are positive! */
672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_BAD_ACCESS:
674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_BAD_ACCESS;
675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_BAD_INSTRUCTION:
678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_BAD_INSTRUCTION;
679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_ARITHMETIC) && defined (_NSIG)
681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_ARITHMETIC:
682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_ARITHMETIC;
683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_EMULATION) && defined (_NSIG)
685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_EMULATION:
686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_EMULATION;
687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_SOFTWARE) && defined (_NSIG)
689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_SOFTWARE:
690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_SOFTWARE;
691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (EXC_BREAKPOINT) && defined (_NSIG)
693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_EXC_BREAKPOINT:
694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return _NSIG + EXC_BREAKPOINT;
695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (VKI_SIGINFO)
698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   case TARGET_SIGNAL_INFO:
699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return VKI_SIGINFO;
700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   default:
703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *oursig_ok = 0;
704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return 0;
705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint target_signal_to_host_p (enum target_signal oursig)
709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   int oursig_ok;
711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do_target_signal_to_host (oursig, &oursig_ok);
712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return oursig_ok;
713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint target_signal_to_host (enum target_signal oursig)
716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   int oursig_ok;
718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   int targ_signo = do_target_signal_to_host (oursig, &oursig_ok);
719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (!oursig_ok) {
720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* The user might be trying to do "signal SIGSAK" where this system
721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         doesn't have SIGSAK.  */
722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      warning ("Signal %s does not exist on this system.\n",
723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov               target_signal_to_name (oursig));
724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return 0;
725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return targ_signo;
727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* In some circumstances we allow a command to specify a numeric
731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   signal.  The idea is to keep these circumstances limited so that
732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   users (and scripts) develop portable habits.  For comparison,
733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   POSIX.2 `kill' requires that 1,2,3,6,9,14, and 15 work (and using a
734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   numeric signal at all is obsolescent.  We are slightly more
735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   lenient and allow 1-15 which should match host signal numbers on
736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   most systems.  Use of symbolic signal names is strongly encouraged.  */
737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum target_signal target_signal_from_command (int num)
739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (num >= 1 && num <= 15)
741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      return (enum target_signal) num;
742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   error ("Only signals 1-15 are valid as numeric signals.\n\
743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy StepanovUse \"info signals\" for a list of symbolic signals.\n");
744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
745