6.4.2 Image symbols

Image symbols are generated by the linker when you do not use scatter-loading to create a simple image.

The following table shows the image symbols:

Table 6-4 Image symbols

Symbol Section type Description
Image$$RO$$Base Output

Address of the start of the RO output section.

Image$$RO$$Limit Output Address of the first byte beyond the end of the RO output section.
Image$$RW$$Base Output Address of the start of the RW output section.
Image$$RW$$Limit Output Address of the byte beyond the end of the ZI output section. (The choice of the end of the ZI region rather than the end of the RW region is to maintain compatibility with legacy code.)
Image$$ZI$$Base Output Address of the start of the ZI output section.
Image$$ZI$$Limit Output Address of the byte beyond the end of the ZI output section.

Note:

  • ARM® recommends that you use region-related symbols in preference to section-related symbols.
  • The ZI output sections of an image are not created statically, but are automatically created dynamically at runtime.
  • There are no load address symbols for RO, RW, and ZI output sections.

If you are using a scatter file, the image symbols are undefined. If your code accesses any of these symbols, you must treat them as a weak reference.

The standard implementation of __user_setup_stackheap() uses the value in Image$$ZI$$Limit. Therefore, if you are using a scatter file you must manually place the stack and heap. You can do this either:

  • In a scatter file using one of the following methods:

    • Define separate stack and heap regions called ARM_LIB_STACK and ARM_LIB_HEAP.
    • Define a combined region containing both stack and heap called ARM_LIB_STACKHEAP.
  • By re-implementing __user_setup_stackheap() to set the heap and stack boundaries.
Non-ConfidentialPDF file icon PDF versionARM DUI0474M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.