Comment 2 for bug 1806243

Revision history for this message
Peter Maydell (pmaydell) wrote :

The disassembler is giving you a hint here:

2000408e: itt lt
20004090: pushlt {r0, r1}
20004092: blt.w 0x20004082 ; unpredictable <IT:lt> // <-- GDB hangs here

Your code has a "blt" instruction inside an IT block in a way that is archictecturally UNPREDICTABLE, and the CPU is allowed to not behave in the way you might expect it to.

Your attempt to reproduce the problem is likely generating different instructions (specifically probably a different encoding of the branch instruction).

On the other hand having QEMU behave differently in singlestep mode and just hang (rather than, say, making the insn UNDEF or treating it as a condition-failed or a condition-passed) is not ideal.

Do you have a sample binary and QEMU command line that reproduces this?