3.6.7 Output Section Discarding

The linker will not create output sections with no contents. This is
for convenience when referring to input sections that may or may not
be present in any of the input files. For example:

.foo : { *(.foo) }

will only create a .foo section in the output file if there is a
.foo section in at least one input file, and if the input
sections are not all empty. Other link script directives that allocate
space in an output section will also create the output section.

The linker will ignore address assignments (see Output Section Address)
on discarded output sections, except when the linker script defines
symbols in the output section. In that case the linker will obey
the address assignments, possibly advancing dot even though the
section is discarded.

The special output section name /DISCARD/ may be used to discard
input sections. Any input sections which are assigned to an output
section named /DISCARD/ are not included in the output file.