C6000 ELF文件格式.ppt

C6000 ELF文件格式.ppt

ID:48727263

大小:2.21 MB

页数:51页

时间:2020-01-20

C6000 ELF文件格式.ppt_第1页
C6000 ELF文件格式.ppt_第2页
C6000 ELF文件格式.ppt_第3页
C6000 ELF文件格式.ppt_第4页
C6000 ELF文件格式.ppt_第5页
资源描述:

《C6000 ELF文件格式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、TMS320C6000的生成文件格式——ELF格式介绍主要内容ELF文件格式2概述11.概述不管何种可执行文件格式,一些基本的要素是必须的,显而易见地,文件中应包含代码和数据。因为文件可能引用外部文件定义的符号(变量和函数),因此重定位信息和符号信息也是需要的。一些辅助信息是可选的,如调试信息、硬件信息等。基本上任意一种可执行文件格式都是按区间保存上述信息,称为段(Segment)或节(Section)。不同的文件格式中段和节的含义可能有细微区别,但根据上下文关系可以很清楚的理解,这不是关键问题。最后,可执行文件通常都有一个文件头部以描述本文件的总体结构。1.概述相对可执行文件有三个重要的

2、概念:编译(compile)、连接(link,也可称为链接、联接)、加载(load)。源程序文件被编译成目标文件,多个目标文件被连接成一个最终的可执行文件,可执行文件被加载到内存中运行。因为本文重点是讨论可执行文件格式,因此加载过程也相对重点讨论。下面是LINUX平台下ELF文件加载过程的一个简单描述(CCSv5中.out文件的加载过程与LINUX平台下可执行文件的加载过程相似)。1.概述1)内核首先读ELF文件的头部,然后根据头部的数据指示分别读入各种数据结构,找到标记为可加载(loadable)的段,把段内容加载到内存中。段的标记指示该段在内存中是否可读、可写,可执行。显然,文本段(.

3、text)是只读可执行(-r-x),而数据段是可读可写(-r-w)。这种方式是利用了现代操作系统和处理器对内存的保护功能。2)内核分析出ELF文件标记为PT_INTERP的段中所对应的动态连接器名称,并加载动态连接器。3)内核在新进程的堆栈中设置一些标记-值对,以指示动态连接器的相关操作。4)内核把控制传递给动态连接器。5)动态连接器检查程序对外部文件(共享库)的依赖性,并在需要时对其进行加载。1.概述6)态连接器对程序的外部引用进行重定位,通俗的讲,就是告诉程序其引用的外部变量/函数的地址,此地址位于共享库被加载在内存的区间内。动态连接还有一个延迟(Lazy)定位的特性,即只在"真正"需

4、要引用符号时才重定位,这对提高程序运行效率有极大帮助。7)动态连接器执行在ELF文件中标记为.init的节的代码,进行程序运行的初始化。8)动态连接器把控制传递给程序,从ELF文件头部中定义的程序进入点开始执行。在ELF格式中,程序进入点的值是显式存在的,在COFF格式中则是由规范隐含定义。1.概述从上面的描述可以看出,加载文件最重要的是完成两件事情:加载程序段和数据段到内存;进行外部定义符号的重定位。重定位是程序连接中一个重要概念。我们知道,一个可执行程序通常是由一个含有main()的主程序文件、若干目标文件、若干共享库(SharedLibraries)组成。一个C程序可能引用共享库定义

5、的变量或函数,因此程序运行时必须知道这些变量/函数的地址。在静态连接中,程序所有需要使用的外部定义都完全包含在可执行程序中,而动态连接则只在可执行文件中设置相关外部定义的一些引用信息,真正的重定位是在程序运行之时。静态连接方式有两个大问题:如果库中变量或函数有任何变化都必须重新编译连接程序;如果多个程序引用同样的变量/函数,则此变量/函数会在文件/内存中出现多次,浪费硬盘/内存空间。比较两种连接方式生成的可执行文件的大小,可以看出有明显的区别。1.概述UNIX/LINUX平台下三种主要的可执行文件格式:a.out(assemblerandlinkeditoroutput汇编器和链接编辑器的

6、输出)、COFF(CommonObjectFileFormat通用对象文件格式)、ELF(ExecutableandLinkingFormat可执行和链接格式)。CCSV5平台与上述LINUX平台下可执行文件格式的概念略有区别:在CCSv5编译连接生成的可执行文件为.out后缀,该文件的格式可在编译连接之前设定,设置生成.out文件为COFF格式或者ELF格式。设定路径为Properties->General->Advancedsetting->Outputformat1.概述本文档仅详细说明ELF及COFF的格式标准注意本文档附带Demo例程,在CCSv5编程环境中编译汇编链接生成,并在

7、TMS320C6678硬件平台进行了测试。Demo.out为该例程生成的加载可执行目标文件,该文件以ELF格式存储,是下文展示ELF格式内容时用到的样本文件。Demo.map为该例程编译过程中生成的数据存储映射文件,该文件详细列出了程序运行时的入口地址、所有字符地址、所有段数据存储地址及长度等信息。以上两个文件可在例程的Debug文件夹下找到。1.概述2.ELF文件格式2.ELF文件格式ELF的总体布局如下该格式文件大体

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。