
GCCが現在、特定の機能やアーキテクチャのバグを検出するためにマイナーな方法でブートストラップを実行しているという証拠がある人はいますか?それとも、少なくともGCCでエラーをチェックするための実際の起動技術を見つけることができるいくつかの文書を教えてください。
一般ブートローダ
- GCCバージョン(X-1)を使用してGCCバージョン(X)をコンパイルして呼び出します。ㅏ
- ㅏ遅いバイナリを使用する新しいコンパイラです。
- 新しいコンパイラの使用ㅏ自分でコンパイルして作成してください。第二
- 第二高速バイナリを備えた新しいコンパイラです。
- 許す第二自分でコンパイルして作成してください。氏
- このときㅏエラーはなく、結果の実行可能ファイルのバイナリダンプが生成されます。第二そして氏それは同じでなければなりません。
GCC アプローチも開発中に使用されるコードの機能を最小限に保ち、ブートに成功すると最小限の機能セットにバグがないことがわかります。 (単純なブートストラップでカバレッジを増やすために、より多くの機能を使用するClangとは反対です。)
設定ファイルは最適化ブーストラップを案内します。
- 使用ㅏフラグで自己コンパイルし
-fprofile-generate
て生成第二 - 使用第二自己コンパイル(プロファイル情報の生成)
使用ㅏ以下を使用してコンパイルし
-fprofile-use
て生成します。第二使用第二フラグで自己コンパイルし
-fprofile-generate
て生成氏- 使用氏自己コンパイル(プロファイル情報の生成)
使用第二以下を使用してコンパイルし
-fprofile-use
て生成します。氏」このときㅏエラーはなく、結果の実行可能ファイルのバイナリダンプが生成されます。第二そして氏」それは同じでなければなりません。
逆方向および順方向ブートストラップ
- GCCバージョン(X-1)をGCCバージョンXにコンパイルして作成します。ㅏ
- その後、通常のブートローダを起動します。ㅏ
- Aを使用してGCCバージョンXをコンパイルして生成します。D
- 定期的にご案内D。
トピックから抜け出す:誰かが特別なブートストラップを念頭に置いて(例:クロスプラットフォームビルド)、GCCブートストラップグラフを作成し、ブートストラップが失敗した場所をすばやく確認できると思います。