6.10. 编译器和开发工具


GCC Toolset 13:GCC 现在在启用了向量化的 IBM POWER9, Little Endian 上正确编译代码

在以前的版本中,当在启用了向量化 IBM POWER9、Little Endian 上编译代码时,GCC 编译器会生成不正确的代码。扩展器中的 Register Transfer Language (RTL)模式已被修复,代码现在可以正确编译。

Jira:RHEL-45190[1]

glibc 动态链接器防止使用来自自定义 malloc 实现的 TLS 访问的应用程序所做的可重入 malloc 调用

有些应用程序提供了一个自定义的 malloc 动态内存分配实现,它使用全局动态本地线程存储(TLS),而不是初始执行的 TLS。在此次更新之前,带有使用全局动态 TLS 的捆绑的 malloc 调用的应用程序可能会遇到对应用程序的 malloc 子系统的可重入调用。因此,应用程序 malloc 调用因为堆栈耗尽或内部数据结构的意外状态而崩溃。有了此更新,glibc 动态链接程序会检测自定义 malloc 实现中的 TLS 访问。如果在 malloc 调用期间检测到 TLS 访问,则会在 TLS 处理期间跳过进一步的调用,并阻止可重入 malloc 调用。

Jira:RHEL-39992

TLS 数据不再被 ELF 构造器的 dlopen () 调用覆盖

在以前的版本中,当从 ELF 构造器调用 dlopen () 函数时,glibc 动态链接器无法正确跟踪线程本地存储(TLS)初始化状态。因此,在应用程序修改后,TLS 数据会被恢复为原始值。在这个版本中,动态链接器使用单独的标记来跟踪每个共享对象的 TLS 初始化。因此,TLS 数据不再被 ELF 构造器中的 dlopen () 函数的调用意外覆盖。

Jira:RHEL-36148

Perftools 不再无法处理 LTO 调试信息

在以前的版本中,binutils 集合中的 Binary File Descriptor (BFD)库(其被性能工具使用,来从二进制文件读取调试信息)无法处理启用了 Link Time Optimization (LTO)的 GCC 编译器生成的调试信息。因此,perftools 会显示错误消息,并在检查包含 LTO 调试信息的文件时无法正确执行。BFD 库已被更新,以处理在启用了 LTO 的编译过程中生成的调试信息,受影响的 perftools 可以成功处理此类调试信息。

Jira:RHEL-43758[1]

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.