ZHCADC4A September 2011 – March 2014
在 <segment id, tag, value> 三元组中编码程序标头属性,可表示如下:
typedef struct
{
Elf32_Half pha_seg_id; /* Segment id */
Elf32_Half pha_tag_id; /* Attribute kind id */
Union
{
Elf32_Off pha_offset; /* byte offset within the .TI.phattrs section */
Elf32_Word pha_value; /* Constant tag value */
} pha_un;
} Elf32_TI_PHAttrs;
区段 id 和标签 id 都按照 ELF 文件的字节顺序编码为 2 字节无符号整数。联合体 pha_un 中的字段按照 ELF 文件的字节顺序编码为 4 字节无符号整数。该表示借鉴了动态标签的 <tag, value> 表示。
标签值可以是内联 32 位常量或 .TI.phattrs 段中的偏移量,该偏移量指向固定长度二进制数据 (FLBD) 或空终止字节字符串 (NTBS)。固定长度二进制数据大小应为 32 位对齐。
如果存在扩展程序标头属性区段,则其以 PHA_NULL 标签终止。
属性标签值和属性由 TI 分配和维护,并且是特定于处理器的。所有未定义值都保留供将来使用。
属性标签确定如何解释 pha_un 的值。每个属性都有预定义行为。pha_un 字段可解释为 pha_value 或 pha_offset,也可不使用。如果使用了 pha_offset,则该值指向 NTBS 或 FLBD。如果将 pha_offset 解释为 FLBD,则应预先定义字段长度。