Linux 可执行文件ELF中的PT_INTERP段顺序
第2-3页的ELF规范说明了p_type=PT_INTERP的广告节目头条目 它必须位于任何可加载段条目之前 我想知道这条规则是否涉及 1) 此项在程序头表中的顺序 或2)原始内容(带实际解释器路径的字符串)在文件布局中的位置 或者两者都有 GNU链接器ld似乎遵循3)。ld生成的程序头生成PT_PHDR,然后生成PT_INTERP,然后生成PT_LOAD, 实际的解释器字符串是在程序头之后,在任何代码和数据内容之前生成的。 它还(不必要地)在带有sh_type=SHT_PROGBITS的节头中生成特殊的节头条目.interp,这与程序头条目PT_interp重复 在我的链接器中,我想将INTERP路径字符串与文件末尾附近的.strtab和.shstrtab内容连接起来,因为这三个部分都是字节对齐的,这将节省对齐内容并减少输出文件的大小。 然而,据我所知,我不确定这是否违反了ELF规范。我相信:Linux 可执行文件ELF中的PT_INTERP段顺序,linux,linker,ld,elf,Linux,Linker,Ld,Elf,第2-3页的ELF规范说明了p_type=PT_INTERP的广告节目头条目 它必须位于任何可加载段条目之前 我想知道这条规则是否涉及 1) 此项在程序头表中的顺序 或2)原始内容(带实际解释器路径的字符串)在文件布局中的位置 或者两者都有 GNU链接器ld似乎遵循3)。ld生成的程序头生成PT_PHDR,然后生成PT_INTERP,然后生成PT_LOAD, 实际的解释器字符串是在程序头之后,在任何代码和数据内容之前生成的。 它还(不必要地)在带有sh_type=SHT_PROGBITS的节头中
PT\u INTERP
必须在程序头表中的PT\u LOAD
s之前PT_INTERP
时会迭代所有程序头,并且似乎不关心该条目在表中的位置李>
在我的链接器中,我想将INTERP路径字符串与文件末尾附近的.strtab和.shstrtab内容连接起来
那应该很好用(但我还没试过)