链接程序和库指南

注释节

供应商或系统工程师可能需要使用特殊信息标记目标文件,以便其他程序可根据此信息检查一致性或兼容性。为此,可使用 SHT_NOTE 类型的节和 PT_NOTE 类型的程序头元素。

节和程序头元素中的注释信息包含任意数量的项,如下图所示。对于 64 位目标文件和 32 位目标文件,每一项都是一个目标处理器格式的 4 字节字的数组。图 7–6 中所示的标签用于帮助说明注释信息的结构,但不属于规范的一部分。

图 7–5 注释信息

ELF 注释节信息。

nameszname

名称中的前 namesz 个字节,表示项的属主或创建者的字符(以空字符结尾)。不存在用于避免名称冲突的正式机制。根据约定,供应商使用其各自的名称(如 "XYZ Computer Company")作为标识符。如果不存在 name,则 namesz 值为零。如有必要,可使用填充确保描述符 4 字节对齐。namesz 中不包括这种填充方式。

descszdesc

desc 中的前 descsz 个字节包含注释描述符。如果不存在描述符,则 descsz 值为零。如有必要,可使用填充确保下一个注释项 4 字节对齐。descsz 中不包括这种填充方式。

type

提供对描述符的解释。每个创建者可控制其各自的类型。单个 type 值可以存在多种解释。程序必须同时识别名称和 type 才能理解描述符。类型当前必须为非负数。

下图中所示的注释段包含两项。

图 7–6 注释段示例

ELF 注释节示例。


注 –

系统会保留没有名称 (namesz == 0) 以及名称长度为零 (name[0] == '\0') 的注释信息,但当前不定义任何类型。其他所有名称必须至少有一个非空字符。