使用ARM编译器进行C语言死代码检测

4

我正在从事嵌入式系统工作。 我使用C进行编程,使用ARM编译器进行编译。

我正在处理的代码已经存在一段时间了,并且是由多个人开发的。 它也使用函数指针

有没有工具可以帮助我检测死代码? 如果没有,您建议我如何处理?


2
提高编译器优化级别,这个这个这个可能会对您有所帮助。 - Dayal rai
2个回答

5
ARM链接器支持跨模块优化,这将删除对象模块中未使用的函数(包括类成员函数)。优化器将处理函数中的死代码。如果要从源代码中实际删除代码,则静态分析工具将能够检测到编译器优化器可以检测到的类似死代码部分。

我该如何移除涉及函数指针的死代码呢? 我需要读取实际函数表/进行引用计数吗? - tdk
@user1928721:你可能做不到;函数指针是可以在运行时分配和修改的变量。在编译时,您可能没有足够的信息来知道一个函数从未被分配给函数指针和/或该函数不通过该指针调用。如果有足够的信息(即该函数从未被引用),链接器将在任何情况下都会发现它 - 链接器映射文件将列出所有通过跨模块优化删除的函数。 - Clifford

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接