Do I need modify newlib code for endian changed?
Liu
proljc@gmail.com
Mon Jul 25 09:08:00 GMT 2011
On Sun, Jul 24, 2011 at 6:46 PM, Stuart Longland <redhatter@gentoo.org> wrote:
> On 07/24/11 17:29, Liu wrote:
>> On Sun, Jul 24, 2011 at 7:25 AM, Stuart Longland <redhatter@gentoo.org> wrote:
>>> On 07/24/11 09:21, Liu wrote:
>>>> Hi all,
>>>>
>>>> We've changed a CPU into little-endian from big-endian, and binutils
>>>> and gcc have been rewrite for little-endian.
>>>> Do I need modify newlib code for endian changed? If I do, what should I do?
>>>
>>> Do you assume endianness anywhere? If so, then yes. If not, then no.
>> I'm not sure about that, I know very few about newlib.
>> I working on a little-endian openrisc CPU, may you tell me what to do?
>>
>
> Well, as I say, it depends on the code you've written. The following
> for instance, will break on big endian systems:
>
> uint16_t htons(uint16_t word)
> {
> union {
> uint16_t w;
> uint8_t b[2];
> } in, out;
>
> in.w = word;
> out.b[0] = in.b[1];
> out.b[1] = in.b[0];
> return out.w;
> }
>
> Likewise, this would break on little endian systems:
> uint16_t htons(uint16_t word)
> {
> return word;
> }
>
> The following however, would work on either the same:
> uint16_t htons(uint16_t word)
> {
> return ((word << 8) | (word >> 8));
> }
Sorry, I didn't get it. This is application code or newlib code?
>
> The first assumes that the least significant byte is stored first. The
> second assumes big endian is the native representation. The third makes
> no assumptions on byte order.
>
> newlib itself, will generally be compiled either for big-endian or
> little-endian. No rewriting of it, binutils, or gcc should be
> necessary, just simply clean and recompile the source trees specifying
> the new CHOST.
I have already rewrite binutils, gcc, gdb, gem5 and or1ksim.
You mean that I do not need to rewrite newlib code?
Thank you!
> --
> Stuart Longland (aka Redhatter, VK4MSL) .'''.
> Gentoo Linux/MIPS Cobalt and Docs Developer '.'` :
> . . . . . . . . . . . . . . . . . . . . . . .'.'
> http://dev.gentoo.org/~redhatter :.'
>
> I haven't lost my mind...
> ...it's backed up on a tape somewhere.
>
More information about the Newlib
mailing list