Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第26章 コンパイラーおよびツール

パッケージの選択が system-config-kickstart で機能するようになりました

system-config-kickstart グラフィカルキックスタートファイル作成ユーティリティーのバグにより、ツールがリポジトリーからパッケージ情報をダウンロードできなかったため、パッケージを選択できなくなりました。このバグは修正され、system-config-kickstart でパッケージの選択を再度設定できるようになりました。(BZ#1272068)

NVMe デバイスは、parted および AnacondaUnknown として表示されなくなりました

以前は、Non-Volatile Memory Express (NVMe) デバイスは、インストール中に Anaconda インストーラーおよび Parted ストレージ設定ツールによって認識されず、代わりに Model: Unknown (unknown) というラベルが付けられていました。この更新では、これらのデバイスの認識を可能にするアップストリームパッチがバックポートされ、インストール中にデバイスが NVMe Device (nvme) として正しく識別されるようになりました。(BZ#1316239)

DBD::MySQL は、ビッグエンディアンプラットフォームでより小さい整数を正しく送受信できるようになりました。

以前は、DBD::MySQL Perl ドライバーは、ビッグエンディアンプラットフォーム上で 64 ビットより小さい整数を誤って処理していました。その結果、IBM Z アーキテクチャー上の特定の変数サイズでは、準備されたステートメントのテストが失敗しました。このバグは修正され、上記の問題が発生しなくなりました。(BZ#1311646)

version Perl モジュールはテイントされた入力とテイントされたバージョンオブジェクトをサポートするようになりました。

以前は、Perl の バージョン モジュールはテイントされた入力を正しく解析できませんでした。その結果、テイントされた変数からバージョンオブジェクトをビルドすると、version->new() メソッドによって Invalid version format (non-numeric data) エラーが報告されました。この更新により、テイントされた入力の解析と、テイントされたバージョンのオブジェクトと文字列の出力のサポートが追加されました。(BZ#1378885)

HTTP::Daemon Perl モジュールが IPv6 をサポートするようになりました

以前は、HTTP::Daemon Perl モジュールは IPv6 アドレスをサポートしていませんでした。その結果、IPv6 アドレスで HTTP::Daemon::SSL サーバーを実行しているときに、Arg length for inet_ntoa を持つ IPv6 アドレスを出力しようとしてサーバーが予期せず終了しました。エラーメッセージが表示されます。この更新により、HTTP::Daemon モジュールが IO::Socket::INET から IO::Socket::IP モジュールに移植されました。その結果、HTTP::Daemon は IPv6 アドレスを期待どおりに処理します。(BZ#1413065)

GDB ではブレークポイントのリストにインライン関数名が表示されます

以前は、GDB デバッガーはブレークポイントをリストするときに、インライン化された呼び出し先関数名ではなく呼び出し元関数名を表示していました。その結果、GDB ユーザーはインライン関数に配置されたブレークポイントを関数名から識別できませんでした。GDB は、ブレークポイントが設定されたときにインライン呼び出し先関数の名前を保存するように拡張されました。その結果、GDB はブレークポイントをリストするときにインライン関数の名前を正しく表示するようになりました。(BZ#1228556)

間違った GCC アライメントによるモジュールのロード時の再配置エラーが修正されました

以前は、GCC は 2^0 アライメントの .toc セクションを含むコードを生成していました。その結果、モジュールのロード時に再配置エラーが発生する可能性があります。GCC は、 2^3 に整列された .toc セクションを生成するように変更されました。この修正により、このバグが発生するほとんどのケースが解消されます。(BZ#1487434)

gcc C++ 標準ライブラリーの istream::sentry オブジェクトは例外をスローしなくなりました

以前は、gcc C++ 標準ライブラリーの istream::sentry オブジェクトは、空白のスキップ中に発生する例外を適切に処理していませんでした。その結果、オブジェクトのコードで予期しない例外が発生する可能性があります。Sentry クラスのコンストラクターは、例外をキャッチし、istream オブジェクトのエラー状態を適切に更新するように修正されました。(BZ#1469384)

IBM Power 上の gdb の複数の修正

以前は、IBM Power アーキテクチャーでは gdb デバッガーのさまざまな機能が壊れていました。
  • 記録および再生機能が利用できないため、エラーメッセージが表示されるか、以前のレジスター値が復元されません。
  • 短いベクトルの戻り値を出力すると、間違った値が表示されました。
  • アトミックシーケンスを 1 回ステップオーバーしても実際にはステップオーバーできませんでした。プログラムカウンターは変化しませんでした。
この更新ではこれらの機能が修正されています。(BZ#1480498, BZ#1480496, BZ#1480497)

終了するプロセスからコアをダンプするときに GDB がクラッシュしなくなりました

以前は、GDB デバッガーは、GDB がプロセスをコアファイルにダンプしている間にプロセスを終了できることを考慮していませんでした。その結果、ダンプされたプログラムが予期しない SIGKILL シグナルを受信した後に終了すると、gcore ユーティリティーも予期せず終了しました。今回の更新では、この状況に対処できるように GDB が拡張されました。その結果、GDBgcore コマンドが予期せず終了したり、無効なコアファイルが作成されたりすることがなくなりました。(BZ#1493675)

GDBVM_DONTDUMP フラグで保護されたメモリーを再びダンプできるようになりました

GNU デバッガー GDB への以前の変更により、データセキュリティーを強化するためにプロセスメモリーをダンプするときの gcore コマンドの動作が Linux カーネルの動作により近くなりました。その結果、GDB のユーザーは VM_DONTDUMP フラグで保護されたメモリーをダンプできませんでした。新しい set dump-excluded-mappings 設定が GDB に追加され、このフラグを使用したメモリーのダンプが有効になりました。その結果、ユーザーは GDB を使用してプロセスメモリー全体を再度ダンプできます。(BZ#1518243)

スレッドで CLONE_PTRACE フラグを使用するプログラムが strace で実行されるようになりました。

以前は、新しいスレッドに CLONE_PTRACE フラグを設定するプログラムは、strace ツールの動作に ptrace() 関数を使用するため、未定義の動作を引き起こしていました。その結果、そのようなプログラムは追跡できず、適切に実行できませんでした。strace ツールは、予期しない CLONE_PTRACE フラグを持つスレッドを無視するように変更されました。その結果、CLONE_PTRACE を使用するプログラムは strace で適切に実行されます。(BZ#1466535)

exiv2 はバージョン 0.26 にリベースされました

exiv2 パッケージがアップストリームバージョン 0.26 にアップグレードされ、以前のバージョンに対するバグ修正や機能強化が数多く追加されました。特に、exiv2 には以下が含まれるようになりました。
  • Visual Studio の CMake サポート
  • 再帰的ファイルダンプ
  • ICC プロファイルのサポート
  • メタデータパイプ用の exiv2 コマンド
  • ユーザーレンズ定義用のレンズファイル
  • ユーザー定義のレンズタイプ
  • WebP のサポート
完全な変更ログについては、http://www.exiv2.org/changelog.html#v0.26 を参照してください。(BZ#1420227)

gssproxy が ccache を適切に更新するように修正されました

以前は、gssproxy パッケージは、Kerberos 認証情報キャッシュ (ccache) 内のキーバージョン番号 (kvno) の増加を正しく処理していませんでした。その結果、古い ccache は適切に上書きされませんでした。この更新により、gssproxy ccache キャッシュにおけるこれらの問題が修正されます。その結果、cc キャッシュが適切に更新されるようになり、キャッシュによって過剰な更新要求が防止されます。(BZ#1488629)

IBM Power Systems アーキテクチャーのリトルエンディアン版の gcc は、未使用のスタックフレームを作成しなくなりました

以前は、IBM Power Systems アーキテクチャーのリトルエンディアン版で gcc コンパイラーの -pg -mprofile=kernel オプションを使用すると、リーフ関数用に未使用のスタックフレームが生成される可能性がありました。gcc コンパイラーが修正され、この状況で未使用のスタックフレームが発生することはなくなりました。(BZ#1468546)

gssproxy のいくつかのバグが修正されました

この更新により、gssproxy パッケージのいくつかのバグが修正されました。バグ修正には、潜在的なメモリーリークと同時実行の問題の防止が含まれます。(BZ#1462974)

BFD ライブラリーは、バイナリーアドレスをソースコードの位置に変換する機能を取り戻しました

binutils パッケージによる BFD ライブラリーへの以前の機能拡張により、DWARF デバッグ情報の解析にバグが発生しました。その結果、BFD とそれを使用するすべてのツール (gprofperf など) は、バイナリーファイルのアドレスをソースコード内の位置に変換できませんでした。この更新では、BFD が修正され、上記の問題が回避されました。その結果、BFD はバイナリーファイル内のアドレスをソースコード内の位置に期待どおりに変換できるようになりました。
この修正を利用するには、BFD ライブラリーを使用するツールを再リンクする必要があることに注意してください。(BZ#1465318)

引数を渡すためにベクトルレジスターを使用するアプリケーションが再び動作するようになりました

以前は、GNU C ライブラリー (glibc) のダイナミックローダーには、64 ビット Intel および AMD アーキテクチャーのベクトルレジスターの保存と復元を回避する最適化が含まれていました。そのため、これらのアーキテクチャー向けにコンパイルされ、関数の引数を渡すためにサポートされていないベクトルレジスターを使用し、公開されている x86-64 psABI 仕様に準拠していないアプリケーションは失敗し、予期しない結果が生じる可能性があります。この更新により、ダイナミックローダーが XSAVE および XSAVEC コンテキストスイッチ CPU 命令を使用するように変更され、すべてのベクトルレジスターを含むより多くの CPU 状態が保持されます。その結果、x86-64 psABI 仕様ではサポートされていない方法で、引数の受け渡しにベクトルレジスターを使用するアプリケーションが再び動作するようになります。(BZ#1504969)

curl が HTTP 認証状態を適切にリセットするようになりました。

この更新より前は、HTTP 転送が終了したとき、または curl_easy_reset() 関数が呼び出されたときに、認証状態が適切にリセットされませんでした。その結果、curl ツールはリクエスト本文を次の URL に送信しませんでした。今回の更新により、HTTP 転送が行われたとき、または curl_easy_reset() が呼び出されたときに認証状態が適切にリセットされ、上記の問題は発生しなくなります。(BZ#1511523)

strip ユーティリティーが再び動作します

以前は、BFD ライブラリーは、IBM Z アーキテクチャーでの NULL ポインターチェックを見逃していました。その結果、strip ユーティリティーを実行するとセグメンテーションフォールトが発生しました。このバグは修正され、strip は想定どおりに機能するようになりました。(BZ#1488889)

f2py によって生成された Python モジュールのインポートが適切に機能するようになりました。

以前は、ダイナミックリンクローダーがシンボルをグローバルにロードするように設定されている場合、f2py ユーティリティーによって生成された Python モジュールをインポートするときにセグメンテーションフォールトが発生しました。この更新により、PyArray_API シンボルの名前が _npy_f2py_ARRAY_API に変更され、マルチアレイモジュール内の同じシンボルとの潜在的な競合が防止されます。その結果、f2py によって生成されたモジュールをインポートしてもセグメンテーション違反が発生しなくなりました。(BZ#1167156)

mailx がマルチバイト件名を適切にエンコードしていない

以前は、mailx メールユーザーエージェントは、MultiPurpose Internet Mail Extension (MIME) 標準にエンコードするときに、非 ASCII メッセージヘッダーをマルチバイト文字の境界で分割しませんでした。その結果、ヘッダーが正しくデコードされませんでした。この更新により、MIME エンコード関数が変更され、ヘッダーがマルチバイト文字の境界でエンコードされた単語に分割されるようになります。その結果、mailx は適切にデコードできるヘッダーを持つメッセージを送信するようになりました。(BZ#1474130)

--all-logs オプションが sosreport で期待どおりに機能するようになりました。

以前は、--all-logs オプションは、apachenscd、および sosreport ユーティリティーの logs プラグインによって無視されました。このバグは修正され、前述のプラグインは --all-logs を 正しく処理できるようになりました。--all-logs を使用する場合、--log-size オプションを使用してログのサイズを制限することは不可能であることに注意してください。これは想定された動作です。(BZ#1183243)

Python スクリプトは、ポートを明示的に設定しながら、プロキシー経由で HTTPS サーバーに正しく接続できるようになりました。

Red Hat Enterprise Linux で提供される Python 標準ライブラリーは、デフォルトで証明書検証を有効にするために以前に更新されました。ただし、バグにより、標準ライブラリーを使用する Python スクリプトは、接続先のポートを明示的に設定する場合、プロキシーを使用して HTTPS サーバーに接続できませんでした。同じバグにより、ユーザーはブートストラップスクリプトを使用してプロキシー経由で Red Hat Satellite 6 に登録することもできませんでした。このバグは修正され、スクリプトは HTTPS サーバーに接続し、期待どおりに Red Hat Satellite を使用して登録できるようになりました。(BZ#1483438)