diff options
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gdb/target.c b/gdb/target.c index b50ec1c..0ce52ba 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1729,6 +1729,18 @@ target_signal_from_host (int hostsig) error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal"); } #endif + +#if defined (SIGRTMIN) + if (hostsig >= SIGRTMIN && hostsig <= SIGRTMAX) + { + /* This block of TARGET_SIGNAL_REALTIME value is in order. */ + if (33 <= hostsig && hostsig <= 63) + return (enum target_signal) + (hostsig - 33 + (int) TARGET_SIGNAL_REALTIME_33); + else + error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal"); + } +#endif return TARGET_SIGNAL_UNKNOWN; } @@ -1984,6 +1996,19 @@ do_target_signal_to_host (enum target_signal oursig, } #endif #endif + +#if defined (SIGRTMIN) + if (oursig >= TARGET_SIGNAL_REALTIME_33 + && oursig <= TARGET_SIGNAL_REALTIME_63) + { + /* This block of signals is continuous, and + TARGET_SIGNAL_REALTIME_33 is 33 by definition. */ + int retsig = + (int) oursig - (int) TARGET_SIGNAL_REALTIME_33 + 33; + if (retsig >= SIGRTMIN && retsig <= SIGRTMAX) + return retsig; + } +#endif *oursig_ok = 0; return 0; } |