bfd库

什么是 BFD?
Binary format descriptor, 即二进制文件格式描述符,它是连接工具(ld)和二进制文件操作工具(bin-util)实现对于目标文件操作的标准接口,ld和bin-util通过调用实现BFD接口的库libbfd
来实现它们的目标文件操作功能。

BFD的结构
BFD整体上简单地可分为前端和后端(就象gcc一样),这样做的目的主要出于可移植性的考虑,前端向应用层提供统一的调用接口,是目标文件格式 无关的,后端实现目标格式相关的部分,前端通过调用后端的相关函数实现真正的具体目标文件格式操作功能。所以如果要支持一种新嵌入式目标文件格式(就象 uclinux支持的简化类coff文件格式BFLT)就只要修改BFD的后端就行了。

BFD的结构
前端的结构和一些主要的功能是:段操作,符号表处理,重定位管理,库操作,及其为了方便用的函数。后端涉及具体的文件格式操作方法的支持,典型的是a.out,coff,和elf.

BFD工作过程简述
每当bin-util工具如(objdump)打开一个目标文件时,工具通过调用BFD库 里相关目标文件格式的信息判定该文件的二进制格式。然后 抽取库里相关例程的信息建立对应的二进制格式操作描述符表(实际上诗歌函数指针表,有点象COM的VTABLE),利用这些指针,工具读取分析和操作该目 标文件。我们利用objcopy(操作),objdump(读取、分析),readelf(读取),就是全仰仗BFD的功能。我刚才讲了现成目标文件的工 作过程,那么目标文件的形成过程又是怎样的呢?如上所述,编译器/连接器在处理目标文件符号表等时先会调用前端函数(前端是统一和抽象的过程),然后通过 后端处理具体文件格式的操作函数将符号表等相关信息写到输出文件, 这些任务的就是通过调用内存中的BFD描述符的函数实现的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值