A.2. binutils の変更点
Red Hat Developer Toolset 11.0 には binutils 2.36 が同梱されています。
以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。
アセンブラー
- Intel アーキテクチャーでは、AMX、AVX VNNI、HRESET、Key Locker、TDX、および UINTR 命令がサポートされます。
- ELF セクションのリンク順序属性を設定する場合は、シンボル名の代わりに数値のセクションインデックスを使用できます。
- 以下の ARM コアがサポートされます: Cortex-A78、Cortex-A78AE、Cortex-A78C、Cortex-X1、Cortex-R82、Neoverse V1、および Neoverse N2。
- 64 ビット ARM アーキテクチャーでは、Armv8-R および Armv8.7-A ISA 拡張がサポートされます。
-
任意のターゲットで機能する no-operation 命令を生成する a
.nopディレクティブが追加されました。 -
SHF_GNU_RETAINフラグがサポートされます。これは、リンカーでセクションをガべージコレクションにしてはならないように指定します。このフラグは、.sectionディレクティブのRフラグを使用してセクションに適用できます。
リンカー
-
新しい
libdepプラグインが追加されました。これは、静的ライブラリーの依存関係を更新し、最終リンクの実行時に使用します。 -
新しい
--error-handling-script=<NAME>コマンドラインオプションが追加されました。未定義のシンボルまたはライブラリーが見つからない場合は、ヘルパースクリプトを実行します。 -
リンカーは、
.ctfセクションのタイプの重複を排除するようになりました。新しい--ctf-share-typesコマンドラインオプションを使用して、リンカーがどのようにこれを行うかを指定できます。このオプションのデフォルト値がshare-unconflictedで、最もコンパクトな出力を生成します。 -
リンカーは、デフォルトで、スペースを節約する
.ctfセクションの variable セクションを省略します。この動作は、ELF シンボルテーブルの独自のシンボルテーブルを持つプロジェクトには適していません。これは ELF シンボルテーブルには反映されません。 -
SHF_GNU_RETAIN ELFセクションフラグに対応しています。このフラグは、リンカーでセクションをガべージコレクションにしてはならないように指定します。
その他のバイナリーユーティリティー
-
nm: 1 文字または 2 文字の文字列を指定する新しいコマンドラインオプション--ifunc-chars=CHARSが追加されました。最初の文字は、グローバルifuncシンボルを表示する際に type 文字として使用されます。2 番目の文字 (存在する場合) は、ローカルのifuncシンボルを表示する際に使用されます。 -
ar: 以前使用していないl修飾子は、静的ライブラリーの依存関係を指定するために使用できます。このlオプションの引数 (または--record-libdeps形式) は、アーカイブの__.LIBDEPメンバーに格納され、リンカーがリンク時に読み取ることができます。 -
readelf:--lto-symsコマンドラインオプションを使用すると、LTO シンボルテーブルセクションの内容を表示できます。 -
readelfは、シンボル名のデマングを有効にする-Cコマンドラインオプションを受け入れます。さらに、--demangle=<style>、--no-demangle、--recurse-limit、--no-recurse-limitオプションが追加されました。 CVE-2021-42574 を緩和するために、新しいコマンドラインオプションが RHSA-2021:4730 アドバイザリーのリリースで binutils に追加されました。
名前または文字列を表示するツール (readelf、string、nm、および objdump) に、Unicode 文字の処理方法を制御する新しい
--unicode(-U) コマンドラインオプションが追加されました。オプションには次の値を設定できます。-
--unicode=defaultは、BiDi 文字をツールの通常の文字として扱います。これは、--unicodeオプションが使用されていない場合のデフォルトの動作です。 -
--unicode=localeは、現在のロケールに従って BiDi 文字を表示します。 -
--unicode=hexは、BiDi 文字を 16 進バイト値として表示します。 -
--unicode=escapeは、BiDi 文字を Unicode エスケープシーケンスとして表示します。 -
--unicode=highlightは、出力デバイスでサポートされている場合には、BiDi 文字を Unicode エスケープシーケンスとして赤で強調表示します。
-