Thumb C libraries
The linker automatically links in the Thumb C library if the objects to be linked contain Thumb instructions.
Objects use Thumb instructions if they have been built for:
Thumb code, either using the --thumb option or #pragma thumb.
Interworking, using the --apcs /interwork option on architecture ARMv4T.
An ARMv6-M architecture target or processor, for example, Cortex-M1 or Cortex-M0.
An ARMv7-M architecture target or processor, for example, Cortex-M3.
Despite its name, the Thumb C library might not contain exclusively Thumb code. If ARM instructions are available, the Thumb library might use them to improve the performance of critical functions such as memcpy(), memset(), and memclr(). The bulk of the Thumb C library, however, is coded in Thumb for the best code density.
For an ARM instruction-only build, compile with the --arm_only option.
The Thumb C library used for ARMv6-M targets contains only 16-bit Thumb code.
The Thumb C library used for ARMv7-M targets contains both 16-bit and 32-bit Thumb code.