修改gcc gcov计数器大小

时间:2013-04-11 08:40:36

标签: gcc code-coverage gcov

由于内存量非常有限,我想用gcov(gcc -fprofile-arcs -ftest-coverage)修改用于覆盖数据的计数器(目前为64位)的大小,需要一些指导才能实现这一目标。

  1. 是否可以在不修改和重新编译gcc的情况下改变计数器的大小?

  2. 如果无法使用1,那么为了使用32位(甚至更小)的计数器,需要更改gcc的哪些部分?

  3. 提前感谢任何可能有用的输入。

1 个答案:

答案 0 :(得分:0)

GCC在其源代码中使用(计数器增加)语句,因此我认为不可能不修改GCC本身。

对于问题2:GCC仪器计数器代码在此过程中: (profile.c / branch_prob) - >(profile.c / instrument_edges) - >(profile.c / gen_edge_profiler)

profile.c是GCC_SOURCE_CODE / gcc下GCC的源文件。 函数branch_prob将分配所有计数器(如您所知,每个计数器为8个字节),因此这是您需要修改的第一部分。 函数gen_edge_profiler生成rtl(编译后变成汇编)代码增加计数器,你应该修改它中生成的(ADD指令)。 这两个函数是最重要的,你还需要修改gcov读写函数以适应(4字节计数器)。