* signals/signals.c (REALTIME_LO, REALTIME_HI): Define if
[binutils-gdb.git] / gdb / signals / signals.c
index 82c63d89978da4f58b4c6b2cb1b2d95df0f8bb8d..ad19951846120aa11cdb930bfadde925958ec8c0 100644 (file)
 
 #include <signal.h>
 
+/* Always use __SIGRTMIN if it's available.  SIGRTMIN is the lowest
+   _available_ realtime signal, not the lowest supported; glibc takes
+   several for its own use.  */
+
+#ifndef REALTIME_LO
+# if defined(__SIGRTMIN)
+#  define REALTIME_LO __SIGRTMIN
+#  define REALTIME_HI __SIGRTMAX
+# elif defined(SIGRTMIN)
+#  define REALTIME_LO __SIGRTMIN
+#  define REALTIME_HI __SIGRTMAX
+# endif
+#endif
+
 /* This table must match in order and size the signals in enum target_signal
    in target.h.  */
 /* *INDENT-OFF* */
@@ -492,22 +506,6 @@ target_signal_from_host (int hostsig)
     }
 #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 if (hostsig == 32)
-       return TARGET_SIGNAL_REALTIME_32;
-      else if (64 <= hostsig && hostsig <= 127)
-       return (enum target_signal)
-         (hostsig - 64 + (int) TARGET_SIGNAL_REALTIME_64);
-      else
-       error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal");
-    }
-#endif
   return TARGET_SIGNAL_UNKNOWN;
 }
 
@@ -744,40 +742,12 @@ do_target_signal_to_host (enum target_signal oursig,
 
     default:
 #if defined (REALTIME_LO)
-      if (oursig >= TARGET_SIGNAL_REALTIME_33
-         && oursig <= TARGET_SIGNAL_REALTIME_63)
+      if (oursig < REALTIME_LO || oursig >= REALTIME_HI)
        {
-         /* 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 >= 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
-#if (REALTIME_HI > 64)
-      if (oursig >= TARGET_SIGNAL_REALTIME_64
-         && oursig <= TARGET_SIGNAL_REALTIME_127)
-       {
-         /* This block of signals is continuous, and
-             TARGET_SIGNAL_REALTIME_64 is 64 by definition.  */
-         int retsig =
-           (int) oursig - (int) TARGET_SIGNAL_REALTIME_64 + 64;
-         if (retsig >= REALTIME_LO && retsig < REALTIME_HI)
-           return retsig;
+         *oursig_ok = 0;
+         return 0;
        }
-      
-#endif
-#endif
 
-#if defined (SIGRTMIN)
       if (oursig >= TARGET_SIGNAL_REALTIME_33
          && oursig <= TARGET_SIGNAL_REALTIME_63)
        {
@@ -785,8 +755,7 @@ do_target_signal_to_host (enum target_signal oursig,
              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;
+         return retsig;
        }
       else if (oursig == TARGET_SIGNAL_REALTIME_32)
        {
@@ -804,6 +773,7 @@ do_target_signal_to_host (enum target_signal oursig,
          return retsig;
        }
 #endif
+
       *oursig_ok = 0;
       return 0;
     }