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 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.