どのインクルード ファイルを使用するかをFrama-Cに伝える方法を決めるのに、いくつか問題があります。私は通常、オプションを追加します:
-cpp-extra-args="-I $(frama-c -print-path)/libc"
Frama-C の標準仕様を備えています。しかし、Frama-C ライブラリにないものが必要になることがよくあります。
たとえば、解析したいソース ファイルの 1 つは で定義されているマクロを使用しています<sys/wait.h>
が、Frama-C には独自の があるためframa-c/libc/sys/wait.h
、gcc ファイルは含まれていません。残念ながら、Frama-C はマクロを定義しておらず、最終的に定義が失われています。もちろん、ソース ファイルを変更したくありません。
my_libc/sys/wait.h
Frama-C ファイルを含み、GCC ファイルにないものをコピーできるファイルでローカル ディレクトリを構築することを考えていました。
次に使用します:
-cpp-extra-args="-I my_libc -I $(frama-c -print-path)/libc"
しかし、GCC インクルード ファイルから定義を抽出するのは非常に難しい可能性があるため、私のソリューションには少し不安があります...
どう思いますか?それは良い考えだと思いますか?より良い組織についてアドバイスはありますか?