summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorMike Frysinger2013-07-01 05:30:18 +0200
committerAnthony Liguori2013-11-06 04:58:48 +0100
commit61cc919f73ea7ca134c0ac41b748981ad63a253b (patch)
tree2f49c880cc46c3b9fbe7d34cb38625876e33e6fe /configure
parenttests: fix memleak in error path test for input visitor (diff)
downloadqemu-61cc919f73ea7ca134c0ac41b748981ad63a253b.tar.gz
qemu-61cc919f73ea7ca134c0ac41b748981ad63a253b.tar.xz
qemu-61cc919f73ea7ca134c0ac41b748981ad63a253b.zip
configure: detect endian via compile test
This avoids needing to execute a program and keeping an (incomplete) list when cross-compiling. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Tested-by: James Hogan <james.hogan@imgtec.com> [mips] Message-id: 1372649418-4987-1-git-send-email-vapier@gentoo.org Signed-off-by: Anthony Liguori <aliguori@amazon.com>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure40
1 files changed, 14 insertions, 26 deletions
diff --git a/configure b/configure
index 91372f9d60..9addff190a 100755
--- a/configure
+++ b/configure
@@ -1433,39 +1433,27 @@ feature_not_found() {
"configure was not able to find it"
}
-if test -z "$cross_prefix" ; then
-
# ---
# big/little endian test
cat > $TMPC << EOF
-#include <inttypes.h>
-int main(void) {
- volatile uint32_t i=0x01234567;
- return (*((uint8_t*)(&i))) == 0x67;
+short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
+short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
+extern int foo(short *, short *);
+int main(int argc, char *argv[]) {
+ return foo(big_endian, little_endian);
}
EOF
-if compile_prog "" "" ; then
-$TMPE && bigendian="yes"
-else
-echo big/little test failed
-fi
-
-else
-
-# if cross compiling, cannot launch a program, so make a static guess
-case "$cpu" in
- arm)
- # ARM can be either way; ask the compiler which one we are
- if check_define __ARMEB__; then
- bigendian=yes
+if compile_object ; then
+ if grep -q BiGeNdIaN $TMPO ; then
+ bigendian="yes"
+ elif grep -q LiTtLeEnDiAn $TMPO ; then
+ bigendian="no"
+ else
+ echo big/little test failed
fi
- ;;
- hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
- bigendian=yes
- ;;
-esac
-
+else
+ echo big/little test failed
fi
##########################################