aboutsummaryrefslogtreecommitdiff
path: root/gdb/target.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/target.c')
-rw-r--r--gdb/target.c25
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;
}