4.13. 编译器和开发工具
新的 glibc 选项,以影响 IBM Z 上优化的日常使用情况
					在 IBM Z 构架上,glibc 库根据硬件功能(如 hwcaps 和 stfle 位)选择功能实现。有了此更新,您可以通过设置 glibc.cpu.hwcaps 可调项来指导库所做的选择。
				
Bugzilla:2169978[1]
改进了 glibc 中基于 Intel® Xeon® v5 硬件的字符串和内存例程性能
					在以前的版本中,glibc 用于字符串和内存例程的默认缓存量导致在基于 Intel® Xeon® v5 的系统上性能低于预期。有了此更新,要使用的缓存量已被调整,以提高性能。
				
系统 GCC 编译器更新至版本 11.4.1
GNU Compiler Collection (GCC) 提供用于使用 C、C++ 和 Fortran 编程语言开发应用程序的工具。
系统 GCC 编译器已更新至版本 11.4.1,其中包括上游 GCC 中提供的大量 bug 修复和增强。
有关使用信息,请参阅 RHEL 9 中开发 C 和 C++ 应用程序。
GCC 现在支持保留寄存器参数
有了此更新,您可以将参数寄存器内容存储到堆栈,并产生合适的 Call Frame Information (CFI),以允许 unwinder 找到它,而不会对性能产生负面影响。
Bugzilla:2168204[1]
64 位 Intel 构架上 GCC 中的一个新的 -mdaz-ftz 选项
					64 位 Intel 架构上的 GNU Compiler Collection (GCC)的系统版本现在支持 -mdaz-ftz 选项,来在 MXCSR 控制和状态寄存器中启用 flush-to-zero (FTZ)和 denormals-are-zero (DAZ)标志。
				
新的 GCC Toolset 13
GCC Toolset 13 是一个编译器工具集,其提供开发工具的最新版本。它以 AppStream 存储库中的 Software Collection 的形式作为 Application Stream 提供。
GCC 编译器已更新至版本 13.1.1,它提供上游 GCC 中提供的很多 bug 修复和增强。
GCC Toolset 13 提供了以下工具和版本:
| 工具 | 版本 | 
|---|---|
|   GCC  |   13.1.1  | 
|   GDB  |   12.1  | 
|   binutils  |   2.40  | 
|   dwz  |   0.14  | 
|   annobin  |   12.20  | 
要安装 GCC Toolset 13,以 root 用户身份运行以下命令:
dnf install gcc-toolset-13
# dnf install gcc-toolset-13
要运行 GCC Toolset 13 中的工具:
scl enable gcc-toolset-13 tool
$ scl enable gcc-toolset-13 tool
要运行一个 shell 会话,其中 GCC Toolset 13 中的工具版本会覆盖这些工具的系统版本:
scl enable gcc-toolset-13 bash
$ scl enable gcc-toolset-13 bash
如需更多信息,请参阅 GCC Toolset 13 和 使用 GCC Toolset。
Bugzilla:2171919[1], Bugzilla:2171930
GCC Toolset 13:GCC rebase 到版本 13.1.1
在 GCC Toolset 13 中,GNU Compiler Collection (GCC)已更新至版本 13.1.1.。主要变更包括:
常规改进
OpenMP:
- OpenMP 5.0: Fortran 现在支持一些非矩形循环嵌套。GCC 11 中添加了对 C/C++ 的此类支持。
 - 添加了许多 OpenMP 5.1 功能。
 - 添加了对 OpenMP 5.2 功能的初始支持。
 
- 
						现在提供了一个新的调试信息压缩选项值 
-gz=zstd。 - 
						
-Ofast、-ffast-math和-funsafe-math-optimizations选项不再添加启动代码,以在使用-shared选项生成一个共享对象时更改浮点环境。 - 
						GCC 现在可以使用 Static Analysis Results Interchange Format (SARIF)发出其诊断,此格式是一种适合捕获静态分析工具(如 GCC 的 
-fanalyzer)结果的基于 JSON 的格式。您还可以使用 SARIF 来捕获机器可读格式的其他 GCC 警告和错误。 - 实现了链接时优化改进。
 
新语言和特定语言的改进
C 系列:
- 
						新的 
-Wxor-used-as-pow选项会警告用户使用专用或(^)运算符时可能指的是求幂。 为记录是文件描述符的
int参数添加了三个新的函数属性:- 
								
attribute((fd_arg(N))) - 
								
attribute((fd_arg_read(N))) - 
								
attribute((fd_arg_write(N))) 
-fanalyzer也使用这些属性来检测文件描述符的滥用。- 
								
 - 
						已为 C++23 可移植假设添加了一个新的语句属性
