gdbstub: x86: Switch 64/32 bit registers dynamically
commit8acf636ec57d0cc83c50f5540de19f7a184d0eae
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 17 Sep 2009 16:38:49 +0000 (17 18:38 +0200)
committerMarcelo Tosatti <mtosatti@redhat.com>
Fri, 18 Sep 2009 16:02:38 +0000 (18 13:02 -0300)
tree145dbdf4ffb145c17288827b735155227390b31f
parent2252e733ea2163bd75f4ffdc5494cfbfe00ca069
gdbstub: x86: Switch 64/32 bit registers dynamically

Commit 56aebc891674cd2d07b3f64183415697be200084 changed gdbstub in way
that debugging 32 or 16-bit guest code is no longer possible with qemu
for x86_64 guest CPUs. Since that commit, qemu only provides registers
sets for 64-bit, forcing current and foreseeable gdb to also switch its
architecture to 64-bit. And this breaks if the inferior is 32 or 16 bit.

No question, this is a gdb issue. But, as it was confirmed in several
discusssions with gdb people, it is a non-trivial thing to fix. So until
qemu finds a gdb version attach with a rework x86 support, we have to
work around it by switching the register layout as the guest switches
its execution mode between 16/32 and 64 bit.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
gdbstub.c
target-i386/cpu.h