Linker and Libraries Guide

Mapfile Option Defaults

The link-editor defines three built-in segments (text, data, and note) with default segment_attribute_values and corresponding default mapping directives, as described in "Segment Declarations". Even though the link-editor does not use an actual mapfile to provide the defaults, the model of a default mapfile helps illustrate what happens when the link-editor encounters your mapfile.

The example below shows how a mapfile would appear for the link-editor defaults. The link-editor begins execution behaving as if the mapfile has already been read in. Then the link-editor reads your mapfile and either augments or makes changes to the defaults.


text = LOAD ?RX; 
text : ?A!W; 
data = LOAD ?RWX; 
data : ?AW; 
note = NOTE; 
note : $NOTE; 

As each segment declaration in your mapfile is read in, it is compared to the existing list of segment declarations as follows:

  1. If the segment does not already exist in the mapfile, but another with the same segment-type value exists, the segment is added before all of the existing segments of the same segment_type.

  2. If none of the segments in the existing mapfile has the same segment_type value as the segment just read in, then the segment is added by segment_type value to maintain the following order:

    INTERP

    LOAD

    DYNAMIC

    NOTE

  3. If the segment is of segment_type LOAD and you have defined a virtual_address value for this LOADable segment, the segment is placed before any LOADable segments without a defined virtual_address value or with a higher virtual_address value, but after any segments with a virtual_address value that is lower.

As each mapping directive in a mapfile is read in, the directive is added after any other mapping directives that you already specified for the same segment but before the default mapping directives for that segment.