现在的位置: 首页 > 综合 > 正文

GCC测试包的原理

2013年04月18日 ⁄ 综合 ⁄ 共 608字 ⁄ 字号 评论关闭

GCC testsuite目录下的测试程序,有下面特点

1对测试时,GCC工作到哪一步的指示,是写在注释里的,例如注释“// { dg-do compile  }”表示对当前C文件只编译而不运行,“// { dg-do run  }”表示编译并运行。

 

2对前端的测试也在注释中指定,例如对下面程序行

printf ("%hhn", s); /* { dg-warning "format" "%hhn plain char" } */

行尾的注释表示编译该行时,应产生一条warning信息,以及warning信息应匹配的格式。类似的,dg-error表示编译对应程序行时,应产生一条error信息。

 

3对于运行结果是否正确的验证,有一部分是写在程序里,当比较的结果不对时直接调用abort()

另一部分与输入/输出有关的验证,可能是通过Expect脚本也完成的。Expect脚本中启动这个程序(spawn命令),当程序要求输入时,用send “string”命令将一个字符串发送给程序,之后调用expect ”outstring”命令等待程序的输出时与预期是否匹配,outstring可以是一个正规式,比如expect –re “.*abc$”表示输出结果应以abc结尾

 

4还有一些注释是指定目标机的,例如注释{ target { powerpc*-*-* && lp64 } }

表示当前机器仅是这些目标机时,才测试当前C程序。

 

这些指示性注释在GCC INTERNAL 6.4.2

抱歉!评论已关闭.