



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BFD库移植BFD采用了前后端分离的设计方式,不同的后端用于支持不同的目标体系结构,移植BFD就是要给BFD增加一个新的后端支持。包括创建一个新的bfd_target结构并将其加入到_bfd_target_target全局数组变量中,以及对应的头文件和配置文件进行修改以支持新的后端。1、修改相关配置文件,增加对target的支持选项1)在/bfd/config.bfd中加入两个选项:(1)target*) targ_archs=bfd_target_arch ;(2)target-*-elf | target-*-*linux*) targ_defvec=bfd_elf32_target_little_vec ;2)在/bfd/configure.in中添加bfd_elf32_target_little_vec)tb=$tb elf32-target.lo elf32.lo $elf ;(target_size=32可能默认不用加)3)在bfd/Makefile.am中增加target后端的选项和文件依赖关系(1)ALL_MACHINES =.内容列表中添加 :cpu-target.lo (2)ALL_MACHINES_CFILES =. 内容列表中添加:cpu-target.c (3)BFD32_BACKENDS = .中添加:elf32-target.lo (4)BFD32_BACKENDS_CFILES = .中添加:elf32-target.c (5)添加:elf32-target.lo: elf32-target.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/target.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h elf32-target.h2、修改BFD目录下的相关的头文件和源文件1)libbfd.h:static const char *const bfd_reloc_code_real_names数组中包含了BFD所支持的各种重定位类型,在其中加上对于target处理器的重定位类型:2)bfd-in2.h:在这个头文件中添加target的bfd_architecture数据结构和新的重定位类型。(1)、在enum bfd_architecture中增加bfd_arch_target结构信息。(2)、在enum bfd_reloc_code_real中增加target重定位类型:BFD_RELOC_target_JMP, BFD_RELOC_target_LITERAL, BFD_RELOC_target16_JMP, BFD_RELOC_target16_GPREL, BFD_RELOC_target16_HI16, BFD_RELOC_target16_LO16,BFD_RELOC_target_GOT16, BFD_RELOC_target_CALL16, BFD_RELOC_target_GOT_PAGE, BFD_RELOC_target_GOT_OFST, BFD_RELOC_target_GOT_DISP, BFD_RELOC_target_GOT_HI16, BFD_RELOC_target_GOT_LO16, BFD_RELOC_target_CALL_HI16, BFD_RELOC_target_CALL_LO16,3)bfd/archures.c该文件包含了BFD所支持的各种体系结构。(1)、在enum bfd_architecture中添加: bfd_arch_target, * target *(2)、添加target结构的支持声明:extern const bfd_arch_info_type bfd_target_arch; (3)、在static const bfd_arch_info_type * const bfd_archures_list数组中增加:&bfd_target_arch,4)、bfd/targets.c(1)、添加extern const bfd_target bfd_elf32_target_little_vec;的声明。(2)、在static const bfd_target * const _bfd_target_vector数组中添加:$bfd_elf32_target_little_vec, 3、增加相关的源文件1)、bfd/cpu-target.c:该文件包含用 struct bfd_arch_info数据结构所表示的target体系结构的具体信息,该结构定义在bfd/bfd_in2.h中:typedef struct bfd_arch_info int bits_per_word; int bits_per_address; int bits_per_byte; enum bfd_architecture arch; unsigned long mach; const char *arch_name; const char *printable_name; unsigned int section_align_power; bfd_boolean the_default; const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *a, const struct bfd_arch_info *b); bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); const struct bfd_arch_info *next; bfd_arch_info_type;其中,包含了字长、地址长度、每个字节中的位数等体系结构的信息。针对target体系结构的特点,在文件中定义了如下的结构体:const bfd_arch_info_type bfd_target_arch = 32, /* 32 bits in a word. */ 32, /* 32 bits in an address. */ 8, /* 8 bits in a byte. */ bfd_arch_target,/* bfd architecture */ 0, /* Only 1 machine. */ target, /* arch name */ target, /* printable name*/ 4, /* section align power */ TRUE, /* The one and only. */ bfd_default_compatible, bfd_default_scan , 0, /* next */ ;2)、bfd/elf32-target.c此文件是target体系结构后端的ELF文件格式的实现。主要包括下面吉祥内容:(1)、用 reloc_howto_type 结构体对 target新增重定位类型的具体内容进行了定 义。该结构体在 bfd-in2.h 中定义,其内容如下: struct reloc_howto_struct unsigned int type; unsigned int rightshift; int size; unsigned int bitsize; bfd_boolean pc_relative; unsigned int bitpos; enum complain_overflow complain_on_overflow; bfd_reloc_status_type (*special_function) (bfd *, arelent *, struct bfd_symbol *, void *, asection *, bfd *, char *); char *name; bfd_boolean partial_inplace; bfd_vma src_mask; bfd_vma dst_mask; bfd_boolean pcrel_offset; ; 在这个结构中,可以指明重定位的位置、长度、是否是 PC 相对的等信息,为 进行重定位处理提 供依据。另外,对于一些体系结构中特别的重定位类型,需要进 行特殊的重定位处理时,可以将其中的 bfd_reloc_status_type (*special_function) (bfd *, arelent *, struct bfd_symbol *, void *, asection *,bfd *, char *)函数进行重定 义,以满足特殊的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级社会工作者社保政策试题及答案
- 深刻理解2025年系统分析师考试难点试题及答案
- 系统集成项目管理最常用方法试题及答案
- 创新型系统集成试题及答案
- 黑龙江书法艺考试题及答案
- 中级社会工作者职场心理调适试题及答案
- 系统分析师考试专题试题及答案
- 软件评测师对于项目管理的影响力试题及答案
- 备考2025年多媒体应用设计师的题型及答案
- 软件测试过程中的数据保护与隐私策略试题及答案
- T/CATCM 032-2024中药配方颗粒临床使用指南
- 摩根斯丹利-2025中国汽车综述 China Autos Overview -2025-05
- 儿童健康管理中心运营方案
- 2025年压缩机用平衡块项目市场调查研究报告
- 渣浆泵市场现状分析及前景预测报告
- 2025年健康监测考试试题及答案详解
- 2025年(第一季度)电网工程设备材料信息参考价(加密)
- 门窗安装劳动合同协议
- 项目上市居间合同协议
- GA/T 751-2024公安视频图像屏幕显示信息叠加规范
- 课题申报书:公费师范生本研衔接培养研究
评论
0/150
提交评论