mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
* remote-mips.c (mips_wait): Use new function mips_signal_from_protocol
to convert a signal number with appropriate bounds checking.
This commit is contained in:
parent
901f3538ee
commit
f3fe8934c2
@ -1,5 +1,8 @@
|
||||
Tue Jan 11 06:59:10 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
|
||||
|
||||
* remote-mips.c (mips_wait): Use new function mips_signal_from_protocol
|
||||
to convert a signal number with appropriate bounds checking.
|
||||
|
||||
* remote-mips.c (mips_wait): Fix typos (0x177 -> 0177, 0x377 -> 0377).
|
||||
|
||||
Tue Jan 11 00:53:46 1994 John Gilmore (gnu@cygnus.com)
|
||||
|
@ -1026,6 +1026,26 @@ mips_resume (pid, step, siggnal)
|
||||
mips_receive_wait);
|
||||
}
|
||||
|
||||
/* Return the signal corresponding to SIG, where SIG is the number which
|
||||
the MIPS protocol uses for the signal. */
|
||||
enum target_signal
|
||||
mips_signal_from_protocol (sig)
|
||||
int sig;
|
||||
{
|
||||
/* We allow a few more signals than the IDT board actually returns, on
|
||||
the theory that there is at least *some* hope that perhaps the numbering
|
||||
for these signals is widely agreed upon. */
|
||||
if (sig <= 0
|
||||
|| sig > 31)
|
||||
return TARGET_SIGNAL_UNKNOWN;
|
||||
|
||||
/* Don't want to use target_signal_from_host because we are converting
|
||||
from MIPS signal numbers, not host ones. Our internal numbers
|
||||
match the MIPS numbers for the signals the board can return, which
|
||||
are: SIGINT, SIGSEGV, SIGBUS, SIGILL, SIGFPE, SIGTRAP. */
|
||||
return (enum target_signal) sig;
|
||||
}
|
||||
|
||||
/* Wait until the remote stops, and return a wait status. */
|
||||
|
||||
static int
|
||||
@ -1062,20 +1082,12 @@ mips_wait (pid, status)
|
||||
else if ((rstatus & 0377) == 0177)
|
||||
{
|
||||
status->kind = TARGET_WAITKIND_STOPPED;
|
||||
/* Don't want to use target_signal_from_host because we are converting
|
||||
from MIPS signal numbers, not host ones. Our internal numbers
|
||||
match the MIPS numbers for the signals the board can return, which
|
||||
are: SIGINT, SIGSEGV, SIGBUS, SIGILL, SIGFPE, SIGTRAP. */
|
||||
status->value.sig = (enum target_signal) (((rstatus) >> 8) & 0377);
|
||||
status->value.sig = mips_signal_from_protocol (((rstatus) >> 8) & 0377);
|
||||
}
|
||||
else
|
||||
{
|
||||
status->kind = TARGET_WAITKIND_SIGNALLED;
|
||||
/* Don't want to use target_signal_from_host because we are converting
|
||||
from MIPS signal numbers, not host ones. Our internal numbers
|
||||
match the MIPS numbers for the signals the board can return, which
|
||||
are: SIGINT, SIGSEGV, SIGBUS, SIGILL, SIGFPE, SIGTRAP. */
|
||||
status->value.sig = (enum target_signal) (rstatus & 0177);
|
||||
status->value.sig = mips_signal_from_protocol (rstatus & 0177);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user