基于GCC的嵌入式程序插装技术.docx
《基于GCC的嵌入式程序插装技术.docx》由会员分享,可在线阅读,更多相关《基于GCC的嵌入式程序插装技术.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于GCC的嵌入式程序插装技术mahaiyan导语:本文介绍一种通过分析和修改GCC编译工具,实现程序插装的新方法。该方法具有批量自动插装,插装与编译连接严密结合,适用语言广泛等优点。最后详细讨论了怎样在ARM嵌入式程序中实现程序插装。摘要软件测试中,覆盖、故障注入、性能分析等广泛使用的动态测试方法均基于程序插装技术。本文介绍一种通过分析和修改GCC编译工具,实现程序插装的新方法。该方法具有批量自动插装,插装与编译连接严密结合,适用语言广泛等优点。最后详细讨论了怎样在ARM嵌入式程序中实现程序插装,并给出修改GCC的源代码。关键词GCC程序插装ARM嵌入式程序程序插装ProgramInstru
2、mentation概念最先是由JGHuang教授提出,是借助往被测程序中插入操纵称为“探针,以便获取程序的控制流和数据流信息,进而实现测试目的的方法。在软件动态测试中,程序插装是一种根本的测试手段,应用广泛,是覆盖率测试、软件故障注入和动态性能分析的根底技术。GCCGNUCompilerCollection是一个高度优化,高度可移植,广泛使用的编译系统。它能处理多种语言,包括CC+、Fortran、Java和Pascal等多种语言前端,而且后端支持几乎所有的处理器构造。GCC作为源码开放的软件,人们可以自由修改和使用;参加插装模块后,在GCC所支持的语言中都可插入相应的测试代码这里只介绍C语言
3、的插装模块。本文将具体表达怎样修改GCC,使其在编译每个C函数时,分别将各个形式参数连同该函数名传递给一个指定函数。该指定函数的返回值赋予原来的形式参数,进而可以人为控制被插装函数的每个参数实际值,进而完成各种规那么下的测试。1GCC编译流程分析编译器的工作是将源代码通常使用高级语言编写翻译成目的代码通常是低级的目的代码或机器语言。在当代编译器的实现中,这个工作一般是分为两个阶段来实现的:第一阶段,编译器的前端接收输入的源代码,经过词法、语法和语义分析等得到源程序的某种中间表示方式。第二阶段,编译器的后端将前端处理生成的中间表示方式进展一些优化,并最终生成在目的机器上可运行的代码。GCC编译器
4、以一个函数为单位对经过预处理的输入源文件进展编译处理。根据GNUBison一个类似YACC但功能更强大的文法分析工具生成的语法分析程序,前端完成语法、语义分析,建立语法树,并转换成中间代码。GCC内部使用了一种能对实际的体系构造做一种抽象的,与硬件平台无关的语言,这个中间语言就是RTLRegisterTtansferLanguage。通过修改源程序的RTL,可以改变、删除源程序,包括插入所需要的代码,由GCC后端处理并最终输出对应硬件平台的汇编码,源程序无需手工修改便可实现插装功能。GCC的入口点main函数在文件mainc中。此函数非常简单,只有一条直接调用toplev_main函数的语句。
5、toplev_main函数是在toplevc文件中定义的,以下我们只关心与编译有关的源码,其他的暂时忽略。toplev_main中最重要的是调用了do_complile函数,这个函数从名字看就是做编译工作的;而在此之后,toplev_main函数就返回了。dD_compile函数也是在tokvc中定义的,其中真正进展编译工作的是调用compilte_file函数。compik_file函数最终调用了一个钩子函数来分析parse整个输入文件:lang_hooksparse_fileset_yydebug;这里的lang_hooks是一个全局变量,不同语言的前端对此赋以不同的值。对C语言来讲,这条
6、语句相当于调用了c-optsc中的c_common_parse_file函数。c_com-mon_parse_file中调用了c-parsec中的c_parse_file函数;在此函数中又调用了同文件中的yyparse函数,该函数负责解析C语言源文件,并转化为特殊的语法树构造。该函数是GNUbison将YACC转变为C语言而自动生成的,所以这段代码浏览起来比拟困难,但我们并不关心语法分析的细节。在完成函数体的分析后,利用已经建立的tree构造生成RTL,优化后最终输出汇编码;自此C函数的编译就算完毕了,这些是由yyparse调用finish_function函数完成的。finish_funct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 GCC 嵌入式 程序 技术
限制150内