attribute((assume(EXPR)));。属性在 C 或更早的 C++ 中也被支持。 - 
						GCC 现在可以控制何时将一个结构的尾部数组视为一个灵活的数组成员,以便访问此类数组的元素。默认情况下,聚合中的所有尾部数组都被视为灵活的数组成员。使用新的命令行选项 
-fstrict-flex-arrays控制哪些数组成员被视为灵活的数组。 
C:
实现了几个 C23 功能:
- 
								引入了 
nullptr常量。 - 增强了枚举来指定底层类型。
 - 对可变参数列表的要求已经放宽。
 - 
								引入了 
auto功能,以启用对象定义的类型推断。 - 
								为对象定义引入了 
constexpr指定符。 - 为复合字面引入了存储类指定符。
 - 
								引入了
typeof对象(以前作为扩展支持)和typeof_unqual对象。 - 
								添加了新的关键字:
alignas,alignof,bool,false,static_assert,thread_local和true。 - 
								添加了 
[[noreturn]]属性,以指定函数不向其调用者返回执行。 - 添加了对空初始化器大括号的支持。
 - 
								添加了对 
STDC_VERSION keyring_H标头版本宏的支持。 - 
								删除了 
ATOMIC_VAR_INIT宏。 - 
								为 
<stddef.h>标头添加了unreachable宏。 - 删除了三角图。
 - 删除了非原型函数。
 - 
								通过 
%wN的-Wformat选项和%wfN格式长度修饰符添加了printf和scanf格式检查。 - 添加了对 Unicode Standard Annex (UAX) 31 的标识符语法的支持。
 - 
								C23 中采用的现有功能已被调整以遵循 C23 要求,且没有使用 
-std=c2x -Wpedantic选项进行诊断。 
- 
								引入了 
 - 
						新的 
-Wenum-int-mismatch选项会警告枚举类型和整数类型之间的不匹配。 
C++:
通过
-fexcess-precision选项实现了超精度支持。它默认在严格的标准模式下启用,如-std=c++17,其中其默认为-fexcess-precision=standard。在 GNU 标准模式中,如-std=gnu++20,它默认为-fexcess-precision=fast,其恢复之前的行为。-fexcess-precision选项会影响以下构架:- 
								在某些情况下,在使用 x87 数学的 Intel 32 和 64 位的 Motorola 68000 上,其中 
float和double表达式以long double精度评估。 - 
								64 位 IBM Z 系统,其中
float表达式以double精度评估。 - 
								支持 
std::float16_t或std::bfloat16_t类型的几个架构,其中这些类型以float精度评估。 
- 
								在某些情况下,在使用 x87 数学的 Intel 32 和 64 位的 Motorola 68000 上,其中 
 改进了对 C++23 的实验性支持,包括:
- 添加了对复合语句末尾的标签的支持。
 - 添加了一个类型 trait 来检测绑定到临时对象的引用。
 - 重新引入对易失性复合操作的支持。
 - 
								添加了对 
#warning指令的支持。 - 添加了对分隔的转义序列的支持。
 - 添加了对命名的通用字符转义的支持。
 - 
								为 
char8_t类型添加了兼容性和可移植性修复。 - 
								添加了静态 
operator()函数对象。 - 简化的隐式移动。
 - 现在,在表达式中重写等式不是一个突破性的变化。
 - 删除了不可编码的宽字符量和宽多字符量。
 - 
								放宽了一些 
constexpr函数限制。 - 扩展了浮点类型和标准名称。
 - 实现了可移植假设。
 - 添加了对作为可移植源文件编码标准的 UTF-8 的支持。
 - 
								添加了对静态 
operator[]子脚本的支持。 
新警告:
- 
								当值通过 
std::move移到其自身时,-Wself-move会警告。 - 
								当参考绑定到其生命周期已结束的临时参考时,
-Wdangling-reference会警告。 - 
								
-Wpessimizing-move和-Wredundant-move警告已扩展为在更多上下文中警告。 
- 
								当值通过 
 - 
						新的 
-nostdlib++选项启用与g++的链接,而无需在 C++ 标准库中隐式链接。 
				libstdc++ 运行时库中的更改
			
改进了 C++20 的实验性支持,包括:
- 
								添加了 
<format>标头和std::format函数。 - 
								在 
<chrono>标头中添加了对std::chrono::utc_clock时钟、其他时钟、时区和std::format函数的支持。 
- 
								添加了 
 改进了对 C++23 的实验性支持,包括:
- 
								在 
<ranges>标头中添加了:view::zip,views::zip_transform,views::adjacent,views::adjacent_transform,views::pairwise,views::slide,views::chunk,views::chunk_by,views::repeat,views::chunk_by,views::cartesian_product,views::as_rvalue,views::enumerate,views::as_const。 - 
								在
