A.2. binutils の変更点
Red Hat Developer Toolset 10.0 には binutils 2.35 が同梱されています。
以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。
アセンブラー
-
.symver
ディレクティブは、元のシンボルの可視性を更新し、別のバージョンが付いたシンボルを 1 つの元の記号に割り当てるように拡張されました。 - Intel SERIALIZE および TSXLDTRK 命令に対応するようになりました。
-
CVE-2020-0551 を軽減するために、
-mlfence-after-load=
、-mlfence-before-indirect-branch=
、-mlfence-before-ret=
オプションが x86 の assembler に追加されました。 -
この出力が生成されている場合は、DWARF 5 デバッグ出力を生成するためにアセンブラーに
--gdwarf-5
オプションが追加されました。また、バージョン 5.debug_line
セクションを生成できるようになりました。 -
-malign-branch-boundary=NUM
、-malign-branch=TYPE[+TYPE…]
、-malign-branch-prefix-size=NUM
、および-mbranches-within-32B-boundaries
オプションが追加され、セグメントプレフィックスまたは NOP 命令と固定境界内のブランチを合わせます。 -
--gdwarf-cie-version
コマンドラインフラグが追加されました。このフラグは、アセンブラーが作成する DWARF CIE (Common Information Entries) のバージョンを制御します。
リンカー
-
シンボルを動的にするために、コマンドラインオプション
--export-dynamic-symbol
および--export-dynamic-symbol-list
が追加されました。 -
-Map=filename
コマンドラインオプションが拡張されました。filename
がディレクトリーの場合は、リンカーにより、ファイルfilename/output-filename.map
ファイルが作成されます。 -
DT_TEXTREL
が位置独立実行可能ファイルまたは共有オブジェクトで設定されていることを警告するために、--warn-textrel
コマンドラインオプションが追加されました。 -
コマンドラインオプション
--enable-non-contiguous-regions および
が追加されました。--enable-
non-contiguous-regions-warnings -
リンカースクリプトの
INPUT()
およびGROUP()
ディレクティブの相対パス名が、他の検索パスの前にリンカースクリプトのディレクトリーに関連して検索されるようになりました。 -
-z start-stop-visibility=…
コマンドラインオプションが追加され、synthetic__start_SECNAME
と__stop_SECNAME
の記号の表示を制御できます。 -
コンパイラー
-M
および-MP
オプションが書き込んだファイルなど、リンカーが参照する入力ファイルを一覧表示する Make 形式の依存関係ファイルを書き込むために、--dependency-file
コマンドラインオプションが追加されました。 -
LOAD セグメントのエラーで対応していない PHDR セグメント
のld
チェックがより効果的になりました。このチェックは、以前のバージョンのld
が正しく許可されていないケースをキャッチできるようになりました。このエラーが表示された場合は、正しくないリンカースクリプトでリンクしているか、構築しているバイナリーが動的ローダーによってロードされることが意図されていないことが考えられます。後者の場合は、--no-dynamic-linker
オプションが適切です。 -
--no-print-map-discarded
コマンドラインオプションが追加されました。
その他のバイナリーユーティリティー
-
readelf ツールは、ワイドモードが有効になっていない場合に、シンボル名を表示するようになりました。名前が長すぎると、短縮され、最後の 5 文字が「[…]」に置き換えられます。
-T
または--silent-truncation
オプションを使用すると、以前の動作を復元できます。 -
readelf ツールには、
-L
または--lint
または--enable-checks
オプションが追加されました。これにより、検証されているファイルに考えられる問題の警告メッセージが可能になりました。たとえば、このオプションを有効にすると、readelf がゼロサイズのセクションをチェックします。これは、ELF 標準により許可されますが、実際に何かが含まれていることをユーザーが予想している場合は危険になる可能性があります。 -
binutils が ELF/DWARF デバッグ情報とソースコードを配布するための HTTP サーバー
debuginfod
に対応するようになりました。debuginfod
で構築すると、readelf および objdump は、このようなファイルが見つからない場合に、別のデバッグファイルについてdbuginfod
サーバーに自動的にクエリーできます。debuginfod
で binutils をビルドするには、--with-debuginfod
設定オプションを渡します。これには、、llibdebuginfod
debuginfod
が必要です。debuginfod
は elfutils で配布され、バージョン 0.178 で始まります。詳細は、https://sourceware.org/elfutils を参照してください。 -
ar プログラムに
--output
オプションが追加されました。このオプションを使用すると、アーカイブからメンバーを抽出する際に出力ディレクトリーを指定できます。 -
--keep-section
オプションが objcopy および strip に追加されました。このオプションは、指定したセクションが削除されないようにします。 -
--source-comment[=<txt>]
オプションが objdump に追加されました。無視して表示されるソースコード行の接頭辞を提供します。 -
セクションの調整を可能にするために objcopy に
--set-section-alignment <section-name>=<align>
オプションが追加されました。 -
Verilog 16 進数形式でデータ要素の幅を制御するための Verilog ターゲットの objcopy に
--verilog-data-width
オプションが追加されました。 そのようなリンクが複数ある場合は、readelf (
--debug-dump=links
および--debug-dump=follow
) および objdump (--dwarf=links
および--dwarf=follow-links
) では、個別のデバッグ情報ファイルが表示されたり、複数のリンクをフォローするようになりました。これは通常、GCC-gsplit-dwarf
オプションが使用される場合に発生します。さらに、objdump の
--dwarf=follow-links
オプションは、他の表示オプションにも影響します。たとえば、--syms
オプションと組み合わせると、リンクされたデバッグ情報ファイルのシンボルテーブルも表示されます。--disassemble
オプションと組み合わせると、--dwarf= follow-links
オプションにより、リンクされたファイルのシンボルテーブルが読み取られ、メインファイルでコードのアセンブル時に使用されます。- Compact Type Format でエンコードされたダンプタイプのダンプが objdump および readelf でサポートされるようになりました。