2000-02-16 Mark Kettenis <kettenis@gnu.org>
authorMark Kettenis <kettenis@gnu.org>
Wed, 16 Feb 2000 22:26:12 +0000 (22:26 +0000)
committerMark Kettenis <kettenis@gnu.org>
Wed, 16 Feb 2000 22:26:12 +0000 (22:26 +0000)
* 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.

gdb/ChangeLog
gdb/target.c

index ad14714..34ad4a5 100644 (file)
@@ -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>
index 0142aaa..fa9cf88 100644 (file)
@@ -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;