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