diff options
-rw-r--r-- | sim/arm/ChangeLog | 6 | ||||
-rw-r--r-- | sim/arm/armemu.c | 6 | ||||
-rw-r--r-- | sim/arm/armos.c | 5 |
3 files changed, 13 insertions, 4 deletions
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog index cae6f52..2ce9429 100644 --- a/sim/arm/ChangeLog +++ b/sim/arm/ChangeLog @@ -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. diff --git a/sim/arm/armemu.c b/sim/arm/armemu.c index 5fde3fd..76f398b 100644 --- a/sim/arm/armemu.c +++ b/sim/arm/armemu.c @@ -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) diff --git a/sim/arm/armos.c b/sim/arm/armos.c index c49036f..ea3d229 100644 --- a/sim/arm/armos.c +++ b/sim/arm/armos.c @@ -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) |