ELF にコンパイルされる C プロジェクトに未使用の関数があるかどうかを確認し、それらを見つける方法を探しています。これは、コード内で宣言されているが呼び出されていない関数です。
解決策は次のいずれかです。
- .c ファイルを調べて分析するユーティリティ
- コンパイル済みの ELF ファイルを調べて、シンボルを静的に分析するユーティリティ
- gcc で未使用の関数について警告する方法 (および -Wunused-functions はグローバル関数に対しては警告しません)
ソリューションは次のいずれかにすることはできません。
- どの関数が削除されたかを知らずに、コンパイル時に未使用の関数を削除する
- 実行時に ELF ファイルを分析します。これは、実行ごとにすべての関数が呼び出されるわけではないためです
gprof
(一部の関数は呼び出されるまでに数日かかりますが、コード フローでは、それらが最終的に呼び出されることがわかります)。 - 未使用の関数ではなく、関数内のデッドコード (つまり、関数から戻った後のコード) を検出するユーティリティ
ありがとうございました