You copied the Doc URL to your clipboard.

ARM Compiler armlink User Guide : Manual placement of __at sections

Manual placement of __at sections

You can have direct control over the placement of __at sections, if required.

You can use the standard section placement rules to place __at sections when using the --no_autoat command-line option.


You cannot use __at section placement with position independent execution regions.

The following example shows the placement of read-only sections .ARM.__at_0x2000 and the read-write section .ARM.__at_0x4000. Load and execution regions are not created automatically in manual mode. An error is produced if an __at section cannot be placed in an execution region.

The following example shows the placement of the variables in C or C++ code:

// place the RO variable in a section called .ARM.__at_0x2000
const int foo __attribute__((section(".ARM.__at_0x2000"))) = 100;
// place the RW variable in a section called .ARM.__at_0x4000
int bar __attribute__((section(".ARM.__at_0x4000")));

The following scatter file shows how the manual placement of __at sections is achieved:

LR1 0x0
    ER_RO 0x0 0x2000
        *(+RO)               ; .ARM.__at_0x0000 is selected by +RO
    ER_RO2 0x2000
        *(.ARM.__at_0x02000)  ; .ARM.__at_0x2000 is selected by the section named
                              ; .ARM.__at_0x2000
    ER2 0x4000
        *(+RW +ZI)           ; .ARM.__at_0x4000 is selected by +RW
Was this page helpful? Yes No