1. 基本概念
1) LMA: Load Address
2) VMA: Virtual Address
3) 实例
int a __attribute__((section(".section AA, \"aw\", @nobits")));
int b __attribute__((section(".section BB, \"aw\", @progbits")));
int c __attribute__((section(".section CC, \"ax\", @progbits")));
a: section is allocatable
w: section is writable
x: section is executable
2. SECTION属性
bin
Section Attributes
Attribute | Indicates the section |
---|
progbits | is stored in the disk image, as opposed to allocated and initialized at load. |
nobits | is allocated and initialized at load (the opposite of progbits ). Only one of progbits or nobits may be specified; they are mutually exclusive attributes. |
start=address | has an LMA starting at address . If a LMA alignment constraint is given, it is checked against the provided address and a warning is issued if address does not meet the alignment constraint. |
follows=sectname | should follow the section named sectname in the output file (LMA). If a LMA alignment constraint is given, it is respected and a gap is inserted such that the section meets its alignment requirement. Note that as LMA overlap is not allowed, typically only one section may follow another. |
align=n | requires a LMA alignment of n bytes. The value n must always be a power of 2. LMA alignment defaults to 4 if not specified. |
vstart=address | has an VMA starting at address . If a VMA alignment constraint is given, it is checked against the provided address and a warning is issued if address does not meet the alignment constraint. |
vfollows=sectname | should follow the section named sectname in the output file (VMA). If a VMA alignment constraint is given, it is respected and a gap is inserted such that the section meets its alignment requirement. VMA overlap is allowed, so more than one section may follow another (possibly useful in the case of overlays). |
valign=n | requires a VMA alignment of n bytes. The value n must always be a power of 2. VMA alignment defaults to the LMA alignment if not specified.
|