第2行,Magic魔数,用来指名该文件是一个ELF目标文件。
第一个字节7F是个固定的数;
后面的3个字节正是E,L,F三携孝个字母的ASCII形式。
第4行,Data表示文件中的数据是按照什么格式组织(大端或小端)的,不同处理器平台数据组织格式可能就不同,段弊如x86平台为小端存储格式。
第5行,当前ELF文件头版本号,这里版本号为1。
第6行,OS/ABI,指出 *** 作系统类型,ABI是ApplicationBinaryInterface的缩写。
第7行,ABI版本号,当前为0。
第8行,Type表示文件类型。
ELF文件有3种类型,一种是如上所示的Relocatablefile可重定位目标文件,一种是可执行文件(Executable),另外一种是共享库(SharedLibrary)。
第9行,机器平台类型。
第10行,当前目标文件的版握隐族本号。
第11行,程序的虚拟地址入口点,因为这还不是可运行的程序,故而这里为零。
第12行,与11行同理,这个目标文件没有ProgramHeaders。
第13行,sections头开始处,这里208是十进制,表示从地址偏移0xD0处开始。
ELF格铅早基式文件中segment与section到底有什么区别?ELF中的section主要提供给Linker用的, 而segment提供给Loader用. Linker需要关心.text, .rel.text, .data, .rodata等等, 一个重点是link时要做relocation. 而 Loader 只需要知道 Read/睁备Write/Execute. a.out格式没有这种区槐谨分, 我想ELF这么做提供了更多的灵活性
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)