discover –i ADI ツール (または libdiscoverADI.so ライブラリ) は、SPARC M7 ハードウェアを利用してエラントコードを簡単に修正できるようにする、Oracle Developer Studio のセキュリティー機能です。これは、より早い段階で誤ったコードを検出することで、悪意のあるソフトウェア攻撃やその他のメモリー破損の問題を防止します。
このようなメモリー破壊を防止するために、discover ADI は本番コードに割り込んで、アプリケーションのメモリーポインタに割り当てられたバージョン番号または色をその内容のバージョン番号に関連付けられたポインタと照合して検査します。ポインタのバージョン番号と内容のバージョン番号が一致しない場合、discover ADI はエラーを報告します。このハードウェアアシスト検査により、ユーザーはバッファーオーバーフロー、解放されたポインタ、および無効なポインタのエラーを検出できます。discover ADI は次に、ユーザーが実行を続行する前にエラントコードを修正できるように、正確なソース行 (–g オプションを使用してコンパイルされた場合) およびエラーのスタックトレースを報告します。また、エラーの割り当てと解放ポイントスタックトレースも報告します。コードの計測や再構築の手順は必要ありません。詳細は、Oracle Developer Studio 12.6: Discover および Uncover ユーザーズガイド の Hardware-Assisted Checking Using Silicon Secured Memory (SSM)を参照してください。
アプリケーションが独自のメモリーアロケータを備えていて、malloc() を呼び出さない場合、ユーザーは discover ADI ツールによって提供される新しい API を使用できます。これらの新しい API を表示するには、Oracle Developer Studio 12.6: Discover および Uncover ユーザーズガイド の Custom Memory Allocators and the discover ADI Libraryを参照してください。これらの API はまた、libdiscoverADI.so ライブラリまたは libaidiplugin.3 のマニュアルページでも使用できます。