Source: qemu-system-arm
Followup-For: Bug #1079835
X-Debbugs-Cc: tj.iam...@proton.me

With the failed sbuild environment still available one can debug the
FAIL or TIMEOUT test binaries from outside:

$ base=/srv/NAS/Sunny/SourceCode/builds/tmp.sbuild.voDevnvR

A FAIL test:

$ sudo qemu-system-arm  -m 1G -chardev stdio,mux=on,id=stdio0 
-semihosting-config enable=on,chardev=stdio0,arg=program-name -monitor none 
-serial none -machine none,accel=tcg -cpu cortex-a7 -device 
loader,file=$base/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi/test/printff_scanff_thumb_v7_nofp,cpu-num=0
 -nographic
hello world 1
checking floating point
checking pos args                                                               
                                                                                
                                                 ARM fault: undef
R0:   0x00000002
R1:   0x00006fc7
R2:   0x201ffeb4
R3:   0x20200000
R4:   0x00000000
R5:   0x20000004
R6:   0x201ffecc
PC:   0x00000342

A TIMEOUT test (process hangs indefinitely):

$ sudo qemu-system-arm -m 1G -chardev stdio,mux=on,id=stdio0 
-semihosting-config enable=on,chardev=stdio0,arg=program-name -monitor none 
-serial none -machine none,accel=tcg -cpu cortex-a7 -device 
loader,file=$base/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi/newlib/libm/test/math_test_thumb_v7_a_nofp,cpu-num=0
 -nographic


Debugging via gdb:

Terminal A:

$ sudo qemu-system-arm -gdb tcp::9999 -S -m 1G -chardev stdio,mux=on,id=stdio0 
-semihosting-config enable=on,chardev=stdio0,arg=program-name -monitor none 
-serial none -machine none,accel=tcg -cpu cortex-a7 -device 
loader,file=$base/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi/test/printff_scanff_thumb_v7_nofp,cpu-num=0
 -nographic

Terminal B:

$ sudo gdb-multiarch -ex "directory 
/srv/NAS/Sunny/SourceCode/builds/tmp.sbuild.voDevnvR/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi"
 -ex "file 
/srv/NAS/Sunny/SourceCode/builds/tmp.sbuild.voDevnvR/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi/test/printff_scanff_thumb_v7_nofp"
 -ex "set sysroot $base" -ex "target remote localhost:9999" -ex "break main" 
-ex "break ../../../test/printf_scanf.c:254"

GNU gdb (Debian 13.1-3) 13.1
...
Source directories searched: 
/srv/NAS/Sunny/SourceCode/builds/tmp.sbuild.voDevnvR/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi:$cdir:$cwd
Reading symbols from 
/srv/NAS/Sunny/SourceCode/builds/tmp.sbuild.voDevnvR/build/picolibc-ZiYfA8/picolibc-1.8.6/debian/build/arm-none-eabi/test/printff_scanff_thumb_v7_nofp...
Remote debugging using localhost:9999
_start () at ../../../picocrt/machine/arm/crt0.c:117
117             __asm__("mov sp, %0" : : "r" (__stack));
Breakpoint 1 at 0x140: file ../../../test/printf_scanf.c, line 185.
Breakpoint 2 at 0x1ec: ../../../test/printf_scanf.c:254. (2 locations)
(gdb) c
Continuing.

Breakpoint 1, main () at ../../../test/printf_scanf.c:185
185     {
(gdb) c
Continuing.

Breakpoint 2.1, main () at ../../../test/printf_scanf.c:254
254             for (x = 0; x <= 6; x++) {
(gdb) s
256                             char tbuf[10] = "xxxxxxxxx";
(gdb) s
arm_data_abort_vector () at ../../../picocrt/machine/arm/crt0.c:284
284         VECTOR_COMMON;
(gdb) s
285         __asm__("mov r1, #" REASON(REASON_UNDEF));
(gdb) s
286         __asm__("bl  arm_fault");
(gdb) s
arm_fault (f=0x201fffe0, reason=0) at ../../../picocrt/machine/arm/crt0.c:251
251         printf("ARM fault: %s\n", reasons[reason]);

Reply via email to