Using __at sections to place sections at a specific address

You can give a section a special name that encodes the address where it must be placed. You specify the name as follows:

.ARM.__at_address

Where:

address

is the required address of the section. You can specify this in hexadecimal or decimal. Sections in the form of .ARM.__at_address are referred to by the abbreviation __at.

In the compiler, you can assign variables to __at sections by:

Example 19. Assigning variables to __at sections

; place variable1 in a section called .ARM.__at_0x00008000
int variable1 __attribute__((at(0x8000))) = 10;

; place variable2 in a section called .ARM.__at_0x8000
int variable2 __attribute__((section(".ARM.__at_0x8000"))) = 10;

Note

When using __attribute__((at(address))), the part of the __at section name representing address is normalized to an 8 digit hexadecimal number. The name of the section is only significant if you are trying to match the section by name in a scatter file. The linker automatically assigns __at sections when you use the --autoat command-line option. This option is the default.

Show/hideSee also

Copyright © 2007-2008, 2011 ARM. All rights reserved.ARM DUI 0377C
Non-ConfidentialID061811