target/arm: Use correct GDB XML for M-profile cores
commitc888f7e0fdcc09c86004330ab5cad62bf98cc71c
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 7 May 2020 13:47:55 +0000 (7 14:47 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 14 May 2020 14:03:08 +0000 (14 15:03 +0100)
tree13e517c10433aeed092c6977c7dea558e02d3573
parent035b448b84f3557206abc44d786c5d3db2638f7d
target/arm: Use correct GDB XML for M-profile cores

GDB's remote protocol requires M-profile cores to use the feature
name 'org.gnu.gdb.arm.m-profile' instead of the 'org.gnu.gdb.arm.core'
feature used for A- and R-profile cores. We weren't doing this, which
meant GDB treated our M-profile cores like A-profile ones. This mostly
doesn't matter, but for instance means that it doesn't correctly
handle backtraces where an M-profile exception frame is involved.

Ship a copy of GDB's arm-m-profile.xml and use it on the M-profile
cores.  The integer registers have the same offsets as the
arm-core.xml, but register 25 is the M-profile XPSR rather than the
A-profile CPSR, so we need to update arm_cpu_gdb_read_register() and
arm_cpu_gdb_write_register() to handle XSPR reads and writes.

Fixes: https://bugs.launchpad.net/qemu/+bug/1877136
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20200507134755.13997-1-peter.maydell@linaro.org
configure
gdb-xml/arm-m-profile.xml [new file with mode: 0644]
target/arm/cpu_tcg.c
target/arm/gdbstub.c