diff options
author | Nick Clifton <nickc@redhat.com> | 2003-03-02 10:28:29 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2003-03-02 10:28:29 +0000 |
commit | 0d9fd8f1d01dd162bb0296f3b0815e1e9c43a5b9 (patch) | |
tree | f587dc4965a7d1d4dd73f198c70765e0773d56ca /sim/arm | |
parent | 0aa7e1aa07c5fced19457c55240df2b3502dc55d (diff) | |
download | binutils-0d9fd8f1d01dd162bb0296f3b0815e1e9c43a5b9.zip binutils-0d9fd8f1d01dd162bb0296f3b0815e1e9c43a5b9.tar.gz binutils-0d9fd8f1d01dd162bb0296f3b0815e1e9c43a5b9.tar.bz2 |
(SWIWrite0): Catch big-endian bug when printing characters
Diffstat (limited to 'sim/arm')
-rw-r--r-- | sim/arm/ChangeLog | 5 | ||||
-rw-r--r-- | sim/arm/armos.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog index 90cc64f..5e4b316 100644 --- a/sim/arm/ChangeLog +++ b/sim/arm/ChangeLog @@ -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> * wrapper.c (sim_create_inferior, sim_open): Rename _bfd to bfd. diff --git a/sim/arm/armos.c b/sim/arm/armos.c index c4cb051..04916d6 100644 --- a/sim/arm/armos.c +++ b/sim/arm/armos.c @@ -274,7 +274,13 @@ SWIWrite0 (ARMul_State * state, ARMword addr) struct OSblock *OSptr = (struct OSblock *) state->OSptr; 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); } |