第7章 コンパイラーおよびツール
linuxptp パッケージは、クロック Synchronization のためのアクティブバックアップボンディングをサポートするようになりました。
この更新により、
ptp4l アプリケーションで使用されるアクティブバックアップモードのボンドインターフェイスを指定できるようになりました。その結果、ptp4l はボンディングのアクティブインターフェイスのクロックを PTP (Precision Time Protocol) クロックとして使用し、フェイルオーバーの場合にはボンディングの別のインターフェイスにスイッチすることができます。さらに、自動モード (-a オプション) の phc2sys ユーティリティーは、PTP スレーブとして動作する場合はシステムクロックをアクティブインターフェイスの PTP クロックに同期し、PTP マスターとして動作する場合は PTP クロックをシステムクロックに同期できます。(BZ#1002657)
parted は、resizepart コマンドを使用してパーティションのサイズを変更できるようになりました
Resizepart NUMBER END コマンドを使用してディスクパーティションのサイズを変更する機能が、Red Hat Enterprise Linux 7 で配布される
Parted ディスクパーティショニングユーティリティーにバックポートされるようになりました。詳細は、parted(8) のman ページを参照してください。
このコマンドはパーティションのサイズのみを変更し、パーティションに存在するファイルシステムのサイズは変更しないことに注意してください。ファイルシステムを拡大または縮小するには、
resize2fs などのファイルシステムユーティリティーを使用します。(BZ#1423357)
binutils がバージョン 2.27 にリベース
binutils パッケージはアップストリームバージョン 2.27 にリベースされました。このバージョンでは次の変更が加えられています。
- 圧縮されたデバッグセクションのサポート
- リンク時の孤立セクションの処理の改善
- LLVM プラグインのサポート
objcopyユーティリティーを使用してオブジェクトファイルに新しいシンボルを挿入する機能- IBM POWER9 アーキテクチャーのサポート
- ARMv8.1 および ARMv8.2 命令セット拡張のサポート
さらに、この更新では次のバグが修正されます。
- 以前は、binutils パッケージには、GNU コーディング規格を説明する
standards.infoドキュメントファイルが含まれていませんでした。このファイルは追加され、info コマンドを通じて再び利用できるようになりました。
pcp がバージョン 3.12.2 にリベース
Performance Co-Pilot (PCP) アプリケーションはバージョン 3.12.2 にリベースされ、多くの機能強化とバグ修正が含まれています。
コレクターシステムの更新:
- 次のパフォーマンスメトリックドメインエージェント (PMDA) が更新されました:
perfevent、コンテナーおよび CGroups、MySQL スレーブメトリック、Linux プロセスごとのメトリック、およびエントロピー、slabinfo、IPv6 ソケット、および NFSD ワーカースレッドの Linux カーネルメトリック。 - 新しい PMDA が利用可能になりました: Prometheus エンドポイントと HAProxy。
- Device Mapper 統計で API が公開されるようになりました。
システムの更新を監視します。
- 派生メトリック言語はすべてのモニター用に拡張されました。
pmchartグラフ作成ユーティリティーには、タイムゾーンと表示のバグの修正が含まれています。pmlogconf設定ユーティリティーは、hotprocメトリックのログを自動的に有効にし、atopメトリックを追加します。パフォーマンスがさらに最適化されました。pcp-atop監視ユーティリティーは、新しい --hotproc オプションを認識します。いくつかのバグが修正されました。pcp-pidstatおよびpcp-mpstat監視ユーティリティーは、いくつかの新しい出力オプションを認識します。pmrepレポートユーティリティーは、sadfツールと互換性のあるコンマ区切り値 (CSV) 出力をサポートするようになりました。PCP メトリックをさまざまな形式にエクスポートするための新しいユーティリティー (pcp2zabbix、pcp2xml、pcp2json、およびpcp2elasticsearch)も追加されました。(BZ#1472153)
さまざまなツールでの DWARF 5 サポートの改善
DWARF デバッグ形式バージョン 5 のサポートが次のツールで拡張されました。
- elfutils パッケージの
eu-readelfツールは、DWARF 5 のすべてのタグと属性を認識するようになりました。
systemtap がバージョン 3.2 にリベース
SystemTap ユーティリティーがアップストリームバージョン 3.2 に更新されました。主な機能強化は、次のとおりです。
- 一致した正規表現の展開のサポートが追加されました。
- 標準入力から入力を受け入れるためのプローブエイリアスが追加されました。
- トランスレーターの診断が改善されました。
- 新しい
statxシステムコールのサポートが追加されました。 - 部分文字列の位置を検出するための新しい文字列関数
strpos()がstap 言語に追加されました。
さらに、この更新では次のバグが修正されます。
- 以前は、統計抽出関数
@min()および@max()が誤った値を返していました。その結果、これらの関数に依存するスクリプトは正しく動作しませんでした。@min()関数と@max()関数は、正しい最大値と最小値を返すように修正されました。その結果、影響を受けるスクリプトは期待どおりに動作するようになりました。 - 以前は、一部のカーネルトレースポイントは、プローブできない場合でも、
stap -Lコマンドでリストされるのに一貫性がありませんでした。SystemTapは修正され、リストされたプローブ可能なトレースポイントセットが再度一致するようになりました。 netdev.receiveプローブが修正され、再びデータを収集できるようになりました。- 壊れた
netdev.receiveプローブの影響を受けるサンプルスクリプトnettop.stpは、再び期待どおりに動作します。
Red Hat Enterprise Linux のカーネルバージョンは拡張 Berkeley Packet Filter (eBPF) をサポートしていないため、関連するアップストリーム
SystemTap 機能は利用できないことに注意してください。(BZ#1473722, BZ#1490862, BZ#1506230, BZ#1485228, BZ#1518462)
valgrind がバージョン 3.13.0 にリベース
valgrind パッケージがバージョン 3.13.0 にアップグレードされ、以前のバージョンに比べて多くのバグ修正と機能拡張が提供されています。注目すべき変更点は次のとおりです。
Valgrindは、大規模なプログラムを実行できるようにいくつかの方法で拡張されています。Valgrindで使用できるメモリーの量が 128 GB に増加しました。その結果、Memcheckツールは、最大約 60 GB を割り当てるアプリケーションの実行をサポートします。さらに、Valgrindは最大 1200 MB の実行可能ファイルをロードできるようになりました。Memcheck、Helgrind、およびMassifツールは、新しい実行ツリー (xtree) 表現を使用して、分析されたアプリケーションのヒープ消費量をレポートできるようになりました。- シンボルデマングラーは、C++11 標準と Rust プログラミング言語をサポートするように更新されました。
- Intel および AMD 64 ビットアーキテクチャーで AVX2 命令を使用したコードの長いブロックで発生する障害が修正されました。
- PowerPC アーキテクチャーの 64 ビット
タイムベースレジスターは、Valgrindによって 32 ビットのみとしてモデル化されなくなりました。 - IBM Power Systems アーキテクチャーのサポートが拡張され、ISA 3.0B 仕様が含まれるようになりました。
- 64 ビット ARM アーキテクチャー用のロードリンク命令およびストア条件命令の代替実装が追加されました。代替実装は、必要に応じて自動的に有効になります。手動で有効にするには、
--sim-hints=fallback-llscオプションを使用します。(BZ#1473725, BZ#1508148)
ncat がバージョン 7.50 にリベースされました
nmap-ncat パッケージによって提供される
ncat ユーティリティーは、アップストリームバージョン 7.50 にリベースされました。これにより、以前のバージョンに比べて多くのバグ修正と新機能が提供されます。主な変更点は、以下のとおりです。
SOCKS5認証のサポートが追加されました。- ポートの状態を素早く確認するための -z オプションが追加されました。
- --no-shutdown オプションは、リッスンモードだけでなく、接続モードでも機能するようになりました。(BZ#1460249)
rsync がバージョン 3.1.2 にリベースされました
rsync パッケージがアップストリームバージョン 3.1.2 にアップグレードされ、以前のバージョンに対するバグ修正や機能強化が数多く追加されました。
この更新では、次の出力変更が導入されています。
- 数値のデフォルトの出力形式が 3 桁のグループ (
1,234,567など) に変更されました。 - --progress オプションの出力が変更されました。次の文字列
xferはxfrに、to-checkはto-chkに短縮されました。
このバージョンの注目すべき機能強化は次のとおりです。
- I/O 処理が改善され、データ転送が高速化されました。
- よりきめ細かい出力のために、新しい --info および --debug オプションが追加されました。
- ナノ秒の変更時刻を同期する機能が追加されました。
- コピー操作中にファイルの所有権を操作するための新しいオプション --usermap、--groupmap、および --chown が追加されました。
- 新しい --preallocate オプションが追加されました。(BZ#1432899)
tcpdump で virtio トラフィックを分析できるようになりました
tcpdump ユーティリティーは、virtio-vsock 通信デバイスをサポートするようになりました。これにより、tcpdump でハイパーバイザーとゲスト仮想マシン間の virtio 通信をフィルタリングして分析できるようになります。(BZ#1464390)
Vim が C++11 の構文ハイライトをサポートするようになりました
Vim テキストエディターでの C++ の構文ハイライトが、C++11 標準をサポートするように強化されました。(BZ#1267826)
Vim は、blowfish2 暗号化メソッドをサポートするようになりました
Blowfish2 暗号化メソッドのサポートが Vim テキストエディターに追加されました。このメソッドは、blowfish よりも強力な暗号化を提供します。blowfish2 暗号化メソッドを設定するには、:setlocal cm=blowfish2 コマンドを使用します。Blowfish2 で暗号化されたファイルは、Red Hat Enterprise Linux 7 と Red Hat Enterprise Linux 6 の間で互換性があることに注意してください。(BZ#1319760)
IO::Socket::SSL Perl モジュールは、デフォルトでシステム全体の CA 証明書ストアを使用するようになりました。
以前は、
IO::Socket::SSL Perl モジュールに基づく TLS アプリケーションが認証局 (CA) 証明書への明示的なパスを提供しない場合、認証局が不明であり、ピアの ID を検証できませんでした。この更新により、モジュールはデフォルトでシステム全体の CA 証明書ストアを使用します。ただし、IO::Socket::SSL->new() コンストラクターの SSL_ca_file オプションに undef 値を渡すことで、証明書ストアを無効にすることができます。(BZ#1402588)
perl-DateTime-TimeZone がバージョン 1.70 にリベースされました
perl-DateTime-TimeZone パッケージはアップストリームバージョン 1.70 にアップグレードされ、以前のバージョンに比べて多くのバグ修正と機能強化が提供されています。以下に例を示します。
- この更新により、Bugzilla バージョン 5 をインストールできるようになりました。これには、以前に提供されていたシステムよりも新しいバージョンの perl-DateTime-TimeZone が必要です。
- オルソンタイムゾーンデータベースがバージョン 2017b に更新されました。以前は、
DateTime::TimeZoneモジュールを使用するPerl言語で作成されたアプリケーションは、データベースが古いためにバージョン 2013h 以降仕様が変更されたタイムゾーンを誤って処理していました。
system-config-kdump は、fadump の実行時に自動または手動の kdump メモリー設定の選択をサポートするようになりました。
この更新により、fadump メモリー予約サポートが system-config-kdump パッケージに追加されます。その結果、
Firmware assisted dump が 選択されている場合、ユーザーは Automated kdump memory settings または Manual settings のいずれかを選択できるようになりました。(BZ#1384943)
conman がバージョン 0.2.8 にリベース
conman パッケージがアップストリームバージョン 0.2.8 にアップグレードされ、以前のバージョンに対するバグ修正や機能強化が数多く追加されました。主な変更点は、以下のとおりです。
- スケーラビリティが向上しました。
Coverity ScanとClangの警告が修正され、安定性が向上しました。- Intelligent Platform Management Interface (IPMI) Serial Over LAN (SOL) コンソールの数に対する任意の制限が修正されました。
TFTP windowsize オプションのサポートが実装されました
この更新により、RFC 7440 に準拠した windowsize オプションのサポートが Trivial File Transfer Protocol (TFTP) サーバーおよびクライアントに実装されました。windowsize オプションを使用すると、データブロックがバッチで送信されるため、スループットが大幅に向上します。(BZ#1328827)
curl は SOCKS5 での GSSAPI の無効化をサポートするようになりました
SOCKS5 プロキシーの認証方法を制御するために、
curl ユーティリティーの新しい --socks5-basic オプションと --socks5-gssapi オプション、および libcurl ライブラリーの対応するオプション CURLOPT_SOCKS5_AUTH が導入されました。(BZ#1409208)
rsync ユーティリティーは、タイムスタンプの元のナノ秒部分を使用してファイルをコピーするようになりました。
以前は、
rsync ユーティリティーはファイルのタイムスタンプのナノ秒部分を無視していました。その結果、新しく作成されたファイルのナノ秒のタイムスタンプは常にゼロでした。この更新により、rsync ユーティリティーはナノ秒部分を認識します。その結果、新しくコピーされたファイルは、それをサポートするシステム上で元のナノ秒のタイムスタンプを保持します。(BZ#1393543)
tcpdump がバージョン 4.9.2 にリベース
tcpdump パッケージがアップストリームバージョン 4.9.2 にアップグレードされ、以前のバージョンに比べて多くのバグ修正 (ほぼ 100 個の CVE) と機能拡張が提供されています。主な変更点は、以下のとおりです。
- OpenSSL 1.1 のセグメンテーション違反が修正され、OpenSSL の使用法が改善されました。
- バッファーオーバーフローの脆弱性が修正されました。
- 無限ループの脆弱性が修正されました。
- 多くのバッファーオーバーリードの脆弱性が修正されました。(BZ#1490842)
OProfile サポートのインテル Xeon プロセッサーファミリーの拡張
OProfile は、インテル Xeon Phi™ プロセッサー x200 および x205 製品ファミリーをサポートするように拡張されました。(BZ#1465354)
libpfm、pcp、および papi での Intel Xeon v4 uncore パフォーマンスイベントのサポート
この更新では、Intel Xeon v4 uncore パフォーマンスイベントのサポートが
libpfm パフォーマンス監視ライブラリー、pcp ツール、および papi インターフェイスに追加されます。(BZ#1474999)
IBM POWER アーキテクチャーでメモリーコピーのパフォーマンスが向上
以前は、GNU C ライブラリー (
glibc) の memcpy() 関数は、64 ビット IBM POWER システム上で非整列ベクトルのロードおよびストア命令を使用していました。したがって、memcpy() を使用して POWER9 システム上のデバイスメモリーにアクセスすると、パフォーマンスが低下します。memcpy() 関数は、調整されたメモリーアクセス命令を使用するように拡張され、POWER9 に関係するメモリーに関係なく、前世代の POWER アーキテクチャーのパフォーマンスに影響を与えることなく、アプリケーションのパフォーマンスを向上させます。(BZ#1498925)
TAI クロックマクロが利用可能
以前は、カーネルは
CLOCK_TAI クロックを提供していましたが、それにアクセスするための CLOCK_TAI マクロが glibc ヘッダーファイル time.h にありませんでした。マクロ定義がヘッダーファイルに追加されました。その結果、アプリケーションは CLOCK_TAI カーネルクロックにアクセスできるようになります。(BZ#1448822)
IBM Z での 4 KiB ページテーブルの選択的使用のサポート
この更新では、binutils パッケージの
ld リンカーにオプション --s390-pgste が追加され、最下位レベルで 4 KiB のメモリーページテーブルを必要とする IBM Z アーキテクチャー用のアプリケーションにマークが付けられます。その結果、この機能の使用は、それを必要とするアプリケーションのみに制限され、システム上のすべてのアプリケーションでスペースを最適に使用できるようになります。qemu バックエンドは、実行中のすべてのアプリケーションに 4 KiB の最下位レベルのページテーブルを強制しなくなったことに注意してください。アプリケーションで必要な場合は、必ず新しいオプションを指定してください。(BZ#1485398)
IBM Z でのより効率的な glibc 関数
IBM Z アーキテクチャーの追加命令のサポートが
glibc ライブラリーに追加されました。その結果、このアーキテクチャー用にコンパイルされたプログラムは、glibc 関数のパフォーマンス向上の恩恵を受けることができます。(BZ#1375235)
ld リンカーは、位置依存コードと独立コードを誤って結合しなくなりました。
以前は、
ld リンカーは、オブジェクトファイルが位置独立実行可能ファイル (PIE) 用にビルドされているかどうかを考慮せずに、IBM Z プラットフォーム上のオブジェクトファイルを結合していました。PIE コードと非 PIE コードを組み合わせることができないため、実行できない実行可能ファイルが作成される可能性がありました。リンカは、PIE コードと非 PIE コードの混合を検出し、この場合にエラーメッセージを生成するように拡張されました。その結果、この方法では壊れた実行可能ファイルを作成できなくなります。(BZ#1406430)
python-virtualenv が 15.1.0 にリベースされました
python-virtualenv パッケージはバージョン 15.1.0 にアップグレードされ、以前のバージョンに比べて多くのバグ修正と機能強化が提供されています。この更新により、setuptools がバージョン 28.0.0 に、pip がバージョン 9.0.1 にバンドルされたパッケージがアップグレードされました。(BZ#1461154)
python-urllib3 は subjectAltName の IP アドレスをサポートします
接続プーリングとファイル POST 機能を備えた Python HTTP モジュールである python-urllib3 パッケージは、
subjectAltName (SAN) フィールドで IP アドレスをサポートするようになりました。(BZ#1434114)
GCC に追加された retpoline のサポート
今回の更新で、GCC への retpoline に対応するようになりました。Retpolines は、CVE-2017-5715 で説明されている Spectre Variant 2 攻撃を軽減するオーバーヘッドを削減するためにカーネルによって使用される手法です。(BZ#1535655)
Shenandoah ガベージコレクターが完全にサポートされるようになりました
以前はテクノロジープレビューとして利用可能であった、
OpenJDK 用の低停止時間 Shenandoah ガベージコレクターが、Intel 64、AMD64、および 64 ビット ARM アーキテクチャーで完全にサポートされるようになりました。Shenandoah は同時退避を実行します。これにより、ユーザーは長い休止時間なしで大きなヒープで実行できます。詳細は、https://wiki.openjdk.java.net/display/shenandoah/Main を参照してください。(BZ#1578075)