bfd移植相关.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档