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.
This commit is contained in:
Mark Kettenis 2000-02-16 22:26:12 +00:00
parent 7433da2265
commit e95a43adc3
2 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,12 @@
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.

View 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;