Use of static data in the C libraries

Static data refers to persistent read/write data that is not stored on the stack or the heap. This persistent data can be external or internal in scope, and is:

Libraries that use static data might be reentrant, but this depends on their use of the __user_libspace static data area, and on the build options you choose:

The following describes how the C libraries use static data:

Note

Exactly which functions use static data in their definitions might change in future releases.

Callouts from the C library enable access to static data. C library functions that use static data can be categorized as:

When the C library does something that requires implicit static data, it uses a callout to a function you can replace. These functions are shown in Table 1. They do not use semihosting.

Table 1. C library callouts

FunctionDescription
__rt_errno_addr()Called to get the address of the variable errno
__rt_fp_status_addr()Called by the floating-point support code to get the address of the floating-point status word
locale functionsThe function __user_libspace() creates a block of private static data for the library

The default implementation of __user_libspace creates a 96-byte block in the ZI region. Even if your application does not have a main() function, the __user_libspace() function does not normally have to be redefined.

Note

Exactly which functions use static data in their definitions might change in future releases.

Show/hideSee also

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0475H
Non-ConfidentialID070912