8.12. 编译器和开发工具
glibc
现在在载入 NSS 模块后恢复 errno
在以前的版本中,如果最后一个 NSS 模块没有提供任何数据,glibc
中的 Name Service Switch (NSS)实现会在数据库枚举过程中(如使用 getpwent()
)出现错误。因此,使用这些枚举功能的应用程序会错误地观察到错误和失败。glibc
现在在载入 NSS 模块后恢复 errno,因此使用这些功能的应用程序不再会失败。
审计界面现在保存并恢复 x8 寄存器,以及 NEON 注册的完整宽度 AArch64
在以前的版本中,动态加载程序审计接口实现中的一个错误会导致 AArch64
保存的寄存器状态与过程调用标准相比不完整。这个程序错误已被解决,审核接口现在保存并恢复 x8 注册,以及用于 AArch64
的 NEON 注册的完整宽度。使用动态加载程序审核接口的应用程序现在可以检查并影响 x8 为 AArch64
的注册。要使用这个新的 x8 注册,且有权访问 NEON 寄存器的完整宽度,必须在 AArch64
中重新编译审计模块以使用接口的新版本 (LAV_CURRENT 为 2)。
POWER9-optimized strncpy 功能不再给出不正确的结果
在以前的版本中,POWER9 strncpy 功能没有使用正确的注册作为 padding NUL 字节的来源。因此,输出缓冲包含未初始化的寄存器内容,而不是 NUL padding。在这个版本中,strncpy 功能已被修复,输出缓冲区的末尾会正确添加 NUL 字节。
在 IBMz15 构架中安装的 glibc
memmem
功能的 Valgrind 覆盖
在以前的版本中,glibc
memmem
功能缺少 valgrind 覆盖会导致假的警告:
Conditional jump or move depends on uninitialised value(s)
这个版本包括 glibc
memmem
函数的 valgrind 覆盖,因此在 IBMz15 架构下运行的程序中使用 memmem
功能时不再有假的警告。