| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
. always refers to a
location in an output section, it may only appear in an expression
within a SECTIONS command. The . symbol may appear
anywhere that an ordinary symbol is allowed in an expression.
Assigning a value to . will cause the location counter to be
moved. This may be used to create holes in the output section. The
location counter may never be moved backwards.
SECTIONS
{
output :
{
file1(.text)
. = . + 1000;
file2(.text)
. += 1000;
file3(.text)
} = 0x12345678;
}
|
Note: . actually refers to the byte offset from the start of the
current containing object. Normally this is the SECTIONS
statement, whoes start address is 0, hence . can be used as an
absolute address. If . is used inside a section description
however, it refers to the byte offset from the start of that section,
not an absolute address. Thus in a script like this:
SECTIONS
{
. = 0x100
.text: {
*(.text)
. = 0x200
}
. = 0x500
.data: {
*(.data)
. += 0x600
}
}
|
The `.text' section will be assigned a starting address of 0x100
and a size of exactly 0x200 bytes, even if there is not enough data in
the `.text' input sections to fill this area. (If there is too
much data, an error will be produced because this would be an attempt to
move . backwards). The `.data' section will start at 0x500
and it will have an extra 0x600 bytes worth of space after the end of
the values from the `.data' input sections and before the end of
the `.data' output section itself.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |