This is the mail archive of the
mailing list for the GDB project.
Re: Debug ARM semihosting Thumb-2 binary
On 09 Feb 2012, at 02:38, Matthew Gretton-Dann wrote:
On Wed, Feb 08, 2012 at 10:35:48PM +0000, Jonas Maebe wrote:
The full QEMU command line I use:
~/qemu/bin/qemu-system-arm -nographic -semihosting -M realview-eb -
cpu cortex-m3 -kernel qsort_large -append "input_large.dat" -S -s
I think -M realview-eb -cpu cortex-m3 is not the best way of
as it generates a system with a Cortex-M3 but without the appropriate
interrupt controller. Try one of the Stellaris boards instead (use
-machine ? to get the actual command line).
I've now tried both -M lm3s811evb (Stellaris LM3S811EVB) and -M
lm3s6965evb (Stellaris LM3S6965EVB) together with -cpu cortex-m3.
Neither appears to work at all: there's no output (not even QEMU
complaining that it can't open any sound devices, which it does
instantaneously on startup if I choose the realview-eb platform).
If I start QEMU with a Stellaris platform selected and with -S -s
(stop immediately on startup and wait for gdb) and attach gdb, the
process is stopped at address 0 (instead of 0x8000). Removing the -
semihosting switch does not change this (that would obviously fail as
soon as a syscall were executed, but it doesn't get that far).
We need to diagnose whether this is a QEmu or GDB issue.
Yes, I'm also starting to wonder whether I might be QEMU rather than
gdb that's going wrong...
What QEmu are you using?
The main site's 1.0 release, manually compiled directly from source
Can you clarify whether this is Cortex-M3 specific? Does it happen
build for a Cortex-A profile CPU in ARM and Thumb state? What
you run the image in QEmu without GDB attached?
If I run it in QEMU (with -m realview-eb -cpu cortex-m3) without gdb
attached, everything works correctly (although occasionally not all
output is printed, but that's probably a QEMU issue). I currently
can't rebuild it for Cortex-A or anything else because our license for
RVCT has expired and we're still in the process of renewing it.
Can you also provide a gdb trace of the remote protocol (use set debug
remote on before attaching to QEmu).
I've attached the remote log for the qsort_large program I've
compiled. The binary was started with the following QEMU command line:
~/qemu/bin/qemu-system-arm -nographic -semihosting -M realview-eb -cpu
cortex-m3 -kernel qsort_large -append "input_large.dat" -s -S
I've also attached the qsort_large binary itself, since it's pretty
small (and it's from mibench, so it's freely distributable). The
input_large.dat file that's required for input can be gotten from http://www.eecs.umich.edu/mibench/automotive.tar.gz
Description: Text document
Description: BZip2 compressed data