Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 27 章 编译器和工具

GDB 在 64 位 ARM 构架中注册未对齐的监视点命中

在以前的版本中,GDB 调试器只提供对 64 位 ARM 架构上的 watchr watch 以及使用 的硬件监视器的有限支持。因此,在此类系统上运行的 GDB 无法注册一些监视点命中,因此不会停止调试程序。
GDB 已扩展以处理这种情况。因此,它可以正确处理 64 位 ARM 架构上的任何硬件监视点,包括未对齐的 ARM 架构。(BZ#1347993)

IBM Z 架构上的 GCC 中的 retpoline 支持

在这个版本中,增加了对 IBM Z 架构的 GNU Compiler Collection (GCC)中重新生成的支持。retpolines 是内核用来减少缓解 Spectre Variant 2 攻击的开销的技术,如 CVE-2017-5715 中所述。(BZ#1552021)

binutils 当遇到针对绝对地址重新定位时,链接器不再意外终止

在以前的版本中,binutils 软件包中的链接器无法正确处理针对绝对地址的重新定位。因此,遇到这样的重新定位会导致链接器的分段错误。
现在,链接器已被扩展,以处理针对绝对地址的重新定位,不再发生问题。(BZ#1557346)

现在,git-gnome-keyring 子软件包中提供了在 GNOME 密钥环中保存凭证的帮助信息

在以前的版本中,安装 git 会自动安装 GNOME 组件作为依赖项,因为将凭证存储在 GNOME 密钥环中的帮助程序是 git 软件包的一部分。在这个版本中,帮助程序已移到单独的 git-gnome-keyring 子软件包中。因此,git 安装的大小会减少。
安装子软件包:
# yum install git-gnome-keyring
(BZ#1284081)

Git instaweb 现在可以在没有任何额外配置的情况下正常工作,它可在单独的子软件包中可用

在以前的版本中,git instaweb 命令需要一个 web 服务器,且无法在默认安装中工作。在这个版本中,git instaweb 已移到独立的 git-instaweb 子软件包中,该子软件包依赖于 Apache web 服务器,并被配置为使用 web 服务器。因此,git instaweb 现在可以在安装 git-instaweb 时没有进一步配置。安装子软件包:
# yum install git-instaweb
(BZ#1213059)

man 工具不再在 midnight 后打印 gimme gimme

在更新之前,man 实用程序中有一个 Easter egg,它会在 00:30 本地时间在标准输出中打印 gimme gimme。因此,在某些情况下,意外的输出会错误地自动工具。在这个版本中,Easter egg 已被删除,上面描述的问题不再发生。(BZ#1515352)

sysctl 现在允许 tuned 重置内核参数

在此次更新之前,sysctl 中的错误不允许将内核参数设置为默认值。因此,tuned 工具无法使用 sysctl 设置默认内核参数。在这个版本中,sysctl 接受默认值来重置内核参数。因此,tuned 可以正常工作,内核参数可以重置为默认值。(BZ#1507356)

ncat 现在可以正确地在 UDP 模式中设置环境变量

在以前的版本中,ncat 工具无法正确为用户数据报协议(UDP)连接设置环境变量。因此,用户的脚本在 UDP 模式中会失败。在这个版本中,设置了一些内部值,环境变量会被正确设置。(BZ#1573411)

ncat 不再对所有代理类型使用默认 HTTP 端口

在以前的版本中,即使指定了其他类型的代理,也使用 HTTP 代理的默认端口,如 socks4socks5。因此,ncat 工具无法通过非默认端口尝试连接到代理类型。在这个版本中修正了代码,以便默认不使用 HTTP 代理端口。因此,ncat 现在根据代理类型设置正确的默认端口。(BZ#1546246)

JPEG 2000 镜像的解码和转换现在可以正常工作

在以前的版本中,因为 openjpeg 库中的一个错误,JPEG 2000 镜像的解码和转换无法正常工作。有了这个更新,底层源代码已被修复,对 JPEG 2000 镜像的解码和转换现在可以正常工作。(BZ#1553235)

条带 不再使用后续 BFD 库版本的工具构建二进制文件

在以前的版本中,如果文件最初由比条带更新版本的 BFD 库生成的工具,则条带工具会创建一个无效的二进制文件。 因此,运行生成的二进制文件会失败,并生成有关不可解析重定位的错误消息。BFD 已进行了修改,以报告无法识别其未来功能的情况,而不是损害包含这些功能的代码。因此,条状 现在会生成错误消息并在这种情况中中止。(BZ#1553842)

修复进程共享强大 mutex 中的 bug 修复

在以前的版本中,POSIX 线程实现中的 bug mutexes 可能会导致此类 mutexes 无法恢复。因此,接口的用户可以看到进程终止,但不会将 EOWNERDEAD 返回到试图恢复 mutex 的另一个进程。在这个版本中修复了线程库,以及强大的 mutexes 中所有已知的可修复错误。(BZ#1401665)

当附加到另一个容器中的进程时,gdbserver 无法正常工作

在某些情况下,GDB 调试器无法附加到容器中运行的 GDB 服务器,如果无法进行容器调试问题。在这个主机上返回的套接字 修复的错误已被修复,GDB 和 GDBserver 现在可以调试到容器中。(BZ#1578378)

operf 现在处理内核事件示例以退出进程而不崩溃

在以前的版本中,Red Hat Enterprise Linux 内核 4.14 将 perf 事件示例返回的 PID 值改为 -1。因此,内核 perf event 子系统使用 -1 作为 operf 的标记与内部使用 -1 作为标志冲突。标志用于表示需要初始化工作来检索进程信息。但是,任何尝试检索该信息都会导致 operf 崩溃。
在这个版本中,对 oprofile 代码进行了调整为使用不同的值来标记进程信息,因此不再与用于退出进程的 -1 冲突。(BZ#1561103)

SystemTap 提供完整的内核后端

由于内核中的与地址空间布局随机化(ASLR)相关的更改,因此 SystemTap 工具收集的内核后端不完整。SystemTap 已扩展以处理这种情况。因此,SystemTap 提供完整的内核后端。(BZ#1567356)

fallocate () 标志可以再次根据文档提供

在以前的版本中,glibc 软件包中的 fcntl.h 头文件不包含 fallocate () 函数的标记。因此,根据 man page 使用 fallocate () 的程序不会被编译。通过间接包含 < linux/falloc.h> 文件并添加 缺少的标志,并可再次编译此类程序。(BZ#1476120)

NSCD netgroups 缓存正确处理过期

在以前的版本中,当使用 nscd 服务为 netgroups 缓存 LDAP 请求时,缓存中的一些条目可能无法正确过期。因此,ns cd 缓存无法正确反映服务数据库,如 LDAP。缓存到期代码已被修复,网络组再次传播到缓存中的更改。(BZ#1505647)

llvm-private 与最新的 libstdc++ 库版本一起使用时,不再崩溃

在以前的版本中,为图形渲染提供驱动程序的 llvm-private 软件包中的可执行文件与 libstdc++ 库静态链接。因此,使用 GLX 运行程序、Memsa llvmpipe renderer 和不同的 libstdc++ 版本会导致一个意外终止,并显示有关无效指针的消息。llvm-private 已更改,不再静态链接 libstdc++。因此,在这种情况下,使用这个驱动程序的程序不再意外终止。(BZ#1417663)