由于内存数量非常有限,我想修改gcov(gcc -fprofile-arcs -ftest-coverage)用于覆盖数据的计数器的大小(当前为64位),并且需要一些指导,以实现这一目标。修改gcc gcov计数器大小
是否可以在不修改和重新编译gcc的情况下更改计数器的大小?
如果1不可能,那么需要修改gcc的哪些部分才能使用32位(甚至更小)的计数器呢?
非常感谢您提供任何有用的信息。
由于内存数量非常有限,我想修改gcov(gcc -fprofile-arcs -ftest-coverage)用于覆盖数据的计数器的大小(当前为64位),并且需要一些指导,以实现这一目标。修改gcc gcov计数器大小
是否可以在不修改和重新编译gcc的情况下更改计数器的大小?
如果1不可能,那么需要修改gcc的哪些部分才能使用32位(甚至更小)的计数器呢?
非常感谢您提供任何有用的信息。
GCC在其源代码中使用(counter counter)语句,所以我认为不可能不修改GCC本身。
对于问题2:在这个过程中GCC仪器计数器代码: (profile.c/branch_prob) - >(profile.c/instrument_edges) - >(profile.c/gen_edge_profiler)
轮廓。 c是GCC_SOURCE_CODE/gcc下的GCC的源文件。 函数branch_prob将分配所有计数器(正如您所知,每个计数器都有8个字节),所以这是您需要修改的第一部分。 函数gen_edge_profiler生成rtl(编译后转为汇编)代码来增加计数器,您应该修改其中生成的(ADD指令)。 这两个函数是最重要的,您还需要修改gcov读写函数以适应(4字节计数器)。