SLAU131Y October 2004 – June 2021
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 9.6.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 | or | ||
type = VECT_INIT | |||
|
|||
Syntax: | fill = value |
The SECTIONS Directive shows a SECTIONS directive in a sample linker command file.
/*******************************************************/
/* Sample command file with SECTIONS directive */
/*******************************************************/
file1.c.obj file2.c.obj /* Input files */
--output_file=progr.out /* Options */
SECTIONS
{
.bss : load = RAM
.text : load = FLASH
.const : load = FLASH
.vectors : load = 0xFFE0
{
t1.c.obj (.intvec1)
t2.c.obj (.intvec2)
}
.data:alpha : align = 16
.data:beta : align = 16
}
Figure 9-2 shows the output sections defined by the SECTIONS directive in The SECTIONS Directive (.vectors, .text, .const, .bss, .data:alpha, and .data:beta) and shows how these sections are allocated in memory using the MEMORY directive given in The MEMORY Directive.