On 08/02/2026 13:03, Dirk Eddelbuettel wrote:
/tmp/ccTWsmvQ.s: Assembler messages:
/tmp/ccTWsmvQ.s:1735: Error: thumb conditional instruction should be in IT 
block -- `addcs r9,r9,#65536'
/tmp/ccTWsmvQ.s:1750: Error: thumb conditional instruction should be in IT 
block -- `addcs r8,r8,#65536'
/tmp/ccTWsmvQ.s:1785: Error: thumb conditional instruction should be in IT 
block -- `addcs r8,r8,#65536'
/tmp/ccTWsmvQ.s:1817: Error: thumb conditional instruction should be in IT 
block -- `addcs lr,lr,#65536'
32-bit arm cores can operate in two modes, "arm mode" and "thumb mode".
Debian armhf defaults to thumb mode, and it's architecture baseline includes
thumb version 2 (thumb2 for short).

"arm mode" uses 32-bit fixed-width instructions, while thumb2 uses a mixed-width encoding where some instructions are 16-bit and others are 32-bit. This increases code density on average, but there is a compromise, condition codes are no longer encoded directly in the instruction encoding, instead conditional instructions must
be preceded by an "IT" instruction. One IT instruction can cover conditional
execution of up to four following instructions.

There is an assembler flag "-mimplicit-it=thumb", which makes the assembler
automatically insert IT instructions, this flag can be passed to the assmebler
via the compiler using "-Wa,-mimplicit-it=thumb"

version 2.0a-16 of sprng passed this flag on armhf, version 2.0a-17 did not
because the conditional logic intended to pass it was broken.

Reply via email to