<algorithm>标头中添加了:ranges::contains,ranges::contains_subrange,ranges::iota,ranges::find_last,ranges::find_last_if,ranges::find_last_if_not,ranges::fold_left,ranges::fold_left_first,ranges::fold_right,ranges::fold_right_last,ranges::fold_left_with_iter,ranges::fold_left_first_with_iter。 - 
								支持 
std::expected类模板的 monadic 操作。 - 
								向 
std::bitset、std::to_chars和std::from_chars函数添加了constexpr修饰符。 - 添加了对扩展的浮点类型的库支持。
 
- 
								在 
 - 
						添加了对 Library Fundamentals Technical Specification (TS)的版本 3 中 
<experimental/scope>标头的支持。 - 
						添加了对 Concurrency TS 的版本 2 中 
<experimental/synchronized_value>标头的支持。 添加了对许多之前在 freestanding 模式下不可用的功能的支持。例如:
- 
								
std::tuple类模板现在可用于独立编译。 - 
								
libstdc++库向 freestanding 子集添加了组件,如std::array和std::string_view。 - 
								
libstdc++库现在使用-ffreestanding编译器选项,因此不再需要构建libstdc++库的一个单独的独立安装。使用-ffreestanding编译将可用的功能限制到独立的子集,即使libstdc++库是作为完整的托管的实现而构建的。 
- 
								
 
新目标和特定于目标的改进
64 位 ARM 架构:
- 
						添加了对 
-march=选项的armv9.1-a、armv9.2-a和armv9.3-a参数的支持。 
32 位和 64 位 AMD 和 Intel 架构:
- 
						对于 C 和 C++,启用了流 SIMD 扩展 2 及更高版本的系统上支持 
__bf16类型。 - 
						真正的 
__bf16类型现在用于AVX512BF16指令的内在特性。在以前的版本中,使用__bfloat16,它是一种 short 的 typedef 。在将 GCC 12 升级到 GCC 13 时,调整您的AVX512BF16相关源代码。 添加了新的指令集架构(ISA)扩展,以支持以下 Intel 指令:
- 
								
AVX-IFMA,其指令内在特性通过-mavxifma编译器开关提供。 - 
								
AVX-VNNI-INT8,其指令内在特性通过-mavxvnniint8编译器开关提供。 - 
								
AVX-NE-CONVERT,其指令内在特性通过-mavxneconvert编译器开关提供。 - 
								
CMPccXADD,其指令内在特性通过-mcmpccxadd编译器开关提供。 - 
								
AMX-FP16,其指令内在特性通过-mamx-fp16编译器开关提供。 - 
								
PREFETCHI,其指令内在特性通过-mprefetchi编译器开关提供。 - 
								
RAO-INT,其指令内在特性通过-mraoint编译器开关提供。 - 
								
AMX-COMPLEX,其指令内在特性通过-mamx-complex编译器开关提供。 
- 
								
 - 
						GCC 现在通过 
-march=znver4编译器开关,支持基于znver4核的 AMD CPU。开关在自动向量化时考虑使用 512 位向量。 
对静态分析器的改进
静态分析器已得到 20 个新警告:
- 
								
-Wanalyzer-allocation-size - 
								
-Wanalyzer-deref-before-check - 
								
-Wanalyzer-exposure-through-uninit-copy - 
								
-Wanalyzer-imprecise-fp-arithmetic - 
								
-Wanalyzer-infinite-recursion - 
								
-Wanalyzer-jump-through-null - 
								
-Wanalyzer-out-of-bounds - 
								
-Wanalyzer-putenv-of-auto-var - 
								
-Wanalyzer-tainted-assertion 与文件描述符滥用相关的 7 个新警告:
- 
										
-Wanalyzer-fd-access-mode-mismatch - 
										
-Wanalyzer-fd-double-close - 
										
-Wanalyzer-fd-leak - 
										
-Wanalyzer-fd-phase-mismatch(例如,在对套接字调用listen前,对套接字调用accept) - 
										
-Wanalyzer-fd-type-mismatch(例如,对数据报套接字使用流套接字操作) - 
										
-Wanalyzer-fd-use-after-close -Wanalyzer-fd-use-without-check- 
												另外,还实现对 
open、close、creat、dup、dup2、dup3、pipe、pipe2、read、和write函数的行为的特殊处理。 
- 
												另外,还实现对 
 
- 
										
 对滥用
<stdarg.h>标头的四个新警告:- 
										
-Wanalyzer-va-list-leak警告在va_start或va_copy宏之后缺少va_end宏。 - 
										
