Skip to main content

IAR Embedded Workbench for Arm 9.70.x

Prebuilt runtime libraries

In this section:

The prebuilt runtime libraries are configured for different combinations of these options:

  • Processor variant

  • Data model

  • Library configuration—Normal or Full.

The linker will automatically include the correct library files and library configuration file. To explicitly specify a library configuration, use the ‑‑dlib_config compiler option. However, the Full library configuration is the only configuration that exists for Libc++. The ‑‑dlib_config compiler option cannot be used to specify another configuration.

Tip

To see which runtime library files that the linker includes, use the linker option ‑‑log libraries, see ‑‑log.

Library filename syntax

The names of the libraries are constructed from these elements:

arch

Specifies the CPU architecture:

4t = Armv4T

5E = Armv5E

6M or 6Mx = Armv6M (6Mx is built with ‑‑no_literal_pool)

7M or 7Mx = Armv7M (7Mx is built with ‑‑no_literal_pool)

7Sx = Armv7-A and Armv7-R, built with ‑‑no_literal_pool

4as = Generic Armv4, built with bounds-checking

7as = Generic Armv7, built with bounds-checking

8A = Armv8-A

mode

Specifies the default processor/execution mode:

a = Arm mode

t = Thumb mode

x = 64-bit mode

endian

Specifies the byte order:

l = little-endian

b = big-endian

lib-config

Specifies the library configuration:

n = Normal

f = Full

rwpi

Specifies whether the library supports RWPI:

s = RWPI supported, using offsets relative to the static base register (R9)

g = RWPI supported, using offsets relative to the global offset table (GOT)

not present = no RWPI support

fp

Specifies how floating-point operations are implemented:

v = VFP

s = VFP for single precision only

not present = software implementation

abi

Specifies the data model in 64-bit mode:

44 = ILP32 (4-byte long, 4-byte pointers)

88 = LP64 (8-byte long, 8-byte pointers)

not present = the library is for use in 32-bit mode

debug-interface

Specifies a semihosting mechanism:

s = SVC

b = BKPT

i = IAR-breakpoint

pacbti

Specifies whether the library supports branch protection (PACBTI):

p = PACBTI supported

not present = no support for PACBTI

You can find the library object files in the directory arm\lib\ and the library configuration files in the directory arm\inc\.

Groups of library files

The libraries are delivered in groups of library functions:

Library files for C library functions

These are the functions defined by Standard C, for example, functions like printf and scanf. Note that this library does not include math functions.

The names of the library files are constructed in the following way:

dl{arch}_{mode}{endian}{lib-config}[rwpi][abi][pacbti].a

which more specifically means

dl{4t|5E|6M|6Mx|7M|7Mx|7Sx|8A}_{a|t|x}{l|b}{n|f}[s|g][44|88][p].a
Library files for C++ library functions

These are the functions defined by C++, compiled with support for Standard C++.

There are separate libraries for the Dinkumware C++14 library (dlpp) and the Libc++ C++17 library (dllibcpp).

The names of the library files are constructed in the following way:

dlpp{arch}_{mode}{endian}{fp}_{lib-config}c[rwpi][abi][pacbti].a
dllibcpp{arch}_{mode}{endian}{fp}_fc[rwpi][abi][pacbti].a

which more specifically means:

dlpp{4t|5E|6M|6Mx|7M|7Mx|7Sx|4as|7as|8A}_{a|t|x}{l|b}{v|s|}_{n|f}c[s|g][44|88][p].a
dllibcpp{4t|5E|6M|6Mx|7M|7Mx|7Sx|4as|7as|8A}_{a|t|x}{l|b}{v|s|}_fc[s|g][44|88][p].a
Library files for C++ runtime library functions

These are the runtime functions needed for C++, used for both the Libc++ and the DLIB C++ libraries.

The names of the library files are constructed in the following way:

dlpprt{arch}_{mode}{endian}_{lib-config}c[rwpi][abi][pacbti].a

which more specifically means

dlpprt{4t|5E|6M|6Mx|7M|7Mx|7Sx|4as|7as|8A}_{a|t|x}{l|b}_{n|f}c[s|g][44|88][p].a
Library files for math functions

These are the functions for floating-point arithmetic and functions with a floating-point type in its signature as defined by Standard C, for example, functions like sqrt.

The names of the library files are constructed in the following way:

m{arch}_{mode}{endian}[fp][rwpi][abi][pacbti].a

which more specifically means

m{4t|5E|6M|6Mx|7M|7Mx|7Sx|8A}_{a|t|x}{l|b}[v|s][g][44|88][p].a
Library files for thread support functions

These are the functions for thread support.

The names of the library files are constructed in the following way:

th{arch}_{mode}{endian}{lib-config}[abi][pacbti].a

which more specifically means

th{4t|5E|6M|6Mx|7M|7Mx|7Sx|8A}_{a|t|x}{l|b}{n|f}[44|88][p].a
Library files for timezone and daylight saving time support functions

These are the functions with support for timezone and daylight saving time functionality.

The names of the library files are constructed in the following way:

tz{arch}_{mode}{endian}[rwpi][abi][pacbti].a

which more specifically means

tz{4t|5E|6M|6Mx|7M|7Mx|7Sx|8A}_{a|t|x}{l|b}[s|g][44|88][p].a
Library files for runtime support functions

These are functions for system startup, initialization, non floating-point AEABI support routines, and some of the functions that are part of Standard C and C++.

The names of the library files are constructed in the following way:

rt{arch}_{mode}{endian}[rwpi][abi][pacbti].a

which more specifically means

rt{4t|5E|6M|6Mx|7M|7Mx|7Sx|8A}_{a|t|x}{l|b}[g][44|88][p].a
Library files for debug support functions

These are functions for debug support for the semihosting interface. The names of the library files are constructed in the following way:

sh{debug-interface}_{endian}[rwpi][pacbti].a

or

sh{arch}_{endian}[rwpi][abi][pacbti].a

which more specifically means

sh{s|b|i}_{l|b}[g][p].a

or

sh{6Mx|7Mx|7Sx|8A}_{l|b}[g][44|88][p].a