Keil™, An ARM® Company

RealView Libraries and Floating Point Support Guide

ISO C features missing from microlib

3.5. ISO C features missing from microlib

This section provides a list of the major ISO C90 features that are not supported by microlib.

Wide character and multibyte support

All functions dealing with wide characters or multibyte strings are not supported by microlib. A link error is generated if these are used. For example, mbtowc(), wctomb(), mbstowcs() and wcstombs(). All functions defined in Normative Addendum 1 are not supported by microlib.

Operating system interaction

All functions that interact with an operating system are not supported by microlib. For example, abort(), exit(), atexit(), clock(), time(), system() and getenv().

File I/O

All the stdio functions that interact with a file pointer return an error if implemented. The only exceptions to this are the three standard streams stdin, stdout and stderr.

Configurable locale

The default C locale is the only one available.

Signals

The functions signal() and raise() are provided but microlib does not generate signals. The only exception to this is if the program explicitly calls raise().

Floating point support

Floating point support is not IEEE 754 compliant.

Operations that produce unpredictable output are those that:

  • involve NaNs, infinities or denormals

  • according to proper IEEE 754 rules, raise IEEE exceptions other than through inexact results. Microlib however, does not raise IEEE exceptions but returns an unpredictable result instead.

Additionally, the sign of zero is not treated as significant by microlib and produces unpredictable output.

Position independent and thread safe code

Microlib has no re-entrant variant. Microlib does not provide mutex locks to guard against code that is not thread safe. Use of microlib is not compatible with RWPI compilation modes, and although ROPI code can be linked with microlib, the resulting binary will not be ROPI-compliant overall.

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0378A