ELF目标文件格式
ELF 目标文件格式
ELF为可执行可连接格式文件(executable and linkable format)。ELF目标文件既可以用于程序的链接,也可以用于程序的执行。下图为 ELF目标文件格式的基本框架,图 a 是链接视图,主要由不同的节组成,节是 ELF 文件中具有相同特征的最小可处理单位。图 b 是执行视图,主要由不同的段组成,多个节合并后映射到一个段中。可重定位目标文件对应连接视图,而可执行目标文件对应执行视图。
节头表包含文件中各节的说明信息,每个节在该表中都有一个与之对应的项,每一项都指定了节名和节大小等信息。可重定位目标文件必须有节头表用于链接程序。
程序头表用来指示系统如何创建进程的存储器映像,可执行文件必须具有程序头表。
可重定位目标文件格式
可重定位目标文件格式主要包含代码部分和数据部分,ELF 可重定位目标文件由由 ELF 头、节头表和各个节组成。
ELF 头
ELF 头位于目标文件的起始位置,包含文件结构说明信息,32位系统对应的结构与64位对应的结构不一样。以下是 32 为系统对应的数据结构,共占 52 字节。
- e_ident: 长度为 16 字节的序列,最开始 4 个字节为魔数,用来确定文件的类型或格式。在加载或读取文件可通过魔数确认文件类型是否正确。第一个字节为 0x7F, 随后 3 个字节分别为 ‘E’, ‘L’, ‘F’, 后 12 个字节包含一些标识信息,标示 32 位还是 64 位,大端还是小端等。