![](/images/backgrounds/127623/bg138.png)
312 Appendix A
Using Mapfiles
Internal Map Structure
• If an entrance criteria selects both S (short data) and !S (non-short
data) sections, the layout of the sections depends on section_type and
S flag status.The linker maintains the following order:
$PROGBITS and !S
$PROGBITS and S
$NOBITS and S
$NOBITS and !S
• The linker always tries to group all $NOBITS sections at the end of
the data segment. If it does not place a $NOBITS section at the end of
the data segment because of user-specified mapping directives, the
linker converts that section to a $PROGBITS section and zero-fills the
section contents. The linker issues a warning message when it
converts a $NOBITS section into a $PROGBITS section.
Interaction between User-defined andDefault Mapfile DirectivesThe linker adds the section mapping directives from the default mapfile
after the user-specified mapping directives. The following rules apply if
the you declare a built-in segment (a segment defined in the default
mapfile):
• If the segment_type and “segment_flags” differ from the default
mapfile declarations, the linker issues a warning and uses the
user-specifiedsegment_type and/or segment_flags for that segment.
• If your segment declaration does not specify a
segment_attribute_value, the linker takes it from the default mapfile’s
segment declaration.
• The linker completely ignores the default mapfile if you use the
option +nodefaultmap on the ld command line.