|
|
|
|
Home / Libraries and Floating Point Support Guide
ISO C features missing from microlib
ISO C features missing from microlibMajor ISO C90 features not supported by microlib are: - 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
Almost all functions that interact with an operating
system are not supported by microlib. For example, abort(), exit(), atexit(), assert(), time(), system() and getenv().
An exception is clock(). A minimal implementation
of clock() has been provided, which returns
only -1, not the elapsed time. You may reimplement clock() (and _clock_init(),
which it needs), if required. - File I/O
By
default, all the stdio functions that interact
with a file pointer return an error if called. The only exceptions
to this are the three standard streams stdin, stdout and stderr. You can change this behavior using #pragma import(__use_full_stdio).
Use of this pragma provides a microlib version of stdio that
supports ANSI C, with only the following exceptions: the error and EOF indicators
are not supported, so feof() and ferror() return 0 all streams are unbuffered, so setvbuf() and setbuf() fail.
- 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 diverges from IEEE 754 in
the following ways, but uses the same data formats and matches IEEE
754 in operations involving only normalized numbers: Operations involving NaNs, infinities or input denormals
produce indeterminate results. Operations that produce a result
that is nonzero but very small in value, return zero. IEEE exceptions cannot be flagged by microlib, and
there is no fp_status() register in microlib. The sign of zero is not treated as significant by
microlib, and zeroes that are output from microlib floating-point
arithmetic have an unknown sign
bit. Only the default rounding mode is supported.
- Position independent and thread
safe code
Microlib has no reentrant variant.
Microlib does not provide mutex locks to guard against code that
is not thread safe. Use of microlib is not compatible with FPIC or
RWPI compilation modes, and although ROPI code can be linked with microlib,
the resulting binary is not ROPI-compliant overall.
See also
- Concepts
- Reference
ARM
C and C++ Libraries and Floating-Point Support Reference: Compiler Reference:
|
|
|