-Wanalyzer-va-list-use-after-va-end警告在已对其调用了va_end宏的va_list对象类型上使用了va_arg或va_copy宏。 - 
										
-Wanalyzer-va-arg-type-mismatch类型检查针对实际传递 variadic 调用的参数类型的过程间执行路径中的va_arg宏的使用情况。 - 
										
-Wanalyzer-va-list-exhausted警告va_arg宏是否在过程间执行路径中对va_list对象类型使用了太多次。 
- 
										
 
- 
								
 - 很多其他改进。
 
后向不兼容更改
				对于 C++,全局 iostream 对象(如 std::cout, std::cin)的构建现在在标准库中完成,而不是在包含 <iostream> 标头的每个源文件中完成。这个更改提高了 C++ 程序的启动性能,但这意味着如果在运行时没有使用正确的 libstdc++.so 版本,则使用 GCC 13.1 编译的代码将崩溃。请参阅有关在运行时使用正确的 libstdc++.so 的 文档。将来的 GCC 版本会缓解这个问题,以便程序根本不能使用早期不兼容的 libstdc++.so 运行。
			
Bugzilla:2172093[1]
GCC Toolset 13: annobin rebase 到版本 12.20
					GCC Toolset 13 提供了 annobin 软件包版本 12.20。主要改进包括:
				
- 
						添加了对将 
annobin备注移到单独的调试信息文件中的支持。这导致减小了可执行二进制文件的大小。 - 添加了对新的较小的备注格式的支持,减少了单独 debuginfo 文件的大小以及创建这些文件所需的时间。
 
Bugzilla:2171923[1]
GCC Toolset 13:GDB rebase 到版本 12.1
GCC Toolset 13 提供 GDB 版本 12.1。
重要的程序错误修复和增强包括:
- 
						GDB 现在默认设置源代码和反汇编器的样式。如果样式干扰了 GDB 的自动化或脚本,您可以使用 
maint set gnu-source-highlight enabled off和maint set style disassembler enabled off命令禁用它。 - 
						GDB 现在每当遇到内部错误时都会显示回溯追踪。如果这会影响脚本或自动化,您可以使用 
maint set backtrace-on-fatal-signal off命令禁用此功能。 
C/C++ 改进:
- GDB 现在像对待功能过载一样对待涉及 C++ 模板的功能或类型。您可以省略参数列表,以在模板功能系列上设置断点,包括类型或由多个模板类型组成的功能。Tab 补全已得到类似的改进。
 
终端用户界面(TUI):
tui layouttui focustui refreshtui window height
是旧layout,focus,refresh和winheightTUI 命令的新名称。旧名称仍作为这些新命令的别名存在。tui window widthwinwidth使用新的
tui window width命令或winwidth别名,来在窗口在水平模式中布局时调整 TUI 窗口的宽度。info win这个命令现在在其输出中包含有关 TUI 窗口宽度的信息。
机器接口(MI)更改:
- MI 解释器的默认版本现在是 4 (-i=mi4)。
 - 
						没有标志的 
-add-inferior命令现在继承当前下级的连接。这会恢复 GDB 版本 10 之前的行为。 - 
						
-add-inferior命令现在接受一个--no-connection标志,这导致新的下级在没有连接的情况下启动。 断点输出中的
script字段(其在 MI 3 及更早版本中的语法不正确)已在 MI 4 中成为一个列表。这会影响以下命令和事件:- 
								
-break-insert - 
								
-break-info - 
								
=breakpoint-created =breakpoint-modified使用
-fix-breakpoint-script-output命令启用使用早期 MI 版本的新行为。
- 
								
 
新命令:
maint set internal-error backtrace [on|off]maint show internal-error backtracemaint set internal-warning backtrace [on|off]maint show internal-warning backtraceGDB 现在在遇到内部错误或内部警告时打印其自身的回溯追踪。对于内部错误,这默认是启用的,对于内部警告,默认禁用。
exit除了现有的
quit命令外,您还可以使用新的exit命令退出 GDB。maint set gnu-source-highlight enabled [on|off]maint show gnu-source-highlight enabled
启用或禁用 GNU Source Highlight 库来向源代码添加样式。禁用时,即使库可用,也不会使用它。当 GNU Source Highlight 库没有使用时,使用 Python Pygments 库。set suppress-cli-notifications [on|off]show suppress-cli-notifications控制是否禁止为 CLI 打印通知。当您更改所选上下文(如当前的下级、线程或帧)或正在调试的程序停止时(例如:由于遇到断点、完成源步进或中断)时,会发生 CLI 通知。
set style disassembler enabled [on|off]show style disassembler enabled启用后,如果 GDB 是使用支持的 Python 编译的,且有 Python Pygments 软件包可用,则命令会向反编译器输出应用样式。
更改的命令:
set logging [on|off]弃用,并被
set logging enabled [on|off]命令替换。print使用基数修改格式(如
/x)打印浮点值,已改为以所需基数显示底层值的字节。clone-inferiorclone-inferior命令现在确保TTY、CMD和ARGs设置从原始下级复制到新的下级。所有使用set environment或unset environment命令对环境变量的修改也会被复制到新的下级中。
Python API:
- 
						新的 
