问题描述
ELF 格式中使用的两个透视图:段和节。
使用此透视图时,段透视图是否可以保证看到文件的所有数据?
使用此透视图时,是否保证section透视图可以看到文件的所有数据?
换句话说:
有效的 ELF 格式文件/图像是否可以包含位于该文件特定部分边界内的数据,但超出该文件边界的所有段(不属于该文件的任何段)?
有效的 ELF 格式文件/图像是否可以包含位于该文件边界内的数据,但在该文件边界外的所有部分(不属于该文件的任何部分)?
请淡出您对 ELF 头、程序头表和节头表的考虑。
解决方法
有效的 ELF 格式文件/图像是否可以包含位于该文件特定部分边界内的数据,但超出该文件边界的所有段(不属于该文件的任何段)?
是的。这很常见:没有理由将不可分配的部分放入任何段中。任何带有 .debug_line
、.debug_info
等的文件都不会将这些部分映射到任何段中。
有效的 ELF 格式文件/图像是否可以包含位于该文件边界内的数据,但在该文件边界外的所有部分(不属于该文件的任何部分)?
是的。最终链接的文件不需要包含任何部分(在运行时只有部分重要),您可以使用 strip
去除所有部分。在这样的剥离文件中,其任何段中的数据都不属于任何节(因为没有节开头)。