The image structure

The structure of an image is defined by the:

Each link stage has a different view of the image:

ELF object file view (linker input)

The ELF object file view comprises input sections. The ELF object file can be:

  • a relocatable file that holds code and data suitable for linking with other object files to create an executable file

  • an executable file that holds a program suitable for execution.

Linker view

The linker has two views for the address space of a program that become distinct in the presence of overlaid, position-independent, and relocatable program fragments (code or data):

  • The load address of a program fragment is the target address that the linker expects an external agent such as a program loader, dynamic linker, or debugger to copy the fragment from the ELF file. This might not be the address at which the fragment executes.

  • The execution address of a program fragment is the target address where the linker expects the fragment to reside whenever it participates in the execution of the program.

If a fragment is position-independent or relocatable, its execution address can vary during execution.

ELF image file view (linker output)

The ELF image file view comprises Program Segments and output sections:

  • a load region corresponds to a Program Segment

  • an execution region corresponds to up to three output sections:

    • RO section

    • RW section

    • ZI section.

One or more execution regions make up a load region.


With armlink, the maximum size of a Program Segment is 2GB.

When describing a memory view:

The following figure shows the relationship between the views at each link stage:

Figure 1. Relationship between sections, regions, and segments

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.

Show/hideSee also

Copyright © 2007-2008, 2011-2012 ARM. All rights reserved.ARM DUI 0377D