gdb.add_history()函数接受一个gdb.Value对象,并将其代表的值添加到 GDB 的历史记录列表中。函数返回一个整数,这是历史记录列表中新项目的索引。 - 
						新的 
gdb.history_count()函数返回 GDB 值历史记录中的值数。 - 
						新的 
gdb.events.gdb_exiting事件通过gdb.GdbExitingEvent对象调用,该对象具有包含 GDB 退出码值的只读属性exit_code。这个事件会在 GDB 突出前触发,然后 GDB 开始清理其内部状态。 - 
						新的 
gdb.architecture_names()函数返回一个包含所有可能的Architecture.name()值的列表。每个条目都是一个字符串。 - 
						新的 
gdb.Architecture.integer_type()函数返回一个给定大小和符号的整数类型。 - 
						新的 
gdb.TargetConnection对象类型表示一个连接(如info connections命令显示的那样)。子类gdb.RemoteTargetConnection表示remote和extended-remote连接。 - 
						
gdb.Inferior类型现在有一个connection属性,它是gdb.TargetConnection对象的一个实例,连接被这个下级使用。如果下级没有连接,则这可以是None。 - 
						当从 GDB 中删除连接时,新的 
gdb.events.connection_removed事件注册中心会发出一个gdb.ConnectionEvent事件。此事件有一个connection属性,一个用于要删除的连接的gdb.TargetConnection对象。 - 
						新的 
gdb.connections()函数返回所有当前活跃连接的列表。 - 
						新的 
gdb.RemoteTargetConnection.send_packet (PACKET)方法等同于现有的maint packetCLI 命令。您可以使用它来向远程目标发送指定的数据包。 - 
						新的 
gdb.host_charset()函数返回作为字符串的当前主机字符集的名称。 - 
						新的 
gdb.set_parameter (NAME,VALUE)函数将 GDB 参数NAME设置为VALUE。 - 
						新的 
gdb.with_parameter (NAME,VALUE)函数返回一个上下文管理器,该管理器临时将 GDB 参数NAME设置为VALUE,然后在上下文退出时重置它。 - 
						
gdb.Value.format_string方法现在接受一个styling参数,该参数是一个布尔值。当为true时,返回的字符串可以包含转义序列以应用样式。只有在 GDB 上打开样式时,才会显示样式(请参阅帮助设置样式)。当未指定styling参数时,其为默认值false,则不会将样式应用到返回的字符串。 - 
						新的只读属性 
gdb.InferiorThread.details是一个包含额外的特定于目标的线程信息的字符串,或者如果没有这样的附加信息,则为None。 - 
						新的只读属性 
gdb.Type.is_scalar对于 scalar 类型为True,对所有其他类型为False。 - 
						新的只读属性 
gdb.Type.is_signed仅在Type.is_scalar为True时可读,对于有符号类型将为True,对于所有其他类型将为False。尝试读取 non-scalar 类型的此属性将引发一个ValueError。 - 现在,您可以添加在 Python 中添加 GDB 和实施的 MI 命令。
 
如需更多信息,请参阅上游发行注记:
Bugzilla:2172096[1]
GCC Toolset 13:bintuils rebase 到版本 2.40
					GCC Toolset 13 提供 binutils 软件包版本 2.40。主要改进包括:
				
链接器:
- 
						链接器的新的 
-w(--no-warnings)命令行选项压制任何警告或错误消息 产生。如果您需要创建一个已知无法正常工作的二进制文件,则这非常有用。 现在,ELF 链接器会产生一条警告信息,如果:
- 堆栈为可执行的
 - 
								它创建一个内存驻留段,设置了所有三个 
Read、Write和eXecute权限集 它创建一个具有
eXecute权限集的线程本地数据段。您可以使用
--no-warn-exec-stack或--no-warn-rwx-segments选项禁用这些警告。
- 链接器现在可以将任意 JSON 格式的元数据插入到它创建的二进制文件中。
 
其他工具:
- 
						新的 
objdump工具的--private选项,用于显示文件标头中的字段,以及 Portable Executable (PE)格式的部分标头。 - 
						
objcopy和strip工具的新的--strip-section-headers命令行选项,来从 ELF 文件中删除 ELF 部分标头。 - 
						
