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

Table 2.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 using assembler macros, 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 © 2007 ARM Limited. All rights reserved.ARM DUI 0349A
Non-Confidential