6.2. コンパイラーおよびツール
SystemTap Dyninst バックエンドは、dyninst-devel
パッケージなしで動作します。
stap --dyninst
コマンドは、SystemTap Dyninst バックエンドを使用します。以前は、dyninst-devel
パッケージがインストールされていない場合、このバックエンドは機能しませんでした。その結果、SystemTap は予期せず終了し、ユーザーは dyninst-devel
を手動でインストールし、回避策として ldconfig
ツールを実行する必要がありました。このバグは修正され、SystemTap Dyninst バックエンドは dyninst-devel
パッケージなしで機能するようになりました。
(BZ#1498558)
GDB ブレークポイントのデフォルトソースファイルがシンボリックリンクで機能する
以前は、GDB デバッガーは、ファイルがシンボリックリンクである場合、デフォルトのソースファイルのシンボルテーブル情報を見つけることができませんでした。その結果、ユーザーはソースファイル名を省略してデフォルト (break 63
など) を使用してブレークポイントを設定できませんでした。このバグは修正され、ユーザーはシンボリックリンクの背後にあるファイルにブレークポイントを持つデフォルトのソースファイルを使用できるようになりました。
glibc
の DNS スタブリゾルバーは、hostname-.example.com などの有効なホスト名を拒否しなくなりました。
glibc
の DNS スタブリゾルバーは、hostname-.example.com などの特定の有効なホスト名を拒否し、一部の無効な名前を受け入れました。そのため、インターネット上のホスト名を解決できませんでした。この問題を修正するために、res hnok
などの DNS 名検証機能が、ユーザーの期待と仕様により詳細に一致するように調整されました。その結果、hostname-.example.com 形式のホスト名は、DNS に存在する場合は正常に解決できるようになりました。
特定の IBM 文字セットから変換するときに iconv
がハングしなくなりました。
以前は、IBM930、IBM933、IBM935、IBM937、および IBM393 文字セットの glibc
コンバーターはエラーを返し、無効な冗長なシフトシーケンスに遭遇すると、次の入力文字に進むことができませんでした。そのため、-c
オプションを指定して iconv
ツールを使用してこれらの文字セットから変換すると、冗長なシフトシーケンスの最初の発生を超えて進捗できないため、ツールが応答しなくなっていました。コンバーターは、これらのシーケンスを受け入れ、正しく続行されるように変更されました。その結果、上記の変換が可能になりました。
(BZ#1427734)
iconv
は、IBM273 と ISO-8859-1 文字セットの間で変換できます。
以前は、IBM273 文字セットの glibc
実装が ISO-8859-1 文字セットと同等ではありませんでした。Unicode 文字 MACRON
の表現がありませんでした。代わりに、MACRON
と同じ視覚的表現を持つ OVERLINE
Unicode 文字を表すために対応するバイトを使用していました。その結果、glibc
が提供する iconv
ツールを使用して、OVERLINE
文字を含む IBM273 テキストを ISO-8859-1 に変換するか、MACRON
文字を含む ISO-8859-1 テキストを IBM273 に変換すると、変換中にエラーが発生しました。このバグを修正するために、IBM273 文字セットは OVERLINE
表現を MACRON
に置き換えることで、ISO-8859-1 文字セットと同等になりました。その結果、両方の文字セットが MACRON
Unicode 文字を使用するようになり、一方から別の文字への変換でエラーが発生しなくなりました。
getifaddrs
呼び出しがアプリケーションを予期せず終了しなくなる
以前は、インターフェイスが同時にカーネルで変更された場合には、glibc
ライブラリーの getifaddrs
関数によって生成されたネットワークインターフェイスの一覧にインターフェイス名がない可能性がありました。その結果、このような状況では、getifaddrs
を使用するアプリケーションが予期せず終了する可能性があります。これは修正され、getifaddrs
はリストがカーネルの状態と同じであることを確認するようになりました。その結果、上記の予期しない終了は発生しません。
(BZ#1472832)
暗黙的な作業の前に明示的なターゲットを含む Makefile
以前のリリースでは、Makefile での暗黙的な (パターン) および明示的なターゲットの組み合わせが非推奨になりました。バージョン 3.82 に更新した後、make
ビルドツールが混合ターゲットのエラーを返しました。そのため、混合ターゲットを含むレガシー Makefile を使用することはできませんでした。今回の更新により、make
は暗黙的なターゲットの前に明示的なターゲットが一覧表示される状況を正しく解析できるようになりました。その結果、特定のレガシー Makefile を修正せずに再度使用できるようになりました。ただし、明示的なターゲットの前に暗黙的なターゲットを使用するとエラーが発生します。
Makefile で明示的なターゲットと暗黙のターゲットを混在させるのは非推奨であり、新しい Makefile には追加し ない でください。
PCP が、大規模システムですべてのプロセス詳細を報告するようになりました。
以前は、Performance Co-Pilot (PCP)ツールキットは、非常に大きなシステムで特定のプロセスの詳細を報告できませんでした。プロセス詳細ファイルを読み取るコードは、最初の 1024 バイトだけでなく、任意の長さのデータを読み取ることができるように変更されました。その結果、上記の PCP エラーが発生しなくなりました。
特定の実行可能ファイルで strip
がクラッシュしなくなる
以前は、strip
ツールには、実行ファイル構造に関する不明な想定が含まれていました。その結果、特定の実行可能ファイルを削除しようとすると、予期せず strip
を終了する可能性があります。この問題が発生しなくなり、strip
が正しく機能するように、構造に関する仮定が変更されました。
(BZ#1644632)
libdb
による CPU 消費の最適化
以前の libdb
データベースの更新により、trickle スレッドにおける CPU 消費が過剰になっていました。今回の更新で、CPU 使用率が最適化されました。
passwd --stdin
は、パスワードの長さを 79 文字に制限しなくなりました。
--stdin
オプションを指定して passwd
コマンドを使用してパスワードを変更すると、パスワードの長さは 79 文字に制限されていました。そのため、標準入力で 79 文字を超えるパスワードを入力すると、最初の 79 文字のみが受け入れられ、警告が表示されませんでした。今回の更新で、パスワードの使用を許可するサイズを Pluggable Authentication Module (PAM)で定義されたサイズに調整するように passwd
が修正されました。その結果、passwd --stdin
コマンドは 79 文字を超えるパスワードを受け入れるようになりましたが、PAM_MAX_RESP_SIZE - 1
文字より長くなるようになりました。この制限を超えると、passwd
は標準エラー出力にエラーを報告し、終了コード 1 で終了します。
(BZ#1276570)
fixfiles
が誤って失敗しなくなりました。
以前は、/etc/selinux/fixfiles_exclude_dirs
ファイルに少なくとも 1 つのエントリーが含まれており、/etc/selinux/targeted/contexts/files/file_contexts.local
ファイルが存在しない場合、fixfiles
スクリプトは失敗しました。今回の更新で、/etc/selinux/targeted/contexts/files/file_contexts.local
の存在の要件が削除され、上記のシナリオで fixfiles が正常に機能するようになりました。