1.2.6 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.

Non-ConfidentialPDF file icon PDF versionARM DUI0475M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.