链接程序和库指南

Mapfile 缺省选项

链接编辑器使用缺省的 segment_attribute_values 和相应的缺省映射指令定义四个内置段(textdatabssnote)。虽然链接编辑器不使用实际的 mapfile 提供缺省值,但是缺省 mapfile 的模型可以帮助说明链接编辑器遇到 mapfile 时出现的情况。

以下示例说明 mapfile 在使用链接编辑器的缺省值时的表现。链接编辑器开始执行操作时的行为方式就好像已经读入了 mapfile。随后链接编辑器会读取 mapfile 并增大或更改缺省值。

        text = LOAD ?RX; 

        text : ?A!W; 

        data = LOAD ?RWX; 

        data : ?AW; 

        note = NOTE; 

        note : $NOTE;

读入 mapfile 中的每个段声明时,都会将其与现有的段声明列表进行如下比较:

  1. 如果 mapfile 中尚未存在此段,但是存在具有相同段类型值的其他段,则在具有相同 segment_type 的所有现有段之前添加此段。

  2. 如果现有 mapfile 中没有一个段与刚读入的段的 segment_type 值相同,则按 segment_type 值添加段以保持以下顺序:

    INTERP

    LOAD

    DYNAMIC

    NOTE

  3. 如果段的 segment_type 值为 LOAD,并且已经为此可装入 (LOAD) 的段定义了 virtual_address 值,则将此段放置在任何没有定义 virtual_address 值或 virtual_address 值较大的可装入 (LOAD) 的段之前,但要放置在任何 virtual_address 值较小的段之后。

读入 mapfile 中的每个映射指令时,将该指令添加在已经为同一个段指定的所有其他映射指令之后,但要在此段的缺省映射指令之前。