跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 链接程序和库指南 Oracle Solaris 11.1 Information Library (简体中文) |
链接编辑器使用缺省的 segment_attribute_values 和对应的缺省映射指令定义了四个内置段(text、data、bss 和 note)。虽然链接编辑器不使用实际的 mapfile 提供缺省值,但是缺省 mapfile 的模型可以帮助说明链接编辑器遇到 mapfile 时出现的情况。
以下示例说明 mapfile 在使用链接编辑器的缺省值时的表现。链接编辑器开始执行操作时,行为上好像已经读入了 mapfile。随后链接编辑器会读取 mapfile 并增大或更改缺省值。
text = LOAD ?RX; text : ?A!W; data = LOAD ?RWX; data : ?AW; note = NOTE; note : $NOTE;
读入 mapfile 中的每个段声明时,都会将其与现有的段声明列表进行如下比较:
如果 mapfile 中尚不存在此段,但是存在具有相同段类型值的其他段,则在具有相同 segment_type 的所有现有段之前添加此段。
如果现有 mapfile 中没有任何段与刚读入的段的 segment_type 值相同,则按 segment_type 值添加该段以保持以下顺序:
INTERP
LOAD
DYNAMIC
NOTE
如果段的 segment_type 值为 LOAD,并且已经为这个可装入 (LOAD) 的段定义了 virtual_address 值,则将此段放置在任何没有定义 virtual_address 值或 virtual_address 值较大的可装入 (LOAD) 的段之前,但会放置在任何 virtual_address 值较小的段之后。
读入 mapfile 中的每个映射指令时,指令将添加在已经为同一个段指定的所有其他映射指令之后,但要在此段的缺省映射指令之前。