使用程序或部分 headers 加载 ELF

use program or section headers to load an ELF

我正在编写一个 EFI 应用程序,它将 ELF 加载到内存中并跳转到它,但我不知道 header 我应该先分析什么(程序或部分 header)。我有一个读取程序 headers 以将 ELF 加载到内存中的函数(有效)和一个读取 headers 部分以将 ELF 加载到内存中的函数(也有效)。

程序加载器应该只查看程序 header。 headers 部分用于调试器等工具。我不认为这在原始 ELF 规范或 System V ABI 规范中有明确说明,但它非常隐含:

即使在今天,当定义动态链接器使用的新功能时,引用也会被添加到动态部分,即使理论上,也可以从部分 header 中获取信息(但某些架构可能有一些例外)。