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、文字列、nm、および objdump)を表示するツールに、Unicode 文字の処理方法を制御する新しい
--unicode
(-U
)コマンドラインオプションが含まれるようになりました。オプションには以下の値を設定できます。-
--Unicode=default
は、BiDi 文字をツールの通常として扱います。これは、--unicode
オプションを使用しない場合のデフォルト動作です。 -
--Unicode=locale
は、現在のロケールに従って BiDi 文字を表示します。 -
--Unicode=hex
は、BiDi 文字を 16 進バイト値として表示します。 -
--Unicode=escape
は、BiDi 文字を Unicode エスケープシーケンスとして表示します。 -
--Unicode=highlight は、BiDi 文字が出力デバイスでサポートされている場合は、赤色で強調
表示されている Unicode エスケープシーケンスとして表示します。
-