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 アーキテクチャーに固有の事項
-
アセンブラーには、VEX.W
-ignored (WIG) VEX 命令のエンコーディングを制御する a-mvexwig=[0|1]オプションがあります。 -
new
-mx86-used-note=[yes|no]オプションを使用すると、GNU プロパティーノートを生成するかどうかを選択できます。これらの注記は、入力アセンブラーに基づいています。 -
new
-O[2|s]コマンドラインオプションを使用すると、代替で、短い命令エンコーディングが有効になります。
-
アセンブラーには、VEX.W
BFD リンカー
リンカーのデフォルト動作は、個別のコードとデータセグメントを作成するようになりました。これにより、ローダーはコードセグメントへの書き込みパーミッションをオフにできるため、バイナリーは大きくなりますが、より安全です。
-
この動作を無効にするには、コマンドラインオプション
-z noseparate-codeを使用します。リンカーは、以前と同様にセグメントを 1 つ作成します。
-
この動作を無効にするには、コマンドラインオプション
-
コマンドラインオプション
-Mapで作成されたリンカーマップファイルには、GNU プロパティーノートをマージする際に発生するプロパティー変更の詳細が含まれるようになりました。 この--
traceオプションは、アーカイブ内のメンバーを報告しません。これにより、リンカーのバグレポート用にパッケージ化する必要のあるファイルのリストを生成する際に、オプションがより便利です。- アーカイブ内のメンバーを報告するには、オプションを 2 回付与します。
GOLD リンカー
- 破棄されたセクションを参照する再配置に関する警告メッセージが改善されました。
-
new-
debug=pluginオプションを使用すると、プラグイン関連の問題のデバッグが容易になります。 -
new
-z keep_text_section_prefixオプションは、BFD リンカーとの互換性を提供します。 - 64 ビット ARM アーキテクチャーへの対応が改善されました。
-
Linux ABI 拡張機能の
.note.gnu.propertyセクションがサポートされるようになりました。 - Intel Indirect Branch tracking (IBT) およびシャドウスタック (AMD64 および Intel 64 のみ) がサポートされるようになりました。
その他のバイナリーユーティリティー
-
addr2line、c++filt、nm、およびobjdumpツールは、文字列のデマングング中に許可される最大再帰量に制限を持つようになりました。この制限の値は DEMANGLE_RECURSE_LIMIT 定数で定義されます。この定数には、Red Hat Developer Toolset 9.0 の一部として同梱される binutils の 2048 の値があります。 -
上記の制限を削除するには、
--no-recurse-limitオプションを使用できます。これらのツールの以前のバージョンの動作を復元します。このオプションを使用すると、非常に複雑な名前を取り除くことができます。しかし、このツールは、悪意のある構築されたマングルされた名からのスタック消費に対して脆弱になります。 -
arアーカイブマネージャーは、アーカイブ内のメンバーオフセットを表示するO修飾子をサポートするようになりました。 -
Objdump: the-disassembleオプションは、アセンブリーの開始シンボルを指定するパラメーターを取るようになりました。逆アセンブルは、このシンボルから次のシンボル、または関数の最後まで継続します。 -
64 ビット ARM プロセッサーの逆アセンブラーは、シ命令が無効となる可能性のある、命令の不整合を見つけたときに作成される注意を示すことができるようになりました。この注記は、
objdumpの-M notesオプションを使用して有効にすることができます。また、逆アセンブラーは命令の組み合わせと名前付きレジスターが無効な場合に警告を作成します。