下载此文档

elf文件格式学习总结.docx


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
elf文件格式学习总结
elf文件格式学习总结
1 / 6
elf文件格式学习总结
elf文件格式学习总结
编译器将一个源文件生成目标文件时,会在目标文件中生成符号表和重定位表。
 
符号表包含在文件中定义的全局符号以及在文标文件组合在一起,创建进程映像(比如:动态加载器把exe程序和*.so加载进内存执行)。
 
目标文件全部是程序的二进制表示,目的是直接在某种处理器上直接执行。
节区头部表格
表 5 节区头部表格中的特殊下标
SHN_COMMON   OXFFF2    此节区定义的符号是公共符号。如 FORTRAN 中 COMMON 或者未分配的 C 外部变量。
 
(《linux内核完全剖析》P42   汇编器1次只处理1个源程序,如果变量不在本文件里定义,汇编器就留个记号,交给连接器处理。连接器对未定义的符号进行特殊处理。1。如果未定义符号里数值是0,则表示该符号在本汇编源程序里没有定义,连接器会尝试到其他连接的文件里确定它的数值。比如:在一个源程序里使用了一个符号,但没有对符号进行定义,汇编器处理汇编源程序时就会产生这种未定义符号,其值等于0。  2。如果未定义符号的数值不为0,那么该符号的值就表示是 .comm 公共声明(as汇编器汇编命令:.comm symbol,length 该命令在bss节区里,声明一个命名的公共存储区域)的需要保留的公共存储空间的字节长度。符号指向该存储空间的第1个地址处。汇编器1个1个的处理源文件,,。连接器在连接过程中,会把多个目标文件中的同名的公共符号合并。如果连接器没有找到1个符号的定义(而且此符号的值不为0),而是找到1个或多个公共符号,那么连接器就会分配长度为length字节的未初始化内存。length必须是一个绝对值表达式,如果连接器找到多个长度不同但同名的公共符号,连接器就会按最大的length分配空间。)
 
elf文件格式学习总结
elf文件格式学习总结
3 / 6
elf文件格式学习总结
sh_flags 字段
SHF_ALLOC: 表示此节区在进程执行过程中需要占用内存。某些(用于)控制(的)节区并不加载进目标文件的内存映像中,则其sh_flags位应设置为 0。

表 10 sh_link和sh_info字段解释
SHT_DYNAMIC            sh_link: 此节区中条目所用到的字符串表(所在)的节区号  sh_info:0
SHT_HASH               sh_link: 此哈希表所适用的符号表(所在)的节区号       sh_info:0
SHT_REL/SHT_RELA       sh_link: 相关联的符号表(所在)的节区号              sh_info: 需要重定位操作的节区的节区号。表示该节区里包含有地址不明确的内容(变量/或函数符号地址不明确),需要进行重定位操作。
SHT_SYMTAB/SHT_DYNSYM  sh_link: 相关联的字符串表(所在)的节区号            sh_info: 所有局部符号(LOCAL)的个数 + 1
 
(用

elf文件格式学习总结 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1033951284
  • 文件大小21 KB
  • 时间2022-02-24