I'm compiling and running a bare metal AArch64 bootloader using 3 different compilers: the Linaro / ARM GCC 10.3.1 compiler, the Linaro / ARM GCC 10.2.1 compiler, and an in-house built GCC 10.2.0 compiler.
GDB will single step using the either of the GCC 10.2 compilers; but runs without halting when step is requested - or perhaps steps multiple instructions - when built using the Linaro / ARM-supplied GCC 10.3.1.
Eclipse CDT (v4.20 aka 2021-06) is able to correlate debugging information from binaries built with either of the gcc 10.2 toolchains, and to single step correctly through the program. Breakpoints work as expected. Registers display fine.
Eclipse CDT is not able to correlate current PC location to source code using the binary built with Linaro / ARM 10.3, instead bringing up a disassembly window. Breakpoints placed at assembly instructions in the editor do not work.
I've tried three different GDB versions - ARM's supplied 10.2 and 10.3 GDB, and the in-house built GDB. Results are the same.
The same makefile is used to create the binaries, with just a few macro definitions to switch. The only compiler flag of interest is -march=armv8.2-a (and of course -g -O0). -mtune=cortex-a53 doesn't help.
The board is connected via JTAG using OpenOCD 0.11.0+ and an Olimex ARM-USB-OCD-H adapter.
I'm building in a cygwin shell on Windows 10 version 21H1 using the compilers:
gcc-arm-10.3-2021.07-mingw-w64-i686-aarch64-none-elf.tar.xz gcc-arm-10.2-2020.11-mingw-w64-i686-aarch64-none-elf.tar.xz
downloaded from:
https://developer.arm.com/tools-and-software/open-source-software/developer-...
Differences in compiler configuration (gcc -v) are:
Failing - Linaro / ARM GCC 10.3(.1):
--enable-checking=release --target=aarch64-none-elf --with-libiconv-prefix=/data/jenkins/workspace/GNU-toolchain/arm-10-4/build-mingw-aarch64-none-elf/host-tools
Working - in house GCC 10.2.1:
--build=x86_64-w64-mingw32 --disable-libffi --disable-libgomp --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --disable-lto --disable-win32-registry --enable-multilib --target=aarch64-elf --with-gcc --with-gnu-as --with-gnu-ld --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-multilib-list=lp64,ilp32 --with-stabs --with-sysroot=/build/aarch64-elf_10.2.0/cross-gcc/aarch64-elf --with-zstd=/build/aarch64-elf_10.2.0/host
Has anyone been able to perform hardware debugging of binaries built with the latest 10.3 builds using GDB (and maybe even Eclipse CDT)?
Any suggestions as to other steps to try?
Thanks.