主要观点:ELF 设计强调控制结构的自然大小和对齐指南,虽过去能高效处理但会导致文件较大,提出“Light ELF”(EV_LIGHT
,版本 2),其在 ELF 头中e_version
设为 2 以保持向后兼容,链接时传统 ELF 和 Light ELF 可混合,Light ELF 利用[CREL]进行重定位,传统 ELF 的[节头表]较大,Light ELF 通过特定格式减小其大小,符号表等可压缩,压缩节面临头部开销问题,Light ELF 引入小开销的头部格式,还开发了 Clang/lld 原型并与 WebAssembly 比较,强调这只是个思考实验。
关键信息:
EV_NONE
为 0,EV_CURRENT
为 1,EV_LIGHT
为 2。- Light ELF 利用[CREL],传统 ELF 的[REL 和 RELA]未用。
- 紧凑节头表格式及编码方式。
- 符号表可通过[SHF_COMPRESSED]压缩,字符串表可利用文本压缩算法。
- 压缩节面临头部开销问题及 Light ELF 的解决办法。
- 开发的 Clang/lld 原型及相关实验数据。
重要细节:
- 传统 ELF 中
sh_addralign
可为 0 或 2 的正整数次幂,紧凑编码无法编码 0 但无一般性损失。 - 给出了解码特定节头的 C++代码示例。
- 实验中不同优化级别下
.o
文件大小及节头表大小的变化。 - 与 WebAssembly 的比较及相关编译命令。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。