- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
bfd移植相关
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.h
2、修改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 bf
您可能关注的文档
最近下载
- 跨境电子商务就业能力展示.pptx VIP
- 南吕一枝花不伏老PPT课件.ppt
- 2024年华医网继续教育社区获得性肺炎的诊与治答案.docx VIP
- 《财经法规与会计职业道德》习题答案及解析.pdf VIP
- 水中桩基安全专项施工方案.pptx VIP
- 南芯产品规格书SC8905.pdf
- 名人-李大钊 -人物介绍.pptx VIP
- 梅建强教授治疗药物依赖性失眠经验总结-来源:现代中西医结合杂志(第2022012期)-河北省中西医结合学会、中华中医药学会.pdf VIP
- 2024年二建继续教育-项目管理实施规划(施工组织总设计)编制(必修)1、及答案.docx VIP
- 《企业内部控制基本规范》.pptx
文档评论(0)