1 /* Target signal translation functions for GDB.
2 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002 Free Software Foundation, Inc.
4 Contributed by Cygnus Support.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
32 /* This table must match in order and size the signals in enum target_signal
42 {"SIGINT", "Interrupt"},
44 {"SIGILL", "Illegal instruction"},
45 {"SIGTRAP", "Trace/breakpoint trap"},
46 {"SIGABRT", "Aborted"},
47 {"SIGEMT", "Emulation trap"},
48 {"SIGFPE", "Arithmetic exception"},
49 {"SIGKILL", "Killed"},
50 {"SIGBUS", "Bus error"},
51 {"SIGSEGV", "Segmentation fault"},
52 {"SIGSYS", "Bad system call"},
53 {"SIGPIPE", "Broken pipe"},
54 {"SIGALRM", "Alarm clock"},
55 {"SIGTERM", "Terminated"},
56 {"SIGURG", "Urgent I/O condition"},
57 {"SIGSTOP", "Stopped (signal)"},
58 {"SIGTSTP", "Stopped (user)"},
59 {"SIGCONT", "Continued"},
60 {"SIGCHLD", "Child status changed"},
61 {"SIGTTIN", "Stopped (tty input)"},
62 {"SIGTTOU", "Stopped (tty output)"},
63 {"SIGIO", "I/O possible"},
64 {"SIGXCPU", "CPU time limit exceeded"},
65 {"SIGXFSZ", "File size limit exceeded"},
66 {"SIGVTALRM", "Virtual timer expired"},
67 {"SIGPROF", "Profiling timer expired"},
68 {"SIGWINCH", "Window size changed"},
69 {"SIGLOST", "Resource lost"},
70 {"SIGUSR1", "User defined signal 1"},
71 {"SIGUSR2", "User defined signal 2"},
72 {"SIGPWR", "Power fail/restart"},
73 {"SIGPOLL", "Pollable event occurred"},
74 {"SIGWIND", "SIGWIND"},
75 {"SIGPHONE", "SIGPHONE"},
76 {"SIGWAITING", "Process's LWPs are blocked"},
77 {"SIGLWP", "Signal LWP"},
78 {"SIGDANGER", "Swap space dangerously low"},
79 {"SIGGRANT", "Monitor mode granted"},
80 {"SIGRETRACT", "Need to relinquish monitor mode"},
81 {"SIGMSG", "Monitor mode data available"},
82 {"SIGSOUND", "Sound completed"},
83 {"SIGSAK", "Secure attention"},
84 {"SIGPRIO", "SIGPRIO"},
85 {"SIG33", "Real-time event 33"},
86 {"SIG34", "Real-time event 34"},
87 {"SIG35", "Real-time event 35"},
88 {"SIG36", "Real-time event 36"},
89 {"SIG37", "Real-time event 37"},
90 {"SIG38", "Real-time event 38"},
91 {"SIG39", "Real-time event 39"},
92 {"SIG40", "Real-time event 40"},
93 {"SIG41", "Real-time event 41"},
94 {"SIG42", "Real-time event 42"},
95 {"SIG43", "Real-time event 43"},
96 {"SIG44", "Real-time event 44"},
97 {"SIG45", "Real-time event 45"},
98 {"SIG46", "Real-time event 46"},
99 {"SIG47", "Real-time event 47"},
100 {"SIG48", "Real-time event 48"},
101 {"SIG49", "Real-time event 49"},
102 {"SIG50", "Real-time event 50"},
103 {"SIG51", "Real-time event 51"},
104 {"SIG52", "Real-time event 52"},
105 {"SIG53", "Real-time event 53"},
106 {"SIG54", "Real-time event 54"},
107 {"SIG55", "Real-time event 55"},
108 {"SIG56", "Real-time event 56"},
109 {"SIG57", "Real-time event 57"},
110 {"SIG58", "Real-time event 58"},
111 {"SIG59", "Real-time event 59"},
112 {"SIG60", "Real-time event 60"},
113 {"SIG61", "Real-time event 61"},
114 {"SIG62", "Real-time event 62"},
115 {"SIG63", "Real-time event 63"},
116 {"SIGCANCEL", "LWP internal signal"},
117 {"SIG32", "Real-time event 32"},
118 {"SIG64", "Real-time event 64"},
119 {"SIG65", "Real-time event 65"},
120 {"SIG66", "Real-time event 66"},
121 {"SIG67", "Real-time event 67"},
122 {"SIG68", "Real-time event 68"},
123 {"SIG69", "Real-time event 69"},
124 {"SIG70", "Real-time event 70"},
125 {"SIG71", "Real-time event 71"},
126 {"SIG72", "Real-time event 72"},
127 {"SIG73", "Real-time event 73"},
128 {"SIG74", "Real-time event 74"},
129 {"SIG75", "Real-time event 75"},
130 {"SIG76", "Real-time event 76"},
131 {"SIG77", "Real-time event 77"},
132 {"SIG78", "Real-time event 78"},
133 {"SIG79", "Real-time event 79"},
134 {"SIG80", "Real-time event 80"},
135 {"SIG81", "Real-time event 81"},
136 {"SIG82", "Real-time event 82"},
137 {"SIG83", "Real-time event 83"},
138 {"SIG84", "Real-time event 84"},
139 {"SIG85", "Real-time event 85"},
140 {"SIG86", "Real-time event 86"},
141 {"SIG87", "Real-time event 87"},
142 {"SIG88", "Real-time event 88"},
143 {"SIG89", "Real-time event 89"},
144 {"SIG90", "Real-time event 90"},
145 {"SIG91", "Real-time event 91"},
146 {"SIG92", "Real-time event 92"},
147 {"SIG93", "Real-time event 93"},
148 {"SIG94", "Real-time event 94"},
149 {"SIG95", "Real-time event 95"},
150 {"SIG96", "Real-time event 96"},
151 {"SIG97", "Real-time event 97"},
152 {"SIG98", "Real-time event 98"},
153 {"SIG99", "Real-time event 99"},
154 {"SIG100", "Real-time event 100"},
155 {"SIG101", "Real-time event 101"},
156 {"SIG102", "Real-time event 102"},
157 {"SIG103", "Real-time event 103"},
158 {"SIG104", "Real-time event 104"},
159 {"SIG105", "Real-time event 105"},
160 {"SIG106", "Real-time event 106"},
161 {"SIG107", "Real-time event 107"},
162 {"SIG108", "Real-time event 108"},
163 {"SIG109", "Real-time event 109"},
164 {"SIG110", "Real-time event 110"},
165 {"SIG111", "Real-time event 111"},
166 {"SIG112", "Real-time event 112"},
167 {"SIG113", "Real-time event 113"},
168 {"SIG114", "Real-time event 114"},
169 {"SIG115", "Real-time event 115"},
170 {"SIG116", "Real-time event 116"},
171 {"SIG117", "Real-time event 117"},
172 {"SIG118", "Real-time event 118"},
173 {"SIG119", "Real-time event 119"},
174 {"SIG120", "Real-time event 120"},
175 {"SIG121", "Real-time event 121"},
176 {"SIG122", "Real-time event 122"},
177 {"SIG123", "Real-time event 123"},
178 {"SIG124", "Real-time event 124"},
179 {"SIG125", "Real-time event 125"},
180 {"SIG126", "Real-time event 126"},
181 {"SIG127", "Real-time event 127"},
183 {"SIGINFO", "Information request"},
185 {NULL
, "Unknown signal"},
186 {NULL
, "Internal error: printing TARGET_SIGNAL_DEFAULT"},
188 /* Mach exceptions */
189 {"EXC_BAD_ACCESS", "Could not access memory"},
190 {"EXC_BAD_INSTRUCTION", "Illegal instruction/operand"},
191 {"EXC_ARITHMETIC", "Arithmetic exception"},
192 {"EXC_EMULATION", "Emulation instruction"},
193 {"EXC_SOFTWARE", "Software generated exception"},
194 {"EXC_BREAKPOINT", "Breakpoint"},
196 /* Last entry, used to check whether the table is the right size. */
197 {NULL
, "TARGET_SIGNAL_MAGIC"}
203 /* Return the string for a signal. */
205 target_signal_to_string (enum target_signal sig
)
207 if ((sig
>= TARGET_SIGNAL_FIRST
) && (sig
<= TARGET_SIGNAL_LAST
))
208 return signals
[sig
].string
;
210 return signals
[TARGET_SIGNAL_UNKNOWN
].string
;
213 /* Return the name for a signal. */
215 target_signal_to_name (enum target_signal sig
)
217 if ((sig
>= TARGET_SIGNAL_FIRST
) && (sig
<= TARGET_SIGNAL_LAST
)
218 && signals
[sig
].name
!= NULL
)
219 return signals
[sig
].name
;
221 /* I think the code which prints this will always print it along
222 with the string, so no need to be verbose (very old comment). */
226 /* Given a name, return its signal. */
228 target_signal_from_name (char *name
)
230 enum target_signal sig
;
232 /* It's possible we also should allow "SIGCLD" as well as "SIGCHLD"
233 for TARGET_SIGNAL_SIGCHLD. SIGIOT, on the other hand, is more
234 questionable; seems like by now people should call it SIGABRT
237 /* This ugly cast brought to you by the native VAX compiler. */
238 for (sig
= TARGET_SIGNAL_HUP
;
239 sig
< TARGET_SIGNAL_LAST
;
240 sig
= (enum target_signal
) ((int) sig
+ 1))
241 if (signals
[sig
].name
!= NULL
242 && strcmp (name
, signals
[sig
].name
) == 0)
244 return TARGET_SIGNAL_UNKNOWN
;
247 /* The following functions are to help certain targets deal
248 with the signal/waitstatus stuff. They could just as well be in
249 a file called native-utils.c or unixwaitstatus-utils.c or whatever. */
251 /* Convert host signal to our signals. */
253 target_signal_from_host (int hostsig
)
255 /* A switch statement would make sense but would require special kludges
256 to deal with the cases where more than one signal has the same number. */
259 return TARGET_SIGNAL_0
;
262 if (hostsig
== SIGHUP
)
263 return TARGET_SIGNAL_HUP
;
266 if (hostsig
== SIGINT
)
267 return TARGET_SIGNAL_INT
;
269 #if defined (SIGQUIT)
270 if (hostsig
== SIGQUIT
)
271 return TARGET_SIGNAL_QUIT
;
274 if (hostsig
== SIGILL
)
275 return TARGET_SIGNAL_ILL
;
277 #if defined (SIGTRAP)
278 if (hostsig
== SIGTRAP
)
279 return TARGET_SIGNAL_TRAP
;
281 #if defined (SIGABRT)
282 if (hostsig
== SIGABRT
)
283 return TARGET_SIGNAL_ABRT
;
286 if (hostsig
== SIGEMT
)
287 return TARGET_SIGNAL_EMT
;
290 if (hostsig
== SIGFPE
)
291 return TARGET_SIGNAL_FPE
;
293 #if defined (SIGKILL)
294 if (hostsig
== SIGKILL
)
295 return TARGET_SIGNAL_KILL
;
298 if (hostsig
== SIGBUS
)
299 return TARGET_SIGNAL_BUS
;
301 #if defined (SIGSEGV)
302 if (hostsig
== SIGSEGV
)
303 return TARGET_SIGNAL_SEGV
;
306 if (hostsig
== SIGSYS
)
307 return TARGET_SIGNAL_SYS
;
309 #if defined (SIGPIPE)
310 if (hostsig
== SIGPIPE
)
311 return TARGET_SIGNAL_PIPE
;
313 #if defined (SIGALRM)
314 if (hostsig
== SIGALRM
)
315 return TARGET_SIGNAL_ALRM
;
317 #if defined (SIGTERM)
318 if (hostsig
== SIGTERM
)
319 return TARGET_SIGNAL_TERM
;
321 #if defined (SIGUSR1)
322 if (hostsig
== SIGUSR1
)
323 return TARGET_SIGNAL_USR1
;
325 #if defined (SIGUSR2)
326 if (hostsig
== SIGUSR2
)
327 return TARGET_SIGNAL_USR2
;
330 if (hostsig
== SIGCLD
)
331 return TARGET_SIGNAL_CHLD
;
333 #if defined (SIGCHLD)
334 if (hostsig
== SIGCHLD
)
335 return TARGET_SIGNAL_CHLD
;
338 if (hostsig
== SIGPWR
)
339 return TARGET_SIGNAL_PWR
;
341 #if defined (SIGWINCH)
342 if (hostsig
== SIGWINCH
)
343 return TARGET_SIGNAL_WINCH
;
346 if (hostsig
== SIGURG
)
347 return TARGET_SIGNAL_URG
;
350 if (hostsig
== SIGIO
)
351 return TARGET_SIGNAL_IO
;
353 #if defined (SIGPOLL)
354 if (hostsig
== SIGPOLL
)
355 return TARGET_SIGNAL_POLL
;
357 #if defined (SIGSTOP)
358 if (hostsig
== SIGSTOP
)
359 return TARGET_SIGNAL_STOP
;
361 #if defined (SIGTSTP)
362 if (hostsig
== SIGTSTP
)
363 return TARGET_SIGNAL_TSTP
;
365 #if defined (SIGCONT)
366 if (hostsig
== SIGCONT
)
367 return TARGET_SIGNAL_CONT
;
369 #if defined (SIGTTIN)
370 if (hostsig
== SIGTTIN
)
371 return TARGET_SIGNAL_TTIN
;
373 #if defined (SIGTTOU)
374 if (hostsig
== SIGTTOU
)
375 return TARGET_SIGNAL_TTOU
;
377 #if defined (SIGVTALRM)
378 if (hostsig
== SIGVTALRM
)
379 return TARGET_SIGNAL_VTALRM
;
381 #if defined (SIGPROF)
382 if (hostsig
== SIGPROF
)
383 return TARGET_SIGNAL_PROF
;
385 #if defined (SIGXCPU)
386 if (hostsig
== SIGXCPU
)
387 return TARGET_SIGNAL_XCPU
;
389 #if defined (SIGXFSZ)
390 if (hostsig
== SIGXFSZ
)
391 return TARGET_SIGNAL_XFSZ
;
393 #if defined (SIGWIND)
394 if (hostsig
== SIGWIND
)
395 return TARGET_SIGNAL_WIND
;
397 #if defined (SIGPHONE)
398 if (hostsig
== SIGPHONE
)
399 return TARGET_SIGNAL_PHONE
;
401 #if defined (SIGLOST)
402 if (hostsig
== SIGLOST
)
403 return TARGET_SIGNAL_LOST
;
405 #if defined (SIGWAITING)
406 if (hostsig
== SIGWAITING
)
407 return TARGET_SIGNAL_WAITING
;
409 #if defined (SIGCANCEL)
410 if (hostsig
== SIGCANCEL
)
411 return TARGET_SIGNAL_CANCEL
;
414 if (hostsig
== SIGLWP
)
415 return TARGET_SIGNAL_LWP
;
417 #if defined (SIGDANGER)
418 if (hostsig
== SIGDANGER
)
419 return TARGET_SIGNAL_DANGER
;
421 #if defined (SIGGRANT)
422 if (hostsig
== SIGGRANT
)
423 return TARGET_SIGNAL_GRANT
;
425 #if defined (SIGRETRACT)
426 if (hostsig
== SIGRETRACT
)
427 return TARGET_SIGNAL_RETRACT
;
430 if (hostsig
== SIGMSG
)
431 return TARGET_SIGNAL_MSG
;
433 #if defined (SIGSOUND)
434 if (hostsig
== SIGSOUND
)
435 return TARGET_SIGNAL_SOUND
;
438 if (hostsig
== SIGSAK
)
439 return TARGET_SIGNAL_SAK
;
441 #if defined (SIGPRIO)
442 if (hostsig
== SIGPRIO
)
443 return TARGET_SIGNAL_PRIO
;
446 /* Mach exceptions. Assumes that the values for EXC_ are positive! */
447 #if defined (EXC_BAD_ACCESS) && defined (_NSIG)
448 if (hostsig
== _NSIG
+ EXC_BAD_ACCESS
)
449 return TARGET_EXC_BAD_ACCESS
;
451 #if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
452 if (hostsig
== _NSIG
+ EXC_BAD_INSTRUCTION
)
453 return TARGET_EXC_BAD_INSTRUCTION
;
455 #if defined (EXC_ARITHMETIC) && defined (_NSIG)
456 if (hostsig
== _NSIG
+ EXC_ARITHMETIC
)
457 return TARGET_EXC_ARITHMETIC
;
459 #if defined (EXC_EMULATION) && defined (_NSIG)
460 if (hostsig
== _NSIG
+ EXC_EMULATION
)
461 return TARGET_EXC_EMULATION
;
463 #if defined (EXC_SOFTWARE) && defined (_NSIG)
464 if (hostsig
== _NSIG
+ EXC_SOFTWARE
)
465 return TARGET_EXC_SOFTWARE
;
467 #if defined (EXC_BREAKPOINT) && defined (_NSIG)
468 if (hostsig
== _NSIG
+ EXC_BREAKPOINT
)
469 return TARGET_EXC_BREAKPOINT
;
472 #if defined (SIGINFO)
473 if (hostsig
== SIGINFO
)
474 return TARGET_SIGNAL_INFO
;
477 #if defined (REALTIME_LO)
478 if (hostsig
>= REALTIME_LO
&& hostsig
< REALTIME_HI
)
480 /* This block of TARGET_SIGNAL_REALTIME value is in order. */
481 if (33 <= hostsig
&& hostsig
<= 63)
482 return (enum target_signal
)
483 (hostsig
- 33 + (int) TARGET_SIGNAL_REALTIME_33
);
484 else if (hostsig
== 32)
485 return TARGET_SIGNAL_REALTIME_32
;
486 else if (64 <= hostsig
&& hostsig
<= 127)
487 return (enum target_signal
)
488 (hostsig
- 64 + (int) TARGET_SIGNAL_REALTIME_64
);
490 error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal");
494 #if defined (SIGRTMIN)
495 if (hostsig
>= SIGRTMIN
&& hostsig
<= SIGRTMAX
)
497 /* This block of TARGET_SIGNAL_REALTIME value is in order. */
498 if (33 <= hostsig
&& hostsig
<= 63)
499 return (enum target_signal
)
500 (hostsig
- 33 + (int) TARGET_SIGNAL_REALTIME_33
);
501 else if (hostsig
== 64)
502 return TARGET_SIGNAL_REALTIME_64
;
504 error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal");
507 return TARGET_SIGNAL_UNKNOWN
;
510 /* Convert a OURSIG (an enum target_signal) to the form used by the
511 target operating system (refered to as the ``host'') or zero if the
512 equivalent host signal is not available. Set/clear OURSIG_OK
516 do_target_signal_to_host (enum target_signal oursig
,
522 case TARGET_SIGNAL_0
:
526 case TARGET_SIGNAL_HUP
:
530 case TARGET_SIGNAL_INT
:
533 #if defined (SIGQUIT)
534 case TARGET_SIGNAL_QUIT
:
538 case TARGET_SIGNAL_ILL
:
541 #if defined (SIGTRAP)
542 case TARGET_SIGNAL_TRAP
:
545 #if defined (SIGABRT)
546 case TARGET_SIGNAL_ABRT
:
550 case TARGET_SIGNAL_EMT
:
554 case TARGET_SIGNAL_FPE
:
557 #if defined (SIGKILL)
558 case TARGET_SIGNAL_KILL
:
562 case TARGET_SIGNAL_BUS
:
565 #if defined (SIGSEGV)
566 case TARGET_SIGNAL_SEGV
:
570 case TARGET_SIGNAL_SYS
:
573 #if defined (SIGPIPE)
574 case TARGET_SIGNAL_PIPE
:
577 #if defined (SIGALRM)
578 case TARGET_SIGNAL_ALRM
:
581 #if defined (SIGTERM)
582 case TARGET_SIGNAL_TERM
:
585 #if defined (SIGUSR1)
586 case TARGET_SIGNAL_USR1
:
589 #if defined (SIGUSR2)
590 case TARGET_SIGNAL_USR2
:
593 #if defined (SIGCHLD) || defined (SIGCLD)
594 case TARGET_SIGNAL_CHLD
:
595 #if defined (SIGCHLD)
600 #endif /* SIGCLD or SIGCHLD */
602 case TARGET_SIGNAL_PWR
:
605 #if defined (SIGWINCH)
606 case TARGET_SIGNAL_WINCH
:
610 case TARGET_SIGNAL_URG
:
614 case TARGET_SIGNAL_IO
:
617 #if defined (SIGPOLL)
618 case TARGET_SIGNAL_POLL
:
621 #if defined (SIGSTOP)
622 case TARGET_SIGNAL_STOP
:
625 #if defined (SIGTSTP)
626 case TARGET_SIGNAL_TSTP
:
629 #if defined (SIGCONT)
630 case TARGET_SIGNAL_CONT
:
633 #if defined (SIGTTIN)
634 case TARGET_SIGNAL_TTIN
:
637 #if defined (SIGTTOU)
638 case TARGET_SIGNAL_TTOU
:
641 #if defined (SIGVTALRM)
642 case TARGET_SIGNAL_VTALRM
:
645 #if defined (SIGPROF)
646 case TARGET_SIGNAL_PROF
:
649 #if defined (SIGXCPU)
650 case TARGET_SIGNAL_XCPU
:
653 #if defined (SIGXFSZ)
654 case TARGET_SIGNAL_XFSZ
:
657 #if defined (SIGWIND)
658 case TARGET_SIGNAL_WIND
:
661 #if defined (SIGPHONE)
662 case TARGET_SIGNAL_PHONE
:
665 #if defined (SIGLOST)
666 case TARGET_SIGNAL_LOST
:
669 #if defined (SIGWAITING)
670 case TARGET_SIGNAL_WAITING
:
673 #if defined (SIGCANCEL)
674 case TARGET_SIGNAL_CANCEL
:
678 case TARGET_SIGNAL_LWP
:
681 #if defined (SIGDANGER)
682 case TARGET_SIGNAL_DANGER
:
685 #if defined (SIGGRANT)
686 case TARGET_SIGNAL_GRANT
:
689 #if defined (SIGRETRACT)
690 case TARGET_SIGNAL_RETRACT
:
694 case TARGET_SIGNAL_MSG
:
697 #if defined (SIGSOUND)
698 case TARGET_SIGNAL_SOUND
:
702 case TARGET_SIGNAL_SAK
:
705 #if defined (SIGPRIO)
706 case TARGET_SIGNAL_PRIO
:
710 /* Mach exceptions. Assumes that the values for EXC_ are positive! */
711 #if defined (EXC_BAD_ACCESS) && defined (_NSIG)
712 case TARGET_EXC_BAD_ACCESS
:
713 return _NSIG
+ EXC_BAD_ACCESS
;
715 #if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
716 case TARGET_EXC_BAD_INSTRUCTION
:
717 return _NSIG
+ EXC_BAD_INSTRUCTION
;
719 #if defined (EXC_ARITHMETIC) && defined (_NSIG)
720 case TARGET_EXC_ARITHMETIC
:
721 return _NSIG
+ EXC_ARITHMETIC
;
723 #if defined (EXC_EMULATION) && defined (_NSIG)
724 case TARGET_EXC_EMULATION
:
725 return _NSIG
+ EXC_EMULATION
;
727 #if defined (EXC_SOFTWARE) && defined (_NSIG)
728 case TARGET_EXC_SOFTWARE
:
729 return _NSIG
+ EXC_SOFTWARE
;
731 #if defined (EXC_BREAKPOINT) && defined (_NSIG)
732 case TARGET_EXC_BREAKPOINT
:
733 return _NSIG
+ EXC_BREAKPOINT
;
736 #if defined (SIGINFO)
737 case TARGET_SIGNAL_INFO
:
742 #if defined (REALTIME_LO)
743 if (oursig
>= TARGET_SIGNAL_REALTIME_33
744 && oursig
<= TARGET_SIGNAL_REALTIME_63
)
746 /* This block of signals is continuous, and
747 TARGET_SIGNAL_REALTIME_33 is 33 by definition. */
749 (int) oursig
- (int) TARGET_SIGNAL_REALTIME_33
+ 33;
750 if (retsig
>= REALTIME_LO
&& retsig
< REALTIME_HI
)
753 #if (REALTIME_LO < 33)
754 else if (oursig
== TARGET_SIGNAL_REALTIME_32
)
756 /* TARGET_SIGNAL_REALTIME_32 isn't contiguous with
757 TARGET_SIGNAL_REALTIME_33. It is 32 by definition. */
761 #if (REALTIME_HI > 64)
762 if (oursig
>= TARGET_SIGNAL_REALTIME_64
763 && oursig
<= TARGET_SIGNAL_REALTIME_127
)
765 /* This block of signals is continuous, and
766 TARGET_SIGNAL_REALTIME_64 is 64 by definition. */
768 (int) oursig
- (int) TARGET_SIGNAL_REALTIME_64
+ 64;
769 if (retsig
>= REALTIME_LO
&& retsig
< REALTIME_HI
)
776 #if defined (SIGRTMIN)
777 if (oursig
>= TARGET_SIGNAL_REALTIME_33
778 && oursig
<= TARGET_SIGNAL_REALTIME_63
)
780 /* This block of signals is continuous, and
781 TARGET_SIGNAL_REALTIME_33 is 33 by definition. */
783 (int) oursig
- (int) TARGET_SIGNAL_REALTIME_33
+ 33;
784 if (retsig
>= SIGRTMIN
&& retsig
<= SIGRTMAX
)
787 else if (oursig
== TARGET_SIGNAL_REALTIME_64
)
796 target_signal_to_host_p (enum target_signal oursig
)
799 do_target_signal_to_host (oursig
, &oursig_ok
);
804 target_signal_to_host (enum target_signal oursig
)
807 int targ_signo
= do_target_signal_to_host (oursig
, &oursig_ok
);
810 /* The user might be trying to do "signal SIGSAK" where this system
811 doesn't have SIGSAK. */
812 warning ("Signal %s does not exist on this system.\n",
813 target_signal_to_name (oursig
));
820 /* In some circumstances we allow a command to specify a numeric
821 signal. The idea is to keep these circumstances limited so that
822 users (and scripts) develop portable habits. For comparison,
823 POSIX.2 `kill' requires that 1,2,3,6,9,14, and 15 work (and using a
824 numeric signal at all is obsolescent. We are slightly more
825 lenient and allow 1-15 which should match host signal numbers on
826 most systems. Use of symbolic signal names is strongly encouraged. */
829 target_signal_from_command (int num
)
831 if (num
>= 1 && num
<= 15)
832 return (enum target_signal
) num
;
833 error ("Only signals 1-15 are valid as numeric signals.\n\
834 Use \"info signals\" for a list of symbolic signals.");
839 _initialize_signals (void)
841 if (strcmp (signals
[TARGET_SIGNAL_LAST
].string
, "TARGET_SIGNAL_MAGIC") != 0)
842 internal_error (__FILE__
, __LINE__
, "failed internal consistency check");