GCCでエキゾチックなブートローダを使用するのは合理的ですか?

GCCでエキゾチックなブートローダを使用するのは合理的ですか?

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ブートストラップグラフを作成し、ブートストラップが失敗した場所をすばやく確認できると思います。

ベストアンサー1

おすすめ記事