From: "Edgar E. Iglesias" <edgar.iglesias@axis.com>
To: hys545@dreamwiz.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] qemu-2007-10-24 build error
Date: Wed, 24 Oct 2007 12:20:39 +0200 [thread overview]
Message-ID: <20071024102039.GC13076@edgar.underground.se.axis.com> (raw)
In-Reply-To: <20071024003602.0000F11F01F20261@mail6.dreamwiz.com>
On Wed, Oct 24, 2007 at 09:36:02AM +0900, Hwang YunSong(??????) wrote:
> gcc32 -g -o qemu-system-cris vl.o osdep.o readline.o monitor.o pci.o
> console.o loader.o isa_mmio.o cutils.o block.o block-raw.o block-cow.o
> block-qcow.o aes.o block-vmdk.o block-cloop.o block-dmg.o block-bochs.o
> block-vpc.o block-vvfat.o block-qcow2.o block-parallels.o irq.o i2c.o
> smbus.o scsi-disk.o cdrom.o lsi53c895a.o usb.o usb-hub.o usb-linux.o
> usb-hid.o usb-ohci.o usb-msd.o usb-wacom.o eeprom93xx.o eepro100.o
> ne2000.o pcnet.o rtl8139.o etraxfs.o ptimer.o etraxfs_timer.o
> etraxfs_ser.o gdbstub.o sdl.o x_keymap.o vnc.o d3des.o slirp/cksum.o
> slirp/if.o slirp/ip_icmp.o slirp/ip_input.o slirp/ip_output.o
> slirp/slirp.o slirp/mbuf.o slirp/misc.o slirp/sbuf.o slirp/socket.o
> slirp/tcp_input.o slirp/tcp_output.o slirp/tcp_subr.o slirp/tcp_timer.o
> slirp/udp.o slirp/bootp.o slirp/debug.o slirp/tftp.o libqemu.a -lm -lz
> -lgnutls -L/usr/lib -lSDL -lpthread -lrt -lutil
> libqemu.a(helper.o): In function `do_interrupt':
> /usr/src/Haansoft/BUILD/qemu/target-cris/helper.c:137: undefined
> reference to `__builtin_clz'
> libqemu.a(translate-op.o): In function `dyngen_code':
> /home/hys545/qemu/cris-softmmu/op.h:1566: undefined reference to
> `__builtin_clz'
> libqemu.a(op.o): In function `op_lz_T0_T1':
> /usr/src/Haansoft/BUILD/qemu/target-cris/op.c:1009: undefined reference
> to `__builtin_clz'
> collect2: ld returned 1 exit status
> Linux localhost.localdomain 2.6.19-10hs #1 Tue Apr 3 11:29:42 KST 2007
> i686 i686 i386 GNU/Linux
> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
> --infodir=/usr/share/info --enable-shared --enable-threads=posix
> --enable-checking=release --with-system-zlib --enable-__cxa_atexit
> --disable-libunwind-exceptions --enable-libgcj-multifile
> --enable-languages=c,c++,objc,obj-c++,java,fortran,ada
> --enable-java-awt=gtk --disable-dssi --enable-plugin
> --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre
> --with-cpu=generic --host=i386-Haansoft-linux
> Thread model: posix
> gcc version 4.1.1 20061120 (Haansoft 4.1.1-41)
Hello,
This patch adds a version of clz that does not rely on the builtin from GCC for GCC versions where it's not expected to be available. Test were done with the cris qemu testsuite with gcc version 4.1.2 (Gentoo 4.1.2) and with gcc version 3.3.6 (Gentoo 3.3.6-r1 p1.4, ssp-3.3.6-1.0, pie-8.7.8).
You indicate the use of a GCC 4.1.1 which AFAIK should provide the __builtin_clz. I don't know whats going on but from the cmdline (gcc32) one might guess that a GCC 3.2 was used. Could you verify this?
If so, this patch will hopefully solve the build problem you see.
Best regards
--
Edgar E. Iglesias
Axis Communications AB
diff --git a/target-cris/op.c b/target-cris/op.c
index 3ce9888..fbbae5b 100644
--- a/target-cris/op.c
+++ b/target-cris/op.c
@@ -1006,7 +1006,34 @@ void OPPROTO op_lz_T0_T1 (void)
if (T1 == 0)
T0 = 32;
else
+#if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3
+ {
T0 = __builtin_clz(T1);
+ }
+#else
+ {
+ /* Binary search for leading zeros. */
+
+ T0 = 1;
+ if ((T1 >> 16) == 0) {
+ T0 = T0 + 16;
+ T1 = T1 << 16;
+ }
+ if ((T1 >> 24) == 0) {
+ T0 = T0 + 8;
+ T1 = T1 << 8;
+ }
+ if ((T1 >> 28) == 0) {
+ T0 = T0 + 4;
+ T1 = T1 << 4;
+ }
+ if ((T1 >> 30) == 0) {
+ T0 = T0 + 2;
+ T1 = T1 << 2;
+ }
+ T0 = T0 - (T1 >> 31);
+ }
+#endif
RETURN();
}
next prev parent reply other threads:[~2007-10-24 10:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-24 0:36 [Qemu-devel] qemu-2007-10-24 build error Hwang YunSong(황윤성)
2007-10-24 10:20 ` Edgar E. Iglesias [this message]
2007-10-24 10:33 ` J. Mayer
2007-10-24 12:36 ` Edgar E. Iglesias
2007-10-24 15:33 ` Thiemo Seufer
2007-10-24 16:03 ` Edgar E. Iglesias
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071024102039.GC13076@edgar.underground.se.axis.com \
--to=edgar.iglesias@axis.com \
--cc=hys545@dreamwiz.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.