8.12. コンパイラーおよび開発ツール
glibc
が、NSS モジュールの読み込み後に errno を復元するようになりました
これまで、最後の NSS (Name Service Switch) モジュールがデータを提供しなかった場合、glibc
の NSS 実装は getpwent()
などの関数を使用して、データベースの列挙中に errno を誤って設定していました。その結果、これらの列挙関数を使用するアプリケーションはエラーを誤って確認し、失敗していました。glibc
は、NSS モジュールの読み込み後に errno を復元するようになり、その結果、これらの関数を使用するアプリケーションが失敗しなくなりました。
監査インターフェイスは、x8 レジスタと AArch64 の NEON レジスタの全幅を保存および復元するようになりました。
以前は、ダイナミックローダーの監査インターフェイスの実装にバグがあったため、AArch64
の保存されたレジスタの状態が、プロシージャコールの標準と比較して不完全でした。このバグは修正され、監査インターフェイスは x8 レジスタと AArch64
の NEON レジスタの全幅を保存および復元するようになりました。動的ローダー監査インターフェイスを使用するアプリケーションは、AArch64
の x8 レジスターを検査して影響を与えることができるようになりました。この新しい x8 レジスタを使用し、AArch64
の NEON レジスタの全幅にアクセスするには、新しいバージョンのインターフェイスを使用するように監査モジュールを再コンパイルする必要があります (LAV_CURRENT は 2 です)。
POWER9 向けに最適化された strncpy 関数が誤った結果を返さなくなりました
以前は、POWER9 の strncpy 関数は、埋め込み用の NUL バイトのソースとして正しいレジスターを使用していませんでした。その結果、出力バッファーには、NUL パディングではなく、初期化されていないレジスタコンテンツが含まれていました。今回の更新で、strncpy 関数が修正され、出力バッファーの末尾が NUL バイトで正しくパディングされるようになりました。
glibc
memmem
関数の Valgrind オーバーライドが IBMz15 アーキテクチャーにインストールされました
以前は、glibc
memmem
関数の valgrind オーバーライドがないと、以下の警告が誤って検出されていました。
Conditional jump or move depends on uninitialised value(s)
今回の更新には glibc
memmem
関数の valgrind オーバーライドが含まれており、IBMz15 アーキテクチャーの valgrind で実行しているプログラムで memmem
関数を使用しても警告のご検出は発生しなくなりました。