objdump工具的新的--show-all-symbols命令行选项,以显示反汇编时与给定地址匹配的所有符号,而不是仅显示与地址匹配的第一个符号的默认功能。 - 
						
nm工具的新的-W(--weak)选项,以使其忽略弱符号。 objdump工具现在支持对某些架构的反汇编输出的语法高亮显示。使用--disassembler-color=MODE命令行选项,MODE 是以下之一:- 
								
off - 
								
color- 所有终端模拟器都支持这个选项。 - 
								
extended-color- 这个选项使用所有终端模拟器都不支持的 8 位颜色。 
- 
								
 
Bugzilla:2171926[1]
libabigail rebase 到版本 2.3
					libabigail 软件包已更新至版本 2.3。主要改进包括:
				
- 现在支持 BTF debuginfo 格式。
 - 改进了对 Ada 范围类型的支持。
 - 
						现在支持压制规范中新的 
[allow_type]指令。 - 
						为 
[supress_type]压制规范添加了各种新属性。 - ABIXML 文件格式已更新至版本 2.2。
 - 库的 SONAME 已更改,以反映自己的 ABI 变化。
 
				libabigail 软件包在 CodeReady Linux Builder (CRB)存储库中提供。请注意,不支持 CodeReady Linux Builder 存储库中包含的软件包。
			
debugedit 中的 find-debuginfo 脚本现在支持 -q (--quiet)标记
					有了此更新,您可以使用 debugedit 工具中的 find-debuginfo 脚本的 -q (--quiet)标记来屏蔽脚本中的非错误输出。
				
Valgrind rebase 到版本 3.21.0
Valgrind 已更新至版本 3.21.0。主要改进包括:
- 
						
--vgdb-stop-at=event1,event2,…选项的新abexit值在程序异常退出时(如具有非零退出码)通知gdbserver工具。 新的
--enable-debuginfod=[yes|no]选项指示 Valgrind 使用DEBUGINFOD_URLS环境变量中列出的debuginfod服务器来获取在 Valgrind 下运行的程序缺少的 DWARF debuginfo 信息。此选项的默认值为yes。注意默认不设置
DEBUGINFOD_URLS环境变量。- Valgrind 现在提供 GDB Python 命令。这些 GDB 前端命令在 GDB 命令行界面中提供更好的集成。这样做的好处是,例如 GDB 自动完成功能,以及特定于命令的帮助,搜索与正则表达式匹配的命令或命令帮助。对于相关的监控命令,GDB 会评估参数以简化监控命令的使用。
 - 
						使用 
--multi选项调用时,vgdb工具现在支持扩展的远程协议。此模式下支持 GDBrun命令,因此您可以从单个终端运行 GDB 和 Valgrind。 - 
						对于截获 
malloc()调用的工具,您可以使用--realloc-zero-bytes-frees=[yes|no]选项更改realloc()函数的行为。 - 
						
memcheck工具现在对大小为零的realloc ()函数的使用情况进行检查。使用新的--show-realloc-size-zero=[yes|no]开关来禁用此功能。 - 
						您可以对 
helgrind工具使用新的--history-backtrace-size=value选项,来配置要在早期访问的堆栈跟踪中记录的条目的数量。 - 
						
--cache-sim=[yes|no]cachegrind选项现在默认为no,因此默认只收集指令缓存读事件。 - 
						
cg_annotate、cg_diff和cg_mergecachegrind工具的源代码已被重写,因此工具具有更灵活的命令行选项处理。例如,它们现在支持--show-percs和--no-show-percs选项以及现有的--show-percs=yes和--show-percs=no选项。 - 
						
cg_annotatecachegrind工具现在支持区分(使用--diff、--mod-filename和--mod-funcname选项)和合并(通过传递多个数据文件)。另外,cg_annotate现在在文件和函数级别提供更多信息。 - 
						
DHAT工具的新的用户请求允许您覆盖对内存块的访问数直方图的 1024 字节限制。 
现在支持以下特定于架构的指令集:
64 位 ARM:
- v8.2 scalar 和 vector Floating-point Absolute Difference (FABD), Floating-point Absolute Compare Greater than or Equal (FACGE), Floating-point Absolute Compare Greater Than (FACGT)和 Floating-point Add (FADD)指令。
 - v8.2 浮点(FP)比较和条件比较指令。
 - v8.2 浮点(FP)的零变体比较指令。
 
64-位 IBM Z:
- 
								支持各种 
miscellaneous-instruction-extensions facility 3和vector-enhancements facility 2。这使用-march=arch13或-march=z15选项编译的程序能够在 Valgrind 下执行。 
- 
								支持各种 
 IBM Power:
