7.4 可重定位目标文件

  • 节头目表是 ELF 可重定位目标文件中的一个重要部分。它记录了每个节的相关信息,包括节的类型、大小、文件中的偏移位置等。节头目表实际上就是一个表格,每一项(条目)对应一个节
  • 文件偏移就是文件位置的偏移量,相当于是一个定位信息
  • 节头目表中的每一项就是一个条目,每个条目描述一个节的相关信息(如节的名称、类型、大小、文件偏移等)。每个节在节头目表中都有一个对应的条目
  • 链接器生成的可执行文件会先存放在磁盘里,在程序运行的时候,操作系统会将可执行文件从磁盘复制到内存里面;由于.data节预先赋值了,操作系统不知道具体是什么值,所以必须在可执行文件里面指明;而.bss节默认是0,所以不用在可执行文件里面指明,操作系统在加载可执行文件到内存的时候直接把对应位置赋值为0即可,于是.bss只需要指明需要多少空间(大小),但里面没有实际的数据
  • 符号表见下
    image
  • .rel.text.rel.data只是告诉链接器哪些指令需要修改地址,而不会告诉链接器具体修改的地址是多少(这由链接器决定)
    • 本地函数调用指令不用修改是因为编译器和汇编器就会确定这条指令的相对地址偏移(回想之前的内容)
  • .debug包含了源代码的行号和机器代码的行号之间的关联信息
  • 节头目表描述ELF文件中不同节的起始位置
posted @ 2025-08-09 09:50  最爱丁珰  阅读(10)  评论(0)    收藏  举报