From: "Ben Taylor" <bentaylor.solx86@gmail.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Compilation broken in SVN version and a debug register question
Date: Sun, 4 May 2008 12:29:51 -0400 [thread overview]
Message-ID: <cef699d70805040929x14f1c235idc47d2e66554bb8e@mail.gmail.com> (raw)
In-Reply-To: <527518.23522.qm@web57011.mail.re3.yahoo.com>
[-- Attachment #1: Type: text/plain, Size: 3354 bytes --]
On Wed, Apr 23, 2008 at 8:34 AM, Balazs Attila-Mihaly (Cd-MaN)
<x_at_y_or_z@yahoo.com> wrote:
> Hello all.
>
> I fail to compile the version 4242 from the SVN (which I checked out ~1 hour ago). On an Ubuntu 7.10 host with gcc-3.4 and ./configure --target-list=i386-softmmu, I get the following error:
>
> make -C i386-softmmu all
> make[1]: Entering directory `/home/cdman/qemu/trunk/i386-softmmu'
> gcc-3.4 -Wall -O2 -g -fno-strict-aliasing -fno-reorder-blocks -fno-gcse -fno-optimize-sibling-calls -fno-crossjumping -fno-align-labels -fno-align-jumps -fno-align-functions -mpreferred-stack-boundary=2 -fomit-frame-pointer -m32 -I. -I.. -I/home/cdman/qemu/trunk/target-i386 -I/home/cdman/qemu/trunk -MMD -MP -DNEED_CPU_H -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/cdman/qemu/trunk/tcg -I/home/cdman/qemu/trunk/tcg/i386 -I/home/cdman/qemu/trunk/fpu -DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/home/cdman/qemu/trunk/slirp -c -o op.o /home/cdman/qemu/trunk/target-i386/op.c
> /home/cdman/qemu/trunk/target-i386/ops_sse.h: In function `op_pshufw_mmx':
> /home/cdman/qemu/trunk/target-i386/ops_sse.h:597: error: unable to find a register to spill in class `GENERAL_REGS'
> /home/cdman/qemu/trunk/target-i386/ops_sse.h:597: error: this is the insn:
> (insn:HI 18 17 19 0 /home/cdman/qemu/trunk/target-i386/ops_sse.h:592 (set (strict_low_part (subreg:HI (reg/v:DI 58 [ r ]) 0))
> (mem/s/j:HI (plus:SI (mult:SI (reg:SI 62)
> (const_int 2 [0x2]))
> (reg/v/f:SI 60 [ s ])) [0 <variable>._w S2 A16])) 54 {*movstricthi_1} (insn_list 16 (insn_list 12 (insn_list 50 (nil))))
> (expr_list:REG_DEAD (reg:SI 62)
> (nil)))
> /home/cdman/qemu/trunk/target-i386/ops_sse.h:597: confused by earlier errors, bailing out
> make[1]: *** [op.o] Error 1
> make[1]: Leaving directory `/home/cdman/qemu/trunk/i386-softmmu'
> make: *** [subdir-i386-softmmu] Error 2
>
> Is this related to the recent discussion about MMX/SSE instructions?
>
> Also, I have a weird behaviour with qemu-0.9.0 (I will test it against the SVN snapshot as soon as I can get it to compile :)). The behavior is related to hardware breakpoints. I use a Linux host and Windows XP guest and in the guest I use a user-mode debugger (Olly - http://ollydbg.de/) to debug a program. Software breakpoints work ok, but hardware breakpoints only work when I run __with__ kqemu (which is really weird, since the usual response for all the problems is "try it without kqemu" :)). Is this a known limitation or a bug? Should the code which sets the debug registers be augmented to flush the TB cache and the dyngen code changed to take into account the value of the debug registers (and raise an exception there)? But if this is the case, why does it work with kqemu enabled?
>
> Thank you in advance for your time spent answering my questions.
>
> Best regards.
The following patch should fix the compilation of op.c and helper.c.
This been tested on solaris x86 (32/64 bit) and Ubuntu 7.10 (32-bit). When
configuring on the 32-bit systems, I used --extra-cflags="-march=i686
-mtune=i686"
and both spill errors in op.c and helper.c are gone, and the binaries
will boot Milax (a Solaris based DamnSmallLinux clone)
Once the sse ops are converted to TCG, I imagine these hacks to the
Makefile.target file can be removed.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Makefile.target.diff --]
[-- Type: text/x-patch; name=Makefile.target.diff, Size: 1161 bytes --]
diff -ruN qemu.ORIG/Makefile.target qemu/Makefile.target
--- qemu.ORIG/Makefile.target 2008-05-04 10:42:56.000000000 -0400
+++ qemu/Makefile.target 2008-05-04 12:02:56.068374000 -0400
@@ -96,6 +96,7 @@
ifeq ($(ARCH),i386)
HELPER_CFLAGS+=-fomit-frame-pointer
OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer
+MTUNE_CFLAGS=-march=i486 -mtune=i686
endif
ifeq ($(ARCH),ppc)
@@ -279,6 +280,12 @@
LIBOBJS+=s390-dis.o
endif
+ifeq ($(ARCH), i386)
+ HCFLAGS=`echo $(CFLAGS) | sed 's,-march=i686,,'`
+else
+ HCFLAGS=$(CFLAGS)
+endif
+
# libqemu
ifndef CONFIG_NO_DYNGEN_OP
@@ -309,7 +316,7 @@
$(DYNGEN) -g -o $@ $<
op.o: op.c
- $(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+ $(CC) $(OP_CFLAGS) $(CPPFLAGS) $(MTUNE_CFLAGS) -c -o $@ $<
machine.o: machine.c
$(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<
@@ -319,7 +326,7 @@
ifeq ($(TARGET_BASE_ARCH), i386)
# XXX: rename helper.c to op_helper.c
helper.o: helper.c
- $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+ $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(MTUNE_CFLAGS) $(HCFLAGS) -c -o $@ $<
else
op_helper.o: op_helper.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
next prev parent reply other threads:[~2008-05-04 16:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-23 12:34 [Qemu-devel] Compilation broken in SVN version and a debug register question Balazs Attila-Mihaly (Cd-MaN)
2008-04-23 17:09 ` Blue Swirl
2008-05-04 16:29 ` Ben Taylor [this message]
2008-05-04 17:29 ` Brad Campbell
2008-05-04 17:31 ` Ben Taylor
2008-05-04 19:45 ` Aurelien Jarno
2008-05-04 19:57 ` Ben Taylor
-- strict thread matches above, loose matches on Subject: below --
2008-04-24 5:19 Balazs Attila-Mihaly (Cd-MaN)
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=cef699d70805040929x14f1c235idc47d2e66554bb8e@mail.gmail.com \
--to=bentaylor.solx86@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).