- ISA 3.1 支持现已完成。
 - ISA 3.0 现在支持交付一个随机数字(darn)指令。
 - ISA 3.0 现在支持 System Call Vectored(scv)指令。
 - ISA 3.0 现在支持复制、粘贴和 cpabort 指令。
 
SystemTap rebase 到版本 4.9
					systemtap 软件包已升级到版本 4.9。主要变更包括:
				
- 
						新的 Language-Server-Protocol (LSP)后端,用于在支持 LSP 的编辑器上更轻松地交互式起草 
systemtap脚本。 - 访问 Python/Jupyter 交互笔记本前端。
 - 改进了 DWARF 5 位字段的处理。
 
elfutils rebase 到版本 0.189
					elfutils 软件包已更新至版本 0.189。主要改进和 bug 修复包括:
				
libelf- 
							
elf_compress工具现在支持ELFCOMPRESS_ZSTDELF 压缩类型。 libdwfl- 
							
dwfl_module_return_value_location函数现在为指向DW_TAG_unspecified_type类型标签的 DWARF Information Entries (DIEs) 返回 0(无返回类型)。 eu-elfcompress- 
							
-t和--type=选项现在通过zstd参数支持 Zstandard (zstd)压缩格式。 
libpfm rebase 到版本 4.13
					libpfm 软件包已更新至版本 4.13。有了此更新,libpfm 可以访问以下处理器微架构的性能监控硬件原生事件:
				
- AMD Zen 2
 - AMD Zen 3
 - AMD Zen 4
 - ARM Neoverse N1
 - ARM Neoverse N2
 - ARM Neoverse V1
 - ARM Neoverse V2
 - IBM z16
 - 第四代 Intel® Xeon® 可扩展处理器
 
Bugzilla:2185652, Bugzilla:2047720, Bugzilla:2111940, Bugzilla:2111924, Bugzilla:2111930, Bugzilla:2111933, Bugzilla:2111957, Bugzilla:2111946
papi 支持新的处理器微架构
					有了此增强,您可以使用以下处理器微架构上存在的 papi 事件访问性能监控硬件:
				
- AMD Zen 2
 - AMD Zen 3
 - ARM Neoverse N1
 - ARM Neoverse N2
 - ARM Neoverse V1
 - ARM Neoverse V2
 
Bugzilla:2111923[1], Bugzilla:2111947, Bugzilla:2111942
papi 现在支持 64 位 ARM 处理器的快速性能事件数读取操作
					在以前的版本中,在 64 位 ARM 处理器上,所有性能事件计数器读取操作都需要使用资源密集型系统调用。已为 64 位 ARM 更新了 papi,以便让使用性能计数器监控其自身的进程使用更快的性能事件计数器的用户空间读取。将 /proc/sys/kernel/perf_user_access 参数设置为 1 ,来将 papi 读取 2个计数器的平均时钟周期数从 724 个周期减少到 29 个周期。
				
Bugzilla:2186927[1]
LLVM Toolset rebase 到版本 16.0.6
LLVM Toolset 已更新至版本 16.0.6。
主要改进包括:
- 对优化的改进
 - 对新的 CPU 扩展的支持
 - 改进了对新 C++ 版本的支持。
 
主要的向后不兼容的更改包括:
- 
						clang 的默认 C++ 标准现在是 
gnu++17而不是gnu++14。 - 
						
-Wimplicit-function-declaration,-Wimplicit-int和-Wincompatible-function-pointer-types选项现在默认为 C 代码的错误。这可能会影响配置脚本的行为。 
				默认情况下,Clang 16 使用 GCC Toolset 13 提供的 libstdc++ 库版本 13 和 binutils 2.40 。
			
如需更多信息,请参阅 LLVM 发行注记 和 Clang 发行注记。
Rust Toolset rebase 到版本 1.71.1
Rust Toolset 已更新至版本 1.71.1。主要变更包括:
- 多个生成者(mpsc),单个消费者渠道的新实现,以提高性能
 - 
						新的 Cargo 
稀疏索引协议,来更有效地使用crates.io注册中心 - 
						用于一次性值初始化的新的 
OnceCell和OnceLock类型 - 
						新的 
C-unwindABI 字符串,以启用跨 Foreign Function Interface (FFI)边界的强制展开的使用 
如需了解更多详细信息,请参阅上游版本公告系列:
Rust profiler_builtins 运行时组件现在可用
					有了此增强,Rust profile_builtins 运行时组件现在可用。此运行时组件启用了以下编译器选项:
				
-C instrument-coverage- 启用了覆盖率分析
 -C profile-generate- 启用了配置文件引导的优化
 
