Thread (3 messages) flat view 3 messages, 3 authors, 2000-01-13

Re: User level Macros for Endianess

From: David A. Gatwood <hidden>
Date: 2000-01-13 15:48:53

On Thu, 13 Jan 2000, Stephane GEORGES wrote:
I use my own executable compiled by GNU before compiling anything else:

bigendian.c
-----------

int main()
{
  unsigned short val = 0x0011;
  unsigned char* str = (unsigned char*)&val;
  if ( str[0] == 0x00 )
    return 1;
  else
    return 0;
}

in my GNUmakefile
-----------------

- one rule to compile bigendian.c if exe not compiled
- one rule testing the return value of exe and setting

    MEMORY_IS_LITTLE_ENDIAN or MEMORY_IS_BIG_ENDIAN

That way I do not need to look for the right MACRO on the right SYSTEM.

I compile my code on IRIX (SGI), Solaris (SUN), intel Linux and LinuxPPC.
One worry here is that there are a few obscure (and generally, pretty
out-of-date) architectures that are neither big nor little.  Since this
only checks the first byte against the big value, it will return little
endian on a few oddball machines.  Other than that, though, yes, that
should work.


David


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help