Test environment:

* ppc-softmmu/qemu-system-ppc running on x86_64 host
* emulated ppc is running debian lenny



While debugging on the emulated ppc (each time when
a shared library is loaded after "r" command?),
qemu-system-ppc prints this error message:

invalid/unsupported opcode: 00 - 00 - 00 (00000000) 4800fa44 1



If logging is enabled, the error message goes to qemu.log:

IN:
0xc0013488:  nop
0xc001348c:  rlwinm  r3,r3,0,0,19
0xc0013490:  li      r4,128
0xc0013494:  mtctr   r4
0xc0013498:  mr      r6,r3
0xc001349c:  dcbst   r0,r3

invalid/unsupported opcode: 00 - 00 - 00 (00000000) 4800fa44 1
IN:
0x4800fa40:  twge    r2,r2
0x4800fa44:  .long 0x0



The debugger on the ppc system shows the "instruction"
which triggers the error message:

(gdb) disas
Dump of assembler code for function _dl_debug_state:
0x4800fa40 <_dl_debug_state+0>: blr
End of assembler dump.
(gdb) x 0x4800fa40
0x4800fa40 <_dl_debug_state>:   0x4e800020
(gdb) x/2x 0x4800fa40
0x4800fa40 <_dl_debug_state>:   0x4e800020      0x00000000



The unsupported opcode is 0, and it follows function
_dl_debug_state.

Debugging in an emulated system should not trigger
error messages on the host (denial-of-service).

Why does qemu try to interpret the word at 0x4800fa44?
Why does qemu show "twge r2,r2", not "blr"?


Regards
Stefan Weil




Reply via email to