Keil Logo Arm Logo

Technical Support

On-Line Manuals

Libraries and Floating Point Support Guide

Conventions and feedback The ARM C and C++ libraries Mandatory linkage with the C library C and C++ runtime libraries C and C++ library features Library heap usage requirements of the ARM C and C Compliance with the Application Binary Interface ( Increasing portability of object files to other CL ARM C and C++ library directory structure Selection of ARM C and C++ library variants based Thumb C libraries C++ and C libraries and the std namespace ARM C libraries and multithreading ARM C libraries and reentrant functions ARM C libraries and thread-safe functions Use of static data in the C libraries Use of the __user_libspace static data area by the C library functions to access subsections of the _ Re-implementation of legacy function __user_libspa Management of locks in multithreaded applications How to ensure re-implemented mutex functions are c Using the ARM C library in a multithreaded environ Thread safety in the ARM C library Thread safety in the ARM C++ library The floating-point status word in a multithreaded Using the C library with an application Using the C and C++ libraries with an application Using $Sub$$ to mix semihosted and nonsemihosted I Using the libraries in a nonsemihosting environmen C++ exceptions in a non-semihosting environment Direct semihosting C library function dependencies Indirect semihosting C library function dependenci C library API definitions for targeting a differen Building an application without the C library Creating an application as bare machine C without Integer and floating-point compiler functions and Bare machine integer C Bare machine C with floating-point processing Customized C library startup code and access to C Program design when exploiting the C library Using low-level functions when exploiting the C li Using high-level functions when exploiting the C l Using malloc() when exploiting the C library Tailoring the C library to a new execution environ How C and C++ programs use the library functions Initialization of the execution environment and ex C++ initialization, construction and destruction Legacy support for C$$pi_ctorvec instead of .init_ Exceptions system initialization Emergency buffer memory for exceptions Library functions called from main() Program exit and the assert macro Assembler macros that tailor locale functions in t Link time selection of the locale subsystem in the ISO8859-1 implementation Shift-JIS and UTF-8 implementation Runtime selection of the locale subsystem in the C Definition of locale data blocks in the C library LC_CTYPE data block LC_COLLATE data block LC_MONETARY data block LC_NUMERIC data block LC_TIME data block Modification of C library functions for error sign Modification of memory management functions in the Avoiding the heap and heap-using library functions C library support for memory allocation functions Heap1, standard heap implementation Heap2, alternative heap implementation Using a heap implementation from bare machine C Stack pointer initialization and heap bounds Defining __initial_sp, __heap_base and __heap_limi Extending heap size at runtime Legacy support for __user_initial_stackheap() Tailoring input/output functions in the C and C++ Target dependencies on low-level functions in the The C library printf family of functions The C library scanf family of functions Redefining low-level library functions to enable d The C library functions fread(), fgets() and gets( Re-implementing __backspace() in the C library Re-implementing __backspacewc() in the C library Redefining target-dependent system I/O functions i Tailoring non-input/output C library functions Real-time integer division in the ARM libraries Selecting real-time division in the ARM libraries How the ARM C library fulfills ISO C specification mathlib error handling ISO-compliant implementation of signals supported ISO-compliant C library input/output characteristi Standard C++ library implementation definition C library functions and extensions Persistence of C and C++ library names across rele Link time selection of C and C++ libraries Managing projects that have explicit C or C++ libr Compiler generated and library-resident helper fun C and C++ library naming conventions Using macro__ARM_WCHAR_NO_IO to disable FILE decla The ARM C micro-library Floating-point support

ISO-compliant implementation of signals supported by the signal() function in the C library and additional type arguments

ISO-compliant implementation of signals supported by the signal() function in the C library and additional type arguments

Table 11 shows the signals supported by the signal() function. It also shows which signals use an additional argument to give more information about the circumstance in which the signal was raised. The additional argument is given in the type parameter of __raise(). For example, division by floating-point zero results in a SIGFPE signal with a corresponding additional argument of FE_EX_DIVBYZERO.

Table 11. Signals supported by the signal() function

SignalNumberDescriptionAdditional argument
SIGABRT1

Returned when any untrapped exception is thrown, such as:

  • a negative array size is allocated through the new operator

  • an invalid dynamic cast.

This signal is only used if abort() or assert() are called by your C++ application, and --exceptions is specified.

None
SIGFPE2Used to signal any arithmetic exception, for example, division by zero. Used by hard and soft floating-point and by integer division.A set of bits from FE_EX_INEXACT, FE_EX_UNDERFLOW, FE_EX_OVERFLOW, FE_EX_DIVBYZERO, FE_EX_INVALID, DIVBYZERO [a]
SIGILL [b]3Illegal instruction.None
SIGINT [b]4Attention request from user.None
SIGSEGV [b]5Bad memory access.None
SIGTERM [b]6Termination request.None
SIGSTAK7Obsolete.None
SIGRTRED8Redirection failed on a runtime library input/output stream.Name of file or device being re-opened to redirect a standard stream
SIGRTMEM9Out of heap space during initialization or after corruption.Size of failed request
SIGUSR110User-defined.User-defined
SIGUSR211User-defined.User-defined
SIGPVFN12A pure virtual function was called from C++.-
SIGCPPL13

Not normally used.

-
SIGOUTOFHEAP [c]14Returned by the C++ function ::operator new when out of heap space.Size of failed request
reserved 15-31Reserved.Reserved
other > 31User-defined.User-defined

[a] These constants are defined in fenv.h.

[b] This signal is never generated by the library. It is available for you to raise manually, if required.

[c] Not used in RVCT 2.1, and later.


Although SIGSTAK exists in signal.h, this signal is not generated by the C library and is considered obsolete.

A signal number greater than SIGUSR2 can be passed through __raise() and caught by the default signal handler, but it cannot be caught by a handler registered using signal().

signal() returns an error code if you try to register a handler for a signal number greater than SIGUSR2.

The default handling of all recognized signals is to print a diagnostic message and call exit(). This default behavior applies at program startup and until you change it.

Caution

The IEEE 754 standard for floating-point processing states that the default action to an exception is to proceed without a trap. A raised exception in floating-point calculations does not, by default, generate SIGFPE. You can modify floating-point error handling by tailoring the functions and definitions in fenv.h. However, you must compile these functions with a non-default FP model, such as --fpmode=ieee_fixed and upwards.

For all the signals in Table 11, when a signal occurs, if the handler points to a function, the equivalent of signal(sig, SIG_DFL) is executed before the call to the handler.

If the SIGILL signal is received by a handler specified to by the signal() function, the default handling is reset.

Copyright © 2007-2008, 2011-2012 ARM. All rights reserved.ARM DUI 0378D
Non-ConfidentialID062912

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.