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設定オプションを渡します。これには、、llibdebuginfoddebuginfodが必要です。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 でサポートされるようになりました。