Bugzilla:2227082[1]
Go Toolset rebase 到版本 1.20.10
Go Toolset 已更新到版本 1.20.10。
主要改进包括:
- 
						在 
unsafe软件包中添加了新功能,以处理片段和字符串,而不依赖于内部表示。 - 可比较类型现在可以满足可比较约束。
 - 
						新的 
crypto/ecdh软件包。 - 
						
go build和go test命令不再接受-i标志。 - 
						
go generate和go test命令现在接受-skip pattern选项。 - 
						
go build、go install和其它与构建相关的命令现在支持-pgo和-cover标志。 - 
						
go命令现在在没有 C 工具链的系统上默认禁用cgo。 - 
						
go version -m命令现在支持读取更多的 Go 二进制文件类型。 - 
						
go命令现在在没有 C 工具链的系统上默认禁用cgo。 - 添加了对从应用程序和集成测试收集代码覆盖配置文件的支持,而不是仅从单元测试收集它们。
 
Bugzilla:2185259[1]
pcp rebase 到版本 6.0.5
					pcp 软件包已更新至版本 6.0.5。主要变更包括:
				
收集器工具功能
pmdaproc:- 添加了对最近内核中每个 cgroup IRQ PSI 指标的支持
 - 
								添加了一个新的 
proc.smaps.pss_dirty指标 
- 
						
pmdasmart:添加了 NVME 磁盘信息和电源状态指标 pmdalinux:- 添加了对最近内核中系统范围 IRQ PSI 指标的支持
 - 添加了 NUMA 外部内存碎片指标
 - 添加了新的网络(TCP、ICMP)指标
 
- 
						
pmdaoverhead:一个测量进程组开销的新的 PMDA - 
						
pmdahacluster: 已更新,来处理 Pacemaker 2.1.5crm_mon输出更改 
监控工具功能
pmieconf:- 添加了对 webhook 操作(事件驱动的 Ansible)的支持
 - 
								添加了一个新的检查文件描述符限制的 
pmie规则 
- 
						
pcp2json: 带有一个选项的扩展的pcp2json,以发送 HTTP POSTs - 
						
pcp-atop: 添加了cgroup、NUMA 内存和 NUMA CPU 支持 - 
						
pcp-htop: 添加了对新打开的文件描述符 Meter 的支持 - 
						
pcp-ps: 添加了显示多个归档示例的能力 
PCP 的 pmie 工具现在支持生成 webhook 事件
					Performance Co-Pilot (PCP)中的性能指标推理引擎(pmie)工具现在支持生成 webhook 事件。有了此更新,配置的 pmie 规则生成可由 Event-Driven Ansible (EDA)消费的格式的事件。因此,EDA 可以响应 PCP 规则。
				
				要启用此功能,请配置所有本地 pmie 规则,以便在给定的端点(URL)发送到 webhook:
			
pmieconf modify global webhook_endpoint https://localhost:443/<endpoint> pmieconf modify global webhook_action yes
# pmieconf modify global webhook_endpoint https://localhost:443/<endpoint>
# pmieconf modify global webhook_action yes
grafana rebase 到版本 9.2.10
					grafana 软件包已更新至版本 9.2.10。主要变更包括:
				
- 现在在整个 Grafana 中使用 heatmap 面板。
 - Geomaps 现在可测量距离和区域。
 - Alertmanager 现在基于 Prometheus Alertmanager 版本 0.24。
 - 
						Grafana 警告规则现在在执行错误或超时时默认返回一个 
Error状态。 - 表达式现在可以用于公共仪表盘。
 - 加入转换现在支持内联。
 - 公共仪表盘现在允许共享 Grafana 仪表盘。
 - 新的 Prometheus streaming 解析器现在作为一个可选功能提供。
 
如需更多信息,请参阅上游发行注记:
Grafana 不再启用弱加密密码
有了此更新,对于加密安全通信,Grafana 不再启用被视为弱的密码。受影响的密码有:
- 
						
AES128-GCM-SHA256 - 
						
AES128-SHA - 
						
AECDHE-RSA-AES128-SHA - 
						
AES256-GCM-SHA384 - 
						
AES256-SHA - 
						
ECDHE-RSA-AES256-SHA 
Bugzilla:2190025[1]
.NET 8.0 可用
Red Hat Enterprise Linux 9.3 与 .NET 版本 8.0 一起分发。主要改进包括:
- 添加了对 C#12 和 F#8 语言版本的支持。
 - 添加了对直接使用 .NET 软件开发套件构建容器镜像的支持。
 - 许多对垃圾收集器(GC)、Just-In-Time (JIT)编译器和基本库的性能改进。
 
Jira:RHELPLAN-164399[1]