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,并接受一些无效名称。因此,互联网上的一些主机名无法解析。要解决这个问题,已将 DNS 名称验证功能(如 res hnok
)进行了调整,以便更接近用户预期和规格。因此,如果在 DNS 中存在 hostname-.example.com 的主机名,它们现在可以被成功解析。
当从
某些 IBM 字符集转换时,conv 不再挂起
在以前的版本中,IBM930、IBM933、IBM935、IBM937 和 IBM393 字符集的 glibc
转换程序会返回一个错误,并在遇到无效冗余转换序列时提前返回到下一个输入字符。因此,使用带有 -c
选项的 iconv
工具从这些字符转换来丢弃这些字符会导致工具无响应,因为它不能超过冗余转换序列的第一个发生状态。已修改转换器以接受这些序列并正确继续。因此,上述转换现在可以进行。
(BZ#1427734)
iconv
可以在 IBM273 和 ISO-8859-1 字符集之间进行转换
在以前的版本中,IBM273 字符集的 glibc
实现不等于 ISO-8859-1 字符集。它没有 Unicode 字符 MACRON
的表示,而是使用对应的字节来代表 OVERLINE
Unicode 字符,其视觉表示与 MACRON
相同。因此,使用 glibc
提供的 iconv
工具将包含 OVERLINE
字符的 IBM273 文本转换为 ISO-8859-1 或 ISO-8859-1 文本,其中包含 MACRON
字符到 IBM273 会导致转换过程中出现错误。要解决这个问题,IBM273 字符集等同于 ISO-8859-1 字符集,方法是使用 MACRON
替换其 OVERLINE
表示。因此,两个字符集现在都使用 MACRON
Unicode 字符,并且从一个字符转换到另一个字符并不会导致错误。
getifaddrs
调用不再意外终止应用程序
在以前的版本中,如果同时在内核中更改了接口,glibc
库中的 getifaddrs
功能生成的网络接口列表可能会缺少接口名称。因此,在这种情况下,使用 getifaddrs
的应用程序可能会意外终止。这个问题已被解决,getifaddrs
现在可确保列表与内核状态相同。因此,无法发生上述意外终止。
(BZ#1472832)
在再次隐式工作前包含明确目标的 Makefile
在以前的版本中,Makefiles 中的隐式(模式)和显式目标已弃用。更新至 3.82 版本后,make
构建工具会返回混合目标的错误。因此,无法使用包含混合目标的旧 Makefile。在这个版本中,make
可以正确地解析在隐式目标前列出显式目标的情况。因此,某些旧的 Makefile 现在可以无需修改地再次使用。但是,在显式目标之前隐式目标仍会导致错误。
请注意,Makefiles 中的显式和隐式目标已被弃用,不应添加到新的 Makefile 中。
PCP 现在报告大型系统的所有进程详情
在以前的版本中,Performance Co-Pilot (PCP)工具包在某些情况下无法在非常大的系统中报告某些进程详情。读取进程详细信息文件的代码已更改,以便可以读取任意长度的数据,而不是仅读取前 1024 字节。因此,上面描述的 PCP 错误不再发生。
条带
不再使用某些可执行文件崩溃
在以前的版本中,条状
工具包含有关可执行文件结构的不好的假设。因此,尝试剥离某些可执行文件可能会意外终止条带。对结构的假设已被修改,这个问题不再发生,
条带
可以正常工作。
(BZ#1644632)
通过 libdb
优化 CPU 的使用
在以前的版本中对 libdb
数据库的更新会过度消耗 CPU。在这个版本中,CPU 的使用已被优化。
passwd --stdin
不再将密码长度限制为 79 个字符
当使用带有 --stdin
选项的 passwd
命令更改密码时,密码的长度限制为 79 个字符。因此,当您通过标准输入输入时输入的密码超过 79 个字符时,只接受前 79 个字符,且不会显示警告。在这个版本中,passwd
已被修复,将密码的可接受的大小与可插拔验证模块(PAM)定义的大小保持一致。因此,passwd --stdin
命令现在接受超过 79 个字符的密码,但不超过 PAM_MAX_RESP_SIZE - 1
个字符。如果超过该限制,则 passwd
会向标准错误输出报告错误,并以退出代码 1 退出。
(BZ#1276570)
Fix
files 不再错误地失败
在以前的版本中,如果 /etc/selinux/
文件至少包含一个条目,且 fixfiles
_exclude_dirs/etc/selinux/targeted/contexts/files/file_contexts.local
文件不存在,则 fixfiles 脚本会失败。在这个版本中,存在 /etc/selinux/targeted/contexts/files/file_contexts.local
的要求已被删除,修复文件现在可以在上述场景中正常工作。