GDB(四) COFF

COFF(Common Object File Format)是在Unix上使用的可执行文件、object文件和共享库文件的格式规范。它规定了:

符号调试信息。它由程序里的函数和变量的符号(字符串)名以及用来设置断点和跟踪执行的行号信息组成。

符号名被存储在COFF符号表里。每个符号表项包含一个名字、存储类别、类型、值和段号。不超过8字符的短名字被直接存储在符号表里,更长的名字作为COFF对象末的字符串表里的一个偏移量被存储。

存储类别(storage class)描述符号表示的类型实体,并可能包含外部变量(C_EXT)、自动(栈)变量(C_AUTO)、注册器变量(C_REG)、函数(C_FCN)和许多其它的。符号类型(symbol type)描述了符号实体值的解释,并包含了所以C数据类型的值。

当用恰当的选项编译时,一个COFF object文件将为object文件里的代码段里的每个可能的断点包含行号信息。行号信息有两种形式:

第一种,对于代码里第个可能的断点,行号表项记录了地址和它匹配的行号。

第二种,表项标识一个函数开始的符号表项,使一个断点可以使用函数名来设置。

相对虚拟地址。当一个COFF文件被产生时,它通常不知道它会被载入到内存的哪个地方。文件第一个字节将会载入到的虚拟地址(virtual address)被称为映射基地址(image base address)。文件剩余部分不必被载入到相邻的块里,而是在不同的区域里。

不要把相对虚拟地址(Relative Virtual Address)和标准虚拟地址混淆。一个相对虚拟地址是这个文件被载入到内存的虚拟地址,减去文件映射的基地址。如果文件被逐字地从磁盘映射到内存里,那么RVA会和文件里的偏移量相同,但这很不常见。

注意RVA术语只用在映射文件里的object上。一旦载入到内存,映射基地址被增加,且原始的VA被使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值