* PATCH: Fix SIGRTMIN problems with glibc 2.3 [1/2]
@ 2003-03-26 16:32 Daniel Jacobowitz
2003-03-26 17:17 ` Andreas Schwab
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Jacobowitz @ 2003-03-26 16:32 UTC (permalink / raw)
To: gdb-patches
SIGRTMIN is (theoretically) the lowest _available_ real-time signal. Up to
now, GNU libc hasn't reserved any realtime signals for applications not
linked to a threads library (like gdb and gdbserver). However, the newest
release starts SIGRTMIN at 35 or so instead of 32. We need to use
__SIGRTMIN instead in a couple of places. This takes care of
signals/signals.c and cleans up some duplicated code while I'm there.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2003-03-26 Daniel Jacobowitz <drow@mvista.com>
* signals/signals.c (REALTIME_LO, REALTIME_HI): Define if
not already defined. Use __SIGRTMIN if available.
(target_signal_from_host): Remove SIGRTMIN block.
(do_target_signal_to_host): Remove SIGRTMIN block; check that
the signal is within the realtime range.
Index: signals.c
===================================================================
RCS file: /cvs/src/src/gdb/signals/signals.c,v
retrieving revision 1.5
diff -u -p -r1.5 signals.c
--- signals.c 27 Aug 2002 22:37:14 -0000 1.5
+++ signals.c 26 Mar 2003 16:25:51 -0000
@@ -30,6 +30,20 @@
#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_si
default:
#if defined (REALTIME_LO)
- 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 >= 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)
+ if (oursig < REALTIME_LO || oursig >= REALTIME_HI)
{
- /* 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_si
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_si
return retsig;
}
#endif
+
*oursig_ok = 0;
return 0;
}
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: PATCH: Fix SIGRTMIN problems with glibc 2.3 [1/2]
2003-03-26 16:32 PATCH: Fix SIGRTMIN problems with glibc 2.3 [1/2] Daniel Jacobowitz
@ 2003-03-26 17:17 ` Andreas Schwab
2003-03-26 17:21 ` Daniel Jacobowitz
0 siblings, 1 reply; 3+ messages in thread
From: Andreas Schwab @ 2003-03-26 17:17 UTC (permalink / raw)
To: gdb-patches
Daniel Jacobowitz <drow@mvista.com> writes:
|> Index: signals.c
|> ===================================================================
|> RCS file: /cvs/src/src/gdb/signals/signals.c,v
|> retrieving revision 1.5
|> diff -u -p -r1.5 signals.c
|> --- signals.c 27 Aug 2002 22:37:14 -0000 1.5
|> +++ signals.c 26 Mar 2003 16:25:51 -0000
|> @@ -30,6 +30,20 @@
|>
|> #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
^^
Typo?
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: PATCH: Fix SIGRTMIN problems with glibc 2.3 [1/2]
2003-03-26 17:17 ` Andreas Schwab
@ 2003-03-26 17:21 ` Daniel Jacobowitz
0 siblings, 0 replies; 3+ messages in thread
From: Daniel Jacobowitz @ 2003-03-26 17:21 UTC (permalink / raw)
To: Andreas Schwab; +Cc: gdb-patches
On Wed, Mar 26, 2003 at 06:17:32PM +0100, Andreas Schwab wrote:
> Daniel Jacobowitz <drow@mvista.com> writes:
>
> |> Index: signals.c
> |> ===================================================================
> |> RCS file: /cvs/src/src/gdb/signals/signals.c,v
> |> retrieving revision 1.5
> |> diff -u -p -r1.5 signals.c
> |> --- signals.c 27 Aug 2002 22:37:14 -0000 1.5
> |> +++ signals.c 26 Mar 2003 16:25:51 -0000
> |> @@ -30,6 +30,20 @@
> |>
> |> #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
> ^^
> Typo?
Er, yes rather. Thanks for catching that!
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2003-03-26 Daniel Jacobowitz <drow@mvista.com>
* signals/signals.c: Fix typos in last change.
Index: signals/signals.c
===================================================================
RCS file: /cvs/src/src/gdb/signals/signals.c,v
retrieving revision 1.6
diff -u -p -r1.6 signals.c
--- signals/signals.c 26 Mar 2003 16:29:39 -0000 1.6
+++ signals/signals.c 26 Mar 2003 17:20:10 -0000
@@ -39,8 +39,8 @@
# define REALTIME_LO __SIGRTMIN
# define REALTIME_HI __SIGRTMAX
# elif defined(SIGRTMIN)
-# define REALTIME_LO __SIGRTMIN
-# define REALTIME_HI __SIGRTMAX
+# define REALTIME_LO SIGRTMIN
+# define REALTIME_HI SIGRTMAX
# endif
#endif
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-03-26 17:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-26 16:32 PATCH: Fix SIGRTMIN problems with glibc 2.3 [1/2] Daniel Jacobowitz
2003-03-26 17:17 ` Andreas Schwab
2003-03-26 17:21 ` Daniel Jacobowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox