SPRUIG8J January 2018 – March 2024
An output section can be formed in one of two ways:
Method 1 | As the result of a SECTIONS directive definition |
Method 2 | By combining input sections with the same name into an output section that is not defined in a SECTIONS directive |
If an output section is formed as a result of a SECTIONS directive, this definition completely determines the section's contents. (See Section 12.5.5 for examples of how to define an output section's content.)
If an output section is formed by combining input sections not specified by a SECTIONS directive, the linker combines all such input sections that have the same name into an output section with that name. For example, suppose the files f1.c.obj and f2.c.obj both contain named sections called Vectors and that the SECTIONS directive does not define an output section for them. The linker combines the two Vectors sections from the input files into a single output section named Vectors, allocates it into memory, and includes it in the output file.
By default, the linker does not display a message when it creates an output section that is not defined in the SECTIONS directive. You can use the --warn_sections linker option (see Section 12.4.31) to cause the linker to display a message when it creates a new output section.
After the linker determines the composition of all output sections, it must allocate them into configured memory. The MEMORY directive specifies which portions of memory are configured. If there is no MEMORY directive, the linker uses the default configuration. (See Section 12.5.4 for more information on configuring memory.)