包含程序和控制信息的各种节。下表中的各节由系统使用,并且具有指明的类型和属性。
表 12-10 ELF 特殊节
|
构成程序的内存映像的未初始化数据。根据定义,系统在程序开始运行时会将数据初始化为零。如节类型 SHT_NOBITS 所指明的那样,此节不会占用任何文件空间。
注释信息,通常由编译系统的组件提供。此节可以由 mcs(1) 进行处理。
构成程序的内存映像的已初始化数据。
动态链接信息。有关详细信息,请参见动态节。
进行动态链接所需的字符串,通常是表示与符号表各项关联的名称的字符串。
动态链接符号表。有关详细信息,请参见符号表节。
用于展开栈的调用帧信息。
可执行指令,用于构成包含此节的可执行文件或共享目标文件的单个终止函数。有关详细信息,请参见初始化和终止例程。
函数指针数组,用于构成包含此节的可执行文件或共享目标文件的单个终止数组。有关详细信息,请参见初始化和终止例程。
全局偏移表。有关详细信息,请参见全局偏移表(特定于处理器)。
符号散列表。有关详细信息,请参见散列表节。
可执行指令,用于构成包含此节的可执行文件或共享目标文件的单个初始化函数。有关详细信息,请参见初始化和终止例程。
函数指针数组,用于构成包含此节的可执行文件或共享目标文件的单个初始化数组。有关详细信息,请参见初始化和终止例程。
程序的解释程序的路径名。有关详细信息,请参见程序的解释程序。
特定于 x64 的已初始化数据。此数据与 .data 类似,但用于大小超过 2 GB 的节。
特定于 x64 的只读数据。此数据与 .rodata 类似,但用于大小超过 2 GB 的节。
注释节中说明了该格式的信息。
过程链接表。有关详细信息,请参见过程链接表(特定于处理器)。
函数指针数组,用于构成包含此节的可执行文件或共享目标文件的单个预初始化数组。有关详细信息,请参见初始化和终止例程。
不适用于特定节的重定位。此节的用途之一是用于寄存器重定位。有关详细信息,请参见寄存器符号。
重定位信息,如重定位节中所述。如果文件具有包括重定位的可装入段,则此节的属性将包括 SHF_ALLOC 位。否则,该位会处于禁用状态。通常,name 由应用重定位的节提供。因此,.text 的重定位节的名称通常为 .rel.text 或 .rela.text。
通常构成进程映像中的非可写段的只读数据。有关详细信息,请参见程序头。
节名称。
字符串,通常是表示与符号表各项关联的名称的字符串。如果文件具有包括符号字符串表的可装入段,则此节的属性将包括 SHF_ALLOC 位。否则,该位会处于禁用状态。
符号表,如符号表节中所述。如果文件具有包括符号表的可装入段,则此节的属性将包括 SHF_ALLOC 位。否则,该位会处于禁用状态。
此节包含特殊符号表的节索引数组,如 .symtab 所述。如果关联的符号表节包括 SHF_ALLOC 位,则此节的属性也将包括该位。否则,该位会处于禁用状态。
此节包含构成程序的内存映像的未初始化线程局部数据。根据定义,为每个新执行流实例化数据时,系统都会将数据初始化为零。如节类型 SHT_NOBITS 所指明的那样,此节不会占用任何文件空间。有关详细信息,请参见第 14 章。
这些节包含已初始化的线程局部数据,这些数据构成程序的内存映像。对于每个新执行流,系统会对其内容的副本进行实例化。有关详细信息,请参见第 14 章。
程序的文本或可执行指令。
共享目标文件的部分初始化数据,这些数据构成程序的内存映像。数据会在运行时进行初始化。如节类型 SHT_NOBITS 所指明的那样,此节不会占用任何文件空间。
功能要求。有关详细信息,请参见功能节。
功能链表。有关详细信息,请参见功能节。
功能符号信息。有关详细信息,请参见功能节。
通过 dldump(3C) 创建的动态可执行文件的堆。
.SUNW_ldynsym – .dynsym 组合符号表中符号的索引数组。该索引进行排序,以按照地址递增的顺序引用符号。不表示变量或函数的符号不包括在内。对于冗余全局符号和弱符号,仅保留弱符号。有关详细信息,请参见符号排序节。
.SUNW_ldynsym – .dynsym 组合符号表中线程局部存储符号的索引数组。该索引进行排序,以按照偏移递增的顺序引用符号。不表示 TLS 变量的符号不包括在内。对于冗余全局符号和弱符号,仅保留弱符号。有关详细信息,请参见符号排序节。
扩充 .dynsym 节。此节包含局部函数符号,以在完整的 .symtab 节不可用时在上下文中使用。链接编辑器始终将 .SUNW_ldynsym 节的数据放置在紧邻 .dynsym 节之前。这两个节始终使用相同的 .dynstr 字符串表节。这种放置和组织方式使两个符号表可以被视为一个更大的符号表。请参见符号表节。
部分初始化数据的附加信息。有关详细信息,请参见移动节。
重定位信息,如重定位节中所述。此节是多个重定位节的串联,用于为引用各个重定位记录提供更好的临近性。由于仅有重定位记录的偏移有意义,因此节的 sh_info 值为零。
其他符号表信息。有关详细信息,请参见Syminfo 表节。
版本控制信息。有关详细信息,请参见版本控制节。
具有点 (.) 前缀的节名为系统而保留,但如果这些节的现有含义符合要求,则应用程序也可以使用这些节。应用程序可以使用不带前缀的名称,以避免与系统节产生冲突。使用目标文件格式,可以定义非保留的节。一个目标文件可以包含多个同名的节。
保留用于处理器体系结构的节名称通过在节名称前加上体系结构名称的缩写而构成。该名称应来自用于 e_machine 的体系结构名称。例如,.Foo.psect 是根据 FOO 体系结构定义的 psect 节。
现有扩展使用其历史名称。