From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KkZDc-0005e6-MH for qemu-devel@nongnu.org; Tue, 30 Sep 2008 03:00:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KkZDa-0005d2-W5 for qemu-devel@nongnu.org; Tue, 30 Sep 2008 03:00:24 -0400 Received: from [199.232.76.173] (port=41251 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KkZDa-0005cz-SC for qemu-devel@nongnu.org; Tue, 30 Sep 2008 03:00:22 -0400 Received: from mx20.gnu.org ([199.232.41.8]:53374) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KkZDa-0007D3-Iv for qemu-devel@nongnu.org; Tue, 30 Sep 2008 03:00:22 -0400 Received: from mtagate5.uk.ibm.com ([195.212.29.138]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KkYsB-0008Oi-4n for qemu-devel@nongnu.org; Tue, 30 Sep 2008 02:38:15 -0400 Received: from d06nrmr1407.portsmouth.uk.ibm.com (d06nrmr1407.portsmouth.uk.ibm.com [9.149.38.185]) by mtagate5.uk.ibm.com (8.13.8/8.13.8) with ESMTP id m8U6akfu235916 for ; Tue, 30 Sep 2008 06:36:46 GMT Received: from d06av01.portsmouth.uk.ibm.com (d06av01.portsmouth.uk.ibm.com [9.149.37.212]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id m8U6akx34431892 for ; Tue, 30 Sep 2008 07:36:46 +0100 Received: from d06av01.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m8U6ajNg022668 for ; Tue, 30 Sep 2008 07:36:46 +0100 From: ehrhardt@linux.vnet.ibm.com Date: Tue, 30 Sep 2008 08:36:45 +0200 Message-Id: <1222756605-10938-1-git-send-email-ehrhardt@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 2/3] kvm-userspace: kvmppc: fix hostlonbits detection when cross compiling Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: kvm-ppc@vger.kernel.org, kvm@vger.kernel.org, avi@qumranet.com, qemu-devel@nongnu.org Cc: ehrhardt@linux.vnet.ibm.com, hollisb@us.ibm.com From: Christian Ehrhardt A recent kvm merge with qemu brought code for 64bit power that broke cross compilation. The issue is caused by configure trying to execute target architecture binaries where configure is executed. I tried to change that detection so that it works with&without cross compilation with only a small change and especially without an addtional configure command line switch. Including the bits/wordsize.h header a platform usually can check its wordsize and by doing that configure can check the hostlongbits without executing the binary. Instead it now stops after preprocessing stage which resolved the __WORDSIZE constant and retrieves that value. I don't like my new check style, but it is at least less broken than before. Another approach that was suggested was that qemu might end up needing something like asm-offsets in the kernel to manage architecture sizes etc. Comments and other approaches welcome. Signed-off-by: Christian Ehrhardt --- [diffstat] configure | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) [diff] diff --git a/qemu/configure b/qemu/configure --- a/qemu/configure +++ b/qemu/configure @@ -685,14 +685,15 @@ # ppc specific hostlongbits selection if test "$cpu" = "powerpc" ; then cat > $TMPC < +__WORDSIZE EOF - if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then - $TMPE - case $? in - 4) hostlongbits="32";; - 8) hostlongbits="64";; + if $cc $ARCH_CFLAGS -E -o $TMPE.E $TMPC 2> /dev/null; then + wordsize=`tail -n 1 ${TMPE}.E` + case $wordsize in + 32) hostlongbits="32";; + 64) hostlongbits="64";; *) echo "Couldn't determine bits per long value"; exit 1;; esac else