第 3 章 编译器和工具
c 异常处理不再导致意外终止
在以前的版本中,在 32 位 Intel 构架中调用了一个不正确的 unwind 例程,因为代码处理 C 异常出现错误检查。因此,
glibc 库的 pthread_cond_wait () 函数可能会使用 glibc 有时意外终止使用 C 编程语言写入数据。修复了错误检查,意外终止不再发生。(BZ#1104812)
使用 -pie 选项创建的可执行文件现在可以正确地启动
在以前的版本中,
binutils 软件包中包含的链接器为 32 位 Intel 构架的独立于位置的二进制文件生成不正确的动态重新定位。因此,使用 -pie 编译器选项构建代码会生成无法启动的二进制文件。链接器已被修复,现在会生成独立于位置运行的可执行文件。(BZ#1427285)
根据 /etc/hosts.conf,对 API 的线程取消支持
thread-cancellation 对
setmntent () 函数中的一个缺陷可能会导致函数失败,并返回预期成功的错误。因此,依赖 setmntent () 的程序可能无法启动。setmntent () 函数已被修复,现在可以按预期工作。
在初始化数据后,ld 不再生成带有代码的无效可执行文件
在以前的版本中,当代码在数据初始化为零值后,binutils
ld linker 将代码放在内存中不正确的位置。因此,链接可执行文件中的程序会意外终止,并显示分段错误。已修复链接器,以正确地为数据分配空间,并将可执行代码定位到正确的起始地址中。因此,链接的可执行文件现在可以正确地运行。(BZ#1476412)
当提供较长的过滤器列表时,ss 程序不再停止
在以前的版本中,为 ss 命令提供过滤器的长列表会导致整数值溢出。因此,的 工具可能会停止程序执行。在这个版本中,源代码中的错误位会被修正,上面描述的问题不再发生。(BZ#1476664)
SystemTap 不再会在负载过重的系统中导致内核 panic
在以前的版本中,当多个进程同时添加和删除
SystemTap 工具探测时,会出现内核 panic。因此,在某些情况下,在负载过重的系统上卸载 SystemTap 模块会导致内核 panic。现在,删除探测的步骤已被修复,SystemTap 不再会在上述情况下造成内核 panic。(BZ#1525651)