Hi,
I have a problem with debugging 64-bit emulation using Qemu GDB stub. The
problem is that Qemu always sends x86_64 registers set disregarding current
actual mode of an emulated CPU. It results in error message in GDB -
"Remote 'g'
packet reply is too long: ...". Yes, I understand that in case I will
execute
"set architecture i386:x86-64:intel" command it will show me correct
registers
content. But the problem is that in such case it will incorrectly try to
disassemble the code and unwind the stack - it will interpret it as
64-bit while
it is actually 32-bit. In my understanding Qemu should dynamically
change the
format of "g" and "G" packets depending on current CPU mode. On the
other end,
user could change manually GDB current architecture by corresponding "set
architecture" command.
Please correct me, if I am not right. May be there is some existing
methodology
of debugging Qemu emulated x86_64 architecture in different CPU modes.
For now,
I have strong intention to make a patch for Qemu GDB stub, at least for
me. But
I have impression that this should be corrected in official release too.
--
Best regards,
Artyom.