5.6. Tailoring static data access

This section describes using callouts from the C library to access static data. C library functions that use static data can be categorized as follows:

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 5.6. They do not use semihosting.

Table 5.6. C library callouts

FunctionDescription
__rt_errno_addr()Called to get the address of the variable errno. See __rt_errno_addr().
__rt_fp_status_addr()Called by the floating-point support code to get the address of the floating-point status word. See __rt_fp_status_addr().
locale functionsThe function __user_libspace() creates a block of private static data for the library. See Tailoring locale and CTYPE, and Writing reentrant and thread-safe code.

See also Tailoring the runtime memory model for more information about memory use.

The default implementation of __user_libspace creates a 96-byte block in the ZI segment. Even if your application does not have a main() function, the __user_libspace() function does not normally have to be redefined. However, if you are writing an operating system or a process switcher, you must re-implement this function (see Writing reentrant and thread-safe code).

Note

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

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0205G
Non-Confidential