いくつかの目的のためにgccをインストルメントする必要があります。目標は、特にコンパイル中に呼び出されるGCC関数を追跡できるようにすることです。残念ながら、私はGCCのアーキテクチャにあまり詳しくないので、少し助けが必要です。次の手順を試しました。
1)gcc / Makefile.inをハッキングし、「-finstrument-functions」フラグをT_CFLAGSに追加します。2) start_test関数とend_test
関数
の実装とテスト済みのバージョンがあります。これらは、toplev_main()呼び出しの前後に、gcc/main.cから呼び出されます。含まれているファイルはgccにリンクされています(オブジェクトはOBJS-commonに追加され、依存関係は後でgcc / Makefile.inで定義されます)
3)contrib/download_prerequisitesを使用して前提条件をダウンロードします。
4)クリーンなビルドディレクトリ(ソースディレクトリと同じレベル)から構成を実行します
。5)「makeall」でビルドを開始します。./../gcc-4.6.2/configure --prefix="/opt/gcc-4.6.2/" --enable-languages="c,c++"
このようにして、28Gを使用していましたが、メモリが不足しました。
次に、MakefileからT_CFLAGS設定を削除し、makeコマンドに-finstrument-functionsを指定しようとしましたmake CFLAGS="-finstrument-functions"
。ビルドはこの方法で成功しましたが、何かをコンパイルしようとすると、空の出力ファイルが生成されました。(理論的には、 end_testはその結果を特定のファイルに書き込む必要があります。)
何を間違えますか?前もって感謝します!