SOLIDツールチェーン


LLVM/Clang コンパイラ

SOLIDには標準付属のGCC(KMC製 exeGCC)に加えて、ARM コンパイラ6でも採用されている、先進的なオープンソースソフトウエアであるLLVM/Clangコンパイラを採用しました。コンパイラを、実績のあるGCC、そして先進性のClangコンパイラの二つから選択する事が出来ます。

 


LLVM/Clangコンパイラとは

SOLIDプラットフォームでは、静的解析ツール、動的解析ツール機能を豊富に備えたLLVM/Clangコンパイラを採用しています。LLVM/Clangは次世代のコンパイラとして、MacOS/iOS開発環境の標準コンパイラ、ARM Compiler 6、FreeBSDの標準コンパイラなど、多くの分野で標準的に利用されているオープンソースのコンパイラです。他のツールと連携して機能拡張が出来る点など、先進的なコンパイラとしての特長を備えています。

 


静的解析機能

ビルド時に静的解析ツールとしてClangを使用することにより、「未初期化変数の利用」「メモリリーク(解放もれ)パスの検出」「戻り値が不定になるパスの検出」「代入されたがアクセスされない変数の検出」などが検出可能です。

なお、SOLIDの静的解析機能はC/C++文法解析の結果で不具合となるコードを判定するものであり、MISRA-Cのような「コーディング規則のチェック」ではありません。


動的解析機能

SOLIDでは動的解析機能の代表的なものとして、アドレスサニタイザ、メモリサニタイザ、スレッドサニタイザといったアクセス違反検出機能に重点をおいて、解析機能を盛り込んでいます。

アドレスサニタイザを例に挙げれば、バッファオーバーラン(配列)やヒープオーバーラン(malloc)の動的検出を、ユーザーがツールの詳細な設定をすることなく容易に検出出来るようにしています。動的解析機能を有効にするためには、コンパイラだけではなくRTOS側に動的解析を実現するための支援ライブラリが必要になるのですが、SOLIDにおいては必要な支援ライブラリを全て当社が開発してツールとして提供しているので、効率のよいデバッグが可能となります。