Small improvements to the ARM simulator to cope with illegal binaries.

* armemu.c (Multiply64): Only issue error messages about invalid
	arguments if debugging is enabled.
	* armos.c (ARMul_OSHandleSWI): Ignore invalid flags.
This commit is contained in:
Nick Clifton 2016-07-14 10:38:07 +01:00
parent fa1c017017
commit 7df94786e4
3 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2016-07-14 Nick Clifton <nickc@redhat.com>
* armemu.c (Multiply64): Only issue error messages about invalid
arguments if debugging is enabled.
* armos.c (ARMul_OSHandleSWI): Ignore invalid flags.
2016-01-10 Mike Frysinger <vapier@gentoo.org>
* config.in, configure: Regenerate.

View File

@ -5950,10 +5950,10 @@ Multiply64 (ARMul_State * state, ARMword instr, int msigned, int scc)
;
else
#endif
if (nRdHi == nRm || nRdLo == nRm)
/* BAD code can trigger this result. So only complain if debugging. */
if (state->Debug && (nRdHi == nRm || nRdLo == nRm))
fprintf (stderr, "sim: MULTIPLY64 - INVALID ARGUMENTS: %d %d %d\n",
nRdHi, nRdLo, nRm);
if (msigned)
{
/* Compute sign of result and adjust operands if necessary. */
@ -5998,7 +5998,7 @@ Multiply64 (ARMul_State * state, ARMword instr, int msigned, int scc)
state->Reg[nRdLo] = RdLo;
state->Reg[nRdHi] = RdHi;
}
else
else if (state->Debug)
fprintf (stderr, "sim: MULTIPLY64 - INVALID ARGUMENTS\n");
if (scc)

View File

@ -260,7 +260,10 @@ SWIopen (ARMul_State * state, ARMword name, ARMword SWIflags)
return;
/* Now we need to decode the Demon open mode. */
flags = translate_open_mode[SWIflags];
if (SWIflags >= sizeof (translate_open_mode) / sizeof (translate_open_mode[0]))
flags = 0;
else
flags = translate_open_mode[SWIflags];
/* Filename ":tt" is special: it denotes stdin/out. */
if (strcmp (buf, ":tt") == 0)