On Sun, 2014-03-23 at 12:48 +0000, Peter Maydell wrote: > On 23 March 2014 12:32, Marcel Apfelbaum <marce...@redhat.com> wrote: > > On Sun, 2014-03-23 at 12:14 +0000, Peter Maydell wrote: > >> On 23 March 2014 09:49, Michael S. Tsirkin <m...@redhat.com> wrote: > >> > At this point I'm confused. > >> > If iasl compiler is broken, we should detect and fix that. > >> > It might be ok to just detect endian-ness as a quick work-around. > >> > BTW configure already has code to detect endian-ness: > >> > if test "$bigendian" = "yes" ; then > >> > echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak > >> > fi > >> > >> That's the endianness of the machine we're compiling QEMU > >> for, not the endianness of the machine we're compiling QEMU > >> on. If for instance you're on x86_64 cross-compiling for PPC > >> then HOST_WORDS_BIGENDIAN is true, but the iasl you use > >> in the build process will be running on a little endian machine. > > > > Hi Peter, are you sure about this? > > I saw the 'target_bigendian' that does what you described above. > > $bigendian is the result of a little C program that checks *host's* > > endian-ness. > > Of course I might have missed something. > > "host" for QEMU means "the machine QEMU will run on" > (as opposed to "target" meaning "the machine QEMU is emulating"). > Those can both be different from the machine you're building on. > Example: you can be on an x86_64 machine cross-compiling a > qemu-system-mips intended to run on PPC hosts: > build system: x86_64 (we don't currently try to identify its endianness) > host system: PPC ("$bigendian" is set to endianness) > target system: mips ("$target_bigendian" is set to endianness) > > bigendian is set by cross-compiling a test object, which produces > a PPC object file that we then examine to see which endianness > the PPC system we're building for is. > target_bigendian is set for the target machine by just hard-coding it -- > in this case it would be set because 'mips' is a bigendian target. > The iasl we use in the build process is the x86_64 native binary, > so neither $bigendian nor $target_bigendian are correct.
Thanks for the detailed answer! It really helped! I missed the build machine != host machine != target machine :( Marcel > > thanks > -- PMM