SPRU513Z August 2001 – October 2023 SM320F28335-EP
The SECTIONS directive is specified in a command file by the word SECTIONS (uppercase), followed by a list of output section specifications enclosed in braces.
The general syntax for the SECTIONS directive is:
SECTIONS | |
{ | |
name : [property [, property] [, property] . . . ] | |
name : [property [, property] [, property] . . . ] | |
name : [property [, property] [, property] . . . ] | |
} |
Each section specification, beginning with name, defines an output section. (An output section is a section in the output file.) Section names can refer to sections, subsections, or archive library members. (See Section 8.5.5.4 for information on multi-level subsections.) After the section name is a list of properties that define the section's contents and how the section is allocated. The properties can be separated by optional commas. Possible properties for a section are as follows:
|
|||
Syntax: | load = allocation | or | |
> allocation | |||
|
|||
Syntax: | run = allocation | or | |
run > allocation | |||
|
|||
Syntax: | { input_sections } | ||
|
|||
Syntax: | type = COPY | or | |
type = DSECT | or | ||
type = NOLOAD | |||
|
|||
Syntax: | fill = value |
The following example shows a SECTIONS directive in a sample linker command file. (This example uses COFF section names.)
/**************************************************/
/* Sample command file with SECTIONS directive */
/**************************************************/
file1.c.obj file2.c.obj /* Input files */
--output_file=prog.out /* Options */
SECTIONS
{
.text: load = PROG, PAGE = 0,
run = 0x0200, PAGE = 1
.econst: load = RAM1
.ebss: load = RAM1
.scratch: load = 0x0060, PAGE = 1
{
t1.c.obj(.scratch1)
t2.c.obj(.scratch2)
endscratch = .;
}
.data:alpha: align = 16
.data:beta: align = 16
}
Figure 8-3 shows the output sections defined by the SECTIONS directive in the previous example (.vectors, .text, .econst, .ebss, .data:alpha, and .data:beta) and shows how these sections are allocated in memory using the MEMORY directive given in Section 8.5.4.2.