summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2000-02-16 22:26:12 +0000
committerMark Kettenis <kettenis@gnu.org>2000-02-16 22:26:12 +0000
commit8ed66a6beac72807430d880b0bee2475f8e04ccb (patch)
treeff14324c1cece5e5b653bdf92cb2c279b6ffea35 /gdb
parentd4c8de4007158191806e762a8f93ecfcff1a1861 (diff)
downloadgdb-8ed66a6beac72807430d880b0bee2475f8e04ccb.tar.gz
2000-02-16 Mark Kettenis <kettenis@gnu.org>
* target.c (do_target_signal_to_host): Do not use REALTIME_LO in the conversion of the signal number. TARGET_SIGNAL_REALTIME_33 is 33 by definition, whereas REALTIME_LO might be 32 on systems that have SIG32 such as Linux. Make sure that the signal number returned is within the range specified by REALTIME_LO and REALTIME_HI.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/target.c16
2 files changed, 21 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ad14714210c..34ad4a559d8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2000-02-16 Mark Kettenis <kettenis@gnu.org>
+ * target.c (do_target_signal_to_host): Do not use REALTIME_LO in
+ the conversion of the signal number. TARGET_SIGNAL_REALTIME_33 is
+ 33 by definition, whereas REALTIME_LO might be 32 on systems that
+ have SIG32 such as Linux. Make sure that the signal number
+ returned is within the range specified by REALTIME_LO and
+ REALTIME_HI.
+
+2000-02-16 Mark Kettenis <kettenis@gnu.org>
+
* configure: Regenerated.
2000-02-16 Fernando Nasser <fnasser@totem.to.cygnus.com>
diff --git a/gdb/target.c b/gdb/target.c
index 0142aaa93b6..fa9cf88a108 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -2022,8 +2022,6 @@ do_target_signal_to_host (enum target_signal oursig,
return SIGPRIO;
#endif
- case TARGET_SIGNAL_REALTIME_32: return 32; /* by definition */
-
/* Mach exceptions. Assumes that the values for EXC_ are positive! */
#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
case TARGET_EXC_BAD_ACCESS:
@@ -2060,11 +2058,21 @@ do_target_signal_to_host (enum target_signal oursig,
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 + REALTIME_LO;
- if (retsig < REALTIME_HI)
+ (int) oursig - (int) TARGET_SIGNAL_REALTIME_33 + 33;
+ if (retsig >= REALTIME_LO && retsig < REALTIME_HI)
return retsig;
}
+#if (REALTIME_LO < 33)
+ else if (oursig == TARGET_SIGNAL_REALTIME_32)
+ {
+ /* TARGET_SIGNAL_REALTIME_32 isn't contiguous with
+ TARGET_SIGNAL_REALTIME_33. It is 32 by definition. */
+ return 32;
+ }
+#endif
#endif
*oursig_ok = 0;
return 0;