基于PowerPC Linux的ELF格式分析
基于PowerPC Linux的ELF格式分析
基于PowerPC Linux的ELF格式分析
第一部分 ELF格式概述
ELF(Executable and Linkable Format)是一种对可执行文件、目标文件以及库文件使用的文件格式,它在Linux下成为标准文件已经有很长的一段时间,代替了早期的a.out格式。ELF格式的一个优点是同一个文件格式可以用在Linux Kernel支持的所有体系结构之上。这不仅简化了用户空间工具程序的创建,也简化了内核自身的程序设计,比如必须为可执行程序生成装载例程时。但是文件格式相同并不意味着不同系统上的程序之间存在二进制兼容性,例如FreeBSD和Linux都使用ELF作为二进制格式,但是FreeBSD上的程序不能运行于Linux上,因为两者在系统调用机制和系统调用语义方面仍然有所不同,反之亦然;如果想让二者之间的程序能够运行,必须要有一个中间仿真层。同样PowerPC平台编译的ELF程序,也不能在X86平台的机器上运行,反之依然,因为两者的体系结构是完全不同的。但是由于ELF格式的存在,相同体系结构上的ELF程序本身的相关信息,以及程序的各个部分在二进制文件中的编码方式都是相同的。Linux不仅将ELF用于用户空间应用程序和库,还用于工具模块,另外Linux内核本身也是ELF格式。
备注:ELF文件是一种开放的格式,其规范可以自由获得。
ELF文件有三种类型:
可重定位文件:也就是通常称的目标文件,后缀为.o;
共享文件:也就是通常称的库文件,后缀为.so;
可执行文件:本文主要讨论的文件格式;
总的来说,可执行文件的格式与上述两种文件的格式之间的区别主要在于观察的角度不同:一种称为连接视图(Linking View),一种称为执行视图(Execution View)。 示意图如下:

第二部分 布局和结构
ELF Header:除了用于标识ELF文件的几个字节之外,ELF文件头还包含了有关文件类型和大小的信息,以及文件加载后程序执行的入口信息等等,总之ELF头部是一个关于本ELF文件的路线图(road map),从总体上描述文件的结构。
程序表头(Program Head Table):向系统提供了可执行文件的数据在进程虚拟地址空间中组织方式的相关信息,它还表示了文件可能包含的段的数目,段的位置以及用途。
你可能喜欢
- 调查格式
- 体系文件格式
- 工作文件格式
- 文件格式要求
- 工艺文件格式
- 常见文件格式
- 公司文件格式规范
- 有关社会调查报告格式14页
- 社会调查报告写作格式4页
- 调查报告标准格式和注意事项3页
- 社会实践调查格式2页
- 调查报告的格式2页
- 社会调查报告格式4页
- 体系文件清单格式~~24页
- PZ001-2004体系文件和记录的格式规定5页
- 安全生产标准化体系文件修订格式4页
- 流程体系文件编制规范格式作业指引3页
- IRIS体系文件格式规范4页
- HSE体系文件字体格式及文件编码要求3页
- 工作文件格式2页
- Nutch Crawler工作流程及文件格式详细分析9页
- EXCEL-SAVEAS中参数XlFileFormat的参数枚举-指定保存工作表时的文件格式2页
- 18491工作文件格式模板18页
- Nutch Crawler工作流程及文件格式详细分析6页
- 2011上半年工作总结 (文件格式)6页
- 工艺文件编制格式7页
- 电子工业工艺文件格式的填写21页
- 公司文件格式C046检修工艺16页
- 工艺文件的格式1页
- 数控加工工艺、刀具文件格式11页
- 工艺文件格式3页
- 常见视频文件格式详解4页
- 几种常见文件格式1页
- 常见的文件格式9页
- 常见的图像文件格式3页
- 常见的文件(含音乐)格式10页
- 实验三 常见文件格式的处理2页


