A.3. binutils の変更点

Red Hat Developer Toolset 9.0 には binutils 2.32 が同梱されています。

以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。

アセンブラー

  • コマンドラインオプション --generate-missing-build-notes=yes が新たに追加されました。入力ソースにこのような記述が含まれていない場合、GNU ビルド属性ノートが作成されます。
  • AMD64 および Intel 64 アーキテクチャーに固有の事項

    • assembler には、VEX.W-ignored(WIG)VEX 命令のエンコーディングを制御する -mvexwig=[0|1] オプションが追加されました。
    • 新しい -mx86-used-note=[yes|no] オプションでは、GNU プロパティーノートを生成するかどうかを選択できます。これらの注記は、入力アセンブラーに基づいています。
    • 新しい -O[2|s] コマンドラインオプションは、代替で短い命令エンコーディングを有効にします。

BFD リンカー

  • リンカーのデフォルト動作は、個別のコードとデータセグメントを作成するようになりました。これにより、ローダーはコードセグメントへの書き込みパーミッションをオフにできるため、バイナリーは大きくなりますが、より安全です。

    • コマンドラインオプションを使用して、この動作 -z noseparate-code を無効にします。リンカーは、以前と同様にセグメントを 1 つ作成します。
  • -Map コマンドラインオプションで作成されたリンカーマップファイルには、GNU プロパティーノートをマージする際に発生するプロパティー変更の詳細が含まれています。
  • --trace オプションは、アーカイブ内のメンバーを報告しません。これにより、リンカーのバグレポート用にパッケージ化する必要のあるファイルの一覧を生成する際に、オプションがより便利です。

    • アーカイブ内のメンバーを報告するには、オプションを 2 回付与します。

GOLD リンカー

  • 破棄されたセクションを参照する再配置に関する警告メッセージが改善されました。
  • 新しい --debug=plugin オプションを指定すると、プラグイン関連の問題のデバッグが容易になります。
  • 新しい -z keep_text_section_prefix オプションは、BFD リンカーとの互換性を提供します。
  • 64 ビット ARM アーキテクチャーへの対応が改善されました。
  • Linux ABI 拡張機能の .note.gnu.property セクションがサポートされるようになりました。
  • Intel Indirect Branch tracking (IBT) およびシャドウスタック (AMD64 および Intel 64 のみ) がサポートされるようになりました。

その他のバイナリーユーティリティー

  • addr2linec++filtnm、および objdump ツールは、文字列のデマングリング中に許可される最大再帰量に制限を持つようになりました。この制限の値は DEMANGLE_RECURSE_LIMIT 定数で定義されます。この定数には、Red Hat Developer Toolset 9.0 の一部として同梱される binutils の 2048 の値があります。
  • この --no-recurse-limit オプションを使用すると、上記の制限を削除できます。これらのツールの以前のバージョンの動作を復元します。このオプションを使用すると、非常に複雑な名前を取り除くことができます。しかし、このツールは、悪意のある構築されたマングルされた名からのスタック消費に対して脆弱になります。
  • ar アーカイブマネージャーは、アーカイブ内でメンバーオフセットを表示する O 修飾子に対応するようになりました。
  • Objdump: この --disassemble オプションは、逆アセンブルの開始記号を指定するパラメーターを取ります。逆アセンブルは、このシンボルから次のシンボル、または関数の最後まで継続します。
  • 64 ビット ARM プロセッサーの逆アセンブラーは、シ命令が無効となる可能性のある、命令の不整合を見つけたときに作成される注意を示すことができるようになりました。この注記は、objdump-M notes オプションを付けて有効にできます。また、逆アセンブラーは命令の組み合わせと名前付きレジスターが無効な場合に警告を作成します。