(SWIWrite0): Catch big-endian bug when printing characters
This commit is contained in:
parent
0aa7e1aa07
commit
0d9fd8f1d0
2 changed files with 12 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2003-03-02 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* armos.c (SWIWrite0): Catch big-endian bug when printing
|
||||||
|
characters.
|
||||||
|
|
||||||
2003-02-27 Andrew Cagney <cagney@redhat.com>
|
2003-02-27 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
* wrapper.c (sim_create_inferior, sim_open): Rename _bfd to bfd.
|
* wrapper.c (sim_create_inferior, sim_open): Rename _bfd to bfd.
|
||||||
|
|
|
@ -274,7 +274,13 @@ SWIWrite0 (ARMul_State * state, ARMword addr)
|
||||||
struct OSblock *OSptr = (struct OSblock *) state->OSptr;
|
struct OSblock *OSptr = (struct OSblock *) state->OSptr;
|
||||||
|
|
||||||
while ((temp = ARMul_SafeReadByte (state, addr++)) != 0)
|
while ((temp = ARMul_SafeReadByte (state, addr++)) != 0)
|
||||||
(void) sim_callback->write_stdout (sim_callback, (char *) &temp, 1);
|
{
|
||||||
|
char buffer = temp;
|
||||||
|
/* Note - we cannot just cast 'temp' to a (char *) here,
|
||||||
|
since on a big-endian host the byte value will end
|
||||||
|
up in the wrong place and a nul character will be printed. */
|
||||||
|
(void) sim_callback->write_stdout (sim_callback, & buffer, 1);
|
||||||
|
}
|
||||||
|
|
||||||
OSptr->ErrorNo = sim_callback->get_errno (sim_callback);
|
OSptr->ErrorNo = sim_callback->get_errno (sim_callback);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue