ELF中文手册

更新时间:2023-07-22 20:12:02 阅读: 评论:0

Executable and Linking Format (ELF)
Specification(中文)
2012-2-2
1 序    言    3
2 目标文件(Object file)    3
listone giordano2.1 简介    3
2.1.1 目标文件格式    3
2.1.2 数据表示    4
2.2 ELF Header    5
2.2.1 ELF Identification    6
2.2.2 机器信息    8
2.3 Sections    8
2.3.1 Section Header    9
2.3.1.1 Section类型—sh_type字段    10
2.3.1.2  sh_flags 字段    12
2.3.1.3 sh_link和sh_info字段    12
2.3.2 特殊Sections    13
2.4 String Table    15
2.5 Symbol Table    16
2.5.1 st_info说明    17
2.5.2 符号类型    17
2.5.3 特殊的Section索引    18
2.5.4 Symbol Values    18
2.6 Relocation    19
2.6.1 重定位表项    19
英语快速阅读
2.6.2 重定位类型    20
3  程序装载和动态链接    22
william masters3.1 简介    22
3.2 Program Header    22
3.2.1 段权限    23
3.2.2 段类型    23
3.2.3 基地址    24
3.2.4 Note Section(注解部分)    25
3.3 程序装载    26
3.4 动态链接    28
3.4.1 程序解释器    28
3.4.2 动态链接器    28
3.4.3 动态ction    29
ercp3.4.4 共享目标的依赖关系    32
3.5 全局偏移量表(GOT)    33
思忖
plasticsurgery3.6 过程连接表(PLT)    33
3.7 哈希表    35
3.8 初始化和终止函数    36
4 C Library    37
4.1 关于C库函数    37
4.2 全局数据符号    38
1 污染英文   
可执行连接格式(Executable and Linking Format)最初是作为应用程序二进制接口(Application Binary Interface(ABI)的一部分被UNIX系统实验室(USL)开发和发布。工具接口标准委员会(TIS)将还在发展的ELF标准选作为一种可移植的目标文件格式,可以在32位Intel体系结构上的很多操作系统中使用。
十一月 英文ELF标准的目的是为软件开发人员提供一组二进制接口定义,这些接口可以延伸到多种操作环境,从而减少重新编码、重新编译程序的需要。接口的内容包括目标模块格式、可执行文件格式以及调试记录信息与格式等。
这篇文档是为那些想在不同操作系统上创建目标文件或者可执行文件的开发者准备的。文档分以下三个部分:
* 第一部分, “目标文件(Object Files)”,描述了ELF目标文件格式的三种主要类型。
* 第二部分, “程序装载和动态连接(Program Loading and Dynamic Linking)”,描述了目标文件的相关信息和系统在创建运行时程序的行为。
* 第三部分, “C 语言库(C Libraryjhj)”,列出了所有包含在libsys中的符号,标准ANSI C和libc的函数(routines,),还有libc函数所需的全局数据符号。
注意: 参考的X86体系已经被改成了Intel体系。
2 目标文件(Object file)
中国研究生网上报名系统2.1 简介
目标文件主要有3种类型:
* 可重定位(relocatable)文件:包含用于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。
* 可执行(executable)文件:包含一个用来执行的程序;该文件指定exec(BA_OS)如何创建程序进程映象。
* 共享目标(Shared Object)文件:包含可在两种上下文中链接的代码和数据。第一种是链接器,可以把它和其它的可重定位和共享目标文件一起进行处理,来生成另一目标文件(是静态的,相当于windows的lib)。第二种是动态链接器,可以把它和一个可执行文件和其他共享目标文件结合(combine)起来,创建一个进程映象(是动态的,相当于windows的dll)。
用汇编器和链接器创建出来的目标文件,都是以程序的二进制格式来存放的,以便能在在处理器上直接运行。那些需要其他抽象机器的程序除外,比如象shell脚本。
在介绍性的材料过后,第一部分主要描述文件的格式和它怎样适于建立程序。第二部分描述了目标文件的几个组成部分,重点介绍执行一个程序所必须的信息。
2.1.1 目标文件格式
目标文件既要参与程序链接又要参与程序执行。出于方便性和效率考虑,目标文件格式提供了两种并行视图,分别反映了这些活动(linking和execution)的不同需求。例 1-1图显示了
一个目标文件的组织结构图。
文件开始处是一个 ELF Header,用来描述整个文件的组织。 Sections包含链接视图的大量信息:包括指令(instructions),数据(data,),符号表(symbol table),重定位信息(relocation information)等等。在第一部分中有特殊Sections的描述。第二部分讨论Segments和目标文件的Execution View。
程序头部表(Program Header Table),如果存在的话,将告诉系统如何创建一个进程映像。用来构造进程映象(即执行一个程序)的目标文件必须具有程序头部表,可重定位文件不需要这个表。
Section头部表(Section Heade Table)包含了描述文件Sections的信息,每个Section在表中都有一个表项;每个表项包括:Section名字,Section大小等信息。参与链接的目标文件都必须包含Section Heade Table;其他目标文件可以有,也可以没有这个表。
注意: 尽管图中显示的各个组成部分是有顺序的,实际上除了 ELF 头部表以外,其他节区和段都没有规定的顺序。
2.1.2 数据表示
目标文件格式支持8位、32位体系结构。不过它可以扩展到更大或更小的体系上运行。因此,目标文件采用与机器无关的格式表示一些控制数据,使得可用一种通用的方法来识别和描述其内容。目标文件中其余的数据使用目标处理器的编码结构,而不管文件是在哪台机器上创建的。(即:只需要把目标文件中的控制数据表示成机器无关格式就可以广泛移植了,而文件其余的数据按照目标处理器编码即可)。
目标文件中的所有数据结构都遵从“自然”大小和相关类型的对齐准则。如果需要的话,数据结构可以包含明确的填充字节,强制使数据结构的大小是4的倍数, 以保证4-byte对象是4字节对齐的。在文件开头的数据也有适当的对齐。例如,一个包含了一个Elf32_Addr成员的数据结构将会在文件中对齐到4字节的边界上。
因为移植性的原因,ELF不使用位字段(bit-fields)。
2.2 ELF Header
某些目标文件的控制数据结构可以增长,因为ELF Header能够给出他们实际的大小。如果目标文件格式确实发生改变,可能会发生控制结构比预期的大或者小的情况。在这种情况下,忽略这些信息是允许的。至于对“缺失”信息的处理方式则要依赖于上下文,如果定义了扩展的话,将会对这些做出规定。
ELF Header部分可以用下图中的数据结构表示:
Figure 1-3: ELF Header
  #define EI_NIDENT      16

本文发布于:2023-07-22 20:12:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1111424.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   目标   程序   格式   创建
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图