目标文件格式支持 8 位字节、32 位体系结构和 64 位体系结构的各种处理器。不过,数据表示形式最好可扩展为更大或更小的体系结构。表 7–1 和表 7–2 列出了 32 位数据类型和 64 位数据类型。
目标文件表示格式与计算机无关的一些控制数据。此格式可提供目标文件的通用标识和解释。目标文件中的其余数据使用目标处理器的编码,无论在什么计算机上创建该文件都是如此。
表 7–1 ELF 32 位数据类型
名称 |
大小 |
对齐 |
用途 |
---|---|---|---|
Elf32_Addr |
4 |
4 |
无符号程序地址 |
Elf32_Half |
2 |
2 |
无符号中整数 |
Elf32_Off |
4 |
4 |
无符号文件偏移 |
Elf32_Sword |
4 |
4 |
带符号整数 |
Elf32_Word |
4 |
4 |
无符号整数 |
unsigned char |
1 |
1 |
无符号小整数 |
表 7–2 ELF 64 位数据类型
名称 |
大小 |
对齐 |
目的 |
---|---|---|---|
Elf64_Addr |
8 |
8 |
无符号程序地址 |
Elf64_Half |
2 |
2 |
无符号中整数 |
Elf64_Off |
8 |
8 |
无符号文件偏移 |
Elf64_Sword |
4 |
4 |
带符号整数 |
Elf64_Word |
4 |
4 |
无符号整数 |
Elf64_Xword |
8 |
8 |
无符号长整数 |
Elf64_Sxword |
8 |
8 |
带符号长整数 |
unsigned char |
1 |
1 |
无符号小整数 |
目标文件格式定义的所有数据结构都遵循相关类别的自然大小和对齐规则。数据结构可以包含显式填充,以确保 4 字节目标文件的 4 字节对齐,从而强制结构大小为 4 的倍数,依此类推。数据在文件的开头也会适当对齐。例如,包含 Elf32_Addr 成员的结构在文件中与 4 字节边界对齐。同样,包含 Elf64_Addr 成员的结构与 8 字节边界对齐。
为便于移植,ELF 不使用位字段。