From: John Reiser <jreiser@BitWagon.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] bug: qemu-0.9.0 emulating mipsel (32-bit R3000) on amd64
Date: Sun, 06 May 2007 11:45:08 -0700 [thread overview]
Message-ID: <463E2234.3040508@BitWagon.com> (raw)
Hi,
qemu-0.9.0 compiled and running on Debian 2.6.18-4-amd64,
[compiled by gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)],
emulating Debian 2.6.18-4-qemu mipsel (32-bit MIPS R3000 little endian),
errs when gdb 6.4.90-debian (running on the emulated mipsel)
single-steps the user-mode instruction:
lw a2,-44(s7)
After single-stepping the 'lw', then register a2 contains garbage
instead of the memory contents at address -44(s7).
This is reproducible every time (and the bad value is the same.)
Also, executing the 'lw' by some means other than single stepping
(such as by setting a breakpoint _beyond_ the 'lw' and continuing)
apparently works correctly.
Here is the gdb console log:
-----
0x001060e4 in ?? ()
0x1060e4: lw a2,-44(s7)
(gdb) p $a2
$3 = 0x0
(gdb) x/x $s7-44
0x105458: 0x00120000
(gdb) g # step one instruction and show next instruction
warning: GDB can't find the start of the function at 0x1060e8.
warning: GDB can't find the start of the function at 0x1060e8.
0x001060e8 in ?? ()
0x1060e8: addiu sp,sp,-32
(gdb) p $a2
$4 = 0x5000d
-----
where 'g' is a single-step macro for gdb:
define g
stepi
x/i $pc
end
I have posted the user-mode executable (28KB) at
http://bitwagon.com/ftp/date.qemu-0.9.0.bug
The complete gdb session is eight (8) instructions:
-----
(gdb) set output-radix 16
(gdb) run
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00105478 in ?? () # the entry point
(gdb) x/i $pc
0x105478: break
(gdb) set $pc+=4 # skip over the 'break' at entry
(gdb) x/i $pc
0x10547c: bal 0x10617c # use 'g' or 'stepi' 5 times
0x105480: addiu s7,ra,0 # delay slot; executed but not stopped
0x10617c: lw s5,-48(s7) # this 'lw' executes correctly
0x106180: bal 0x1060e0
0x106184: move s6,ra # delay slot
0x1060e0: addiu s5,s5,-92
0x1060e4: lw a2,-44(s7) # bug: register a2 gets bad value
0x1060e8: addiu sp,sp,-32
(gdb) p $a2
$1 = 0x5000d # (Even after allowing for 1-cycle load delay.)
(gdb) x/x $s7-44
0x105458: 0x00120000 # value that should be in register a2, but is not
-----
The emulated Debian system was installed using the directions at
http://www.aurel32.net/info/debian_mips_qemu.php
and the actual installed kernel and initrd was:
http://people.debian.org/~ths/d-i/mipsel/images/20070503-02:00/qemu/netboot/initrd.gz
http://people.debian.org/~ths/d-i/mipsel/images/20070503-02:00/qemu/netboot/vmlinux-2.6.18-4-qemu
After installation, then the emulation is invoked by:
qemu-system-mipsel -kernel vmlinux-2.6.18-4-qemu -initrd initrd.gz \
-hda hda.img -append "root=/dev/hda1 console=ttyS0" -nographic \
-net nic -net tap
The gdb transcript was copy+paste from an xterm running ssh into the
emulated system. ["apt-get install ssh" on the emulated system.]
Please suggest how to find and fix this bug?
(It's hard to remember to avoid single-stepping 'lw'.)
--
John Reiser, jreiser@BitWagon.com
next reply other threads:[~2007-05-06 18:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-06 18:45 John Reiser [this message]
2007-05-06 20:04 ` [Qemu-devel] bug: qemu-0.9.0 emulating mipsel (32-bit R3000) on amd64 Thiemo Seufer
2007-05-06 20:07 ` Thiemo Seufer
2007-05-07 12:13 ` Daniel Jacobowitz
2007-05-07 15:46 ` Paul Brook
2007-05-07 22:46 ` [Qemu-devel] workaround: " John Reiser
2007-05-07 23:03 ` Paul Brook
2007-05-07 23:08 ` Paul Brook
2007-05-08 18:03 ` [Qemu-devel] bug: " Stefan Weil
2007-05-08 23:50 ` John Reiser
2007-05-09 1:04 ` Thiemo Seufer
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=463E2234.3040508@BitWagon.com \
--to=jreiser@bitwagon.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).