A.2. binutils 中的更改
Red Hat Developer Toolset 11.0 与 binutils 2.36 一起分发。
从以前的 Red Hat Developer Toolset 版本开始添加了或修改了以下功能:
assembler
- 在 Intel 构架上,支持 AMX、AVX VNNI、HRESET、KeySTOREr、TDX 和 UINTR 指令。
- 当设置 ELF 部分的链接顺序属性时,您可以使用数字部分索引而不是符号名称。
- 支持以下 ARM 内核: Cortex-A78、Cortex-A78AE、Cortex-A78C、Cortex-X1、Cortex-R82、Neoverse V1 和 Neoverse N2。
- 在 64 位 ARM 架构中,支持 Armv8-R 和 Armv8.7-A ISA 扩展。
-
添加了
.nop指令,它生成单个 no-operation 指令,它将在任何目标上工作。 -
支持
SHF_GNU_RETAIN标志。它指定该部分不应由链接器收集。这个标志可以使用.section指令中的R标志应用到部分。
链接器
-
添加了一个新的
libdep插件。它记录了链接静态库中的依赖关系,并在执行最终链接时使用它们。 -
添加了一个 new
-error-handling-script=<NAME> 命令行选项。当遇到未定义符号或缺失的库时,它会运行帮助程序脚本。 -
现在,链接器会去除
.ctf部分中的类型。您可以使用 new--ctf-share-types命令行选项来指定链接器如何进行此操作。此选项的默认值(共享为unconflicted)会生成最紧凑的输出。 -
默认情况下,linker 省略
.ctf部分中的 variable 部分,可节省空间。对于拥有自己的符号表的模拟的项目来说,此行为可能不适合,它们不会在 ELF 符号表中反映。 -
支持
SHF_GNU_RETAIN ELF部分。此标志指定该部分不应由链接器收集。
其他二进制工具
-
nm: 添加了一个新的命令行选项-ifunc-chars=CHARS,它指定了一个或多个字符的字符串。在显示全局ifunc符号时,第一个字符用作类型字符。显示本地ifunc符号时使用第二个字符(如果存在)。 -
ar:之前未使用的lmodifier 可以用来指定静态库的依赖项。此l选项(或其较长的 form--record-libdeps)的参数存储在存档的__.LIBDEP成员中,链接器可以在链接时读取。 -
readelf: 使用-lto-syms命令行选项,可以显示 LTO 符号表部分的内容。 -
readelf接受-C命令行选项,该选项可启用符号名解。另外,添加了-demangle=<style>,--no-demangle,--recurse选项。-limit, 和--no-recurse-limit 为缓解 CVE-2021-42574,使用 RHSA-2021:4730 公告的发行版本向 binutils 添加了一个新的命令行选项。
显示名称或字符串的工具(readelf、字符串、nm、和 objdump)
现在有一个新的-unicode(-U)命令行选项,用于控制 Unicode 字符的处理方式。可以为选项设置以下值:-
--Unicode=default将 BiDi 字符视为正常的工具。当不使用--unicode 选项时,这是默认行为。 -
--Unicode=locale 根据当前的区域设置显示 BiDi 字符。 -
--Unicode=hex将 BiDi 字符显示为十六进制字节值。 -
--Unicode=escape显示 BiDi 字符作为 Unicode 转义序列。 -
--Unicode=highlight显示 BiDi 字符,如果输出设备支持,则以红色突出显示的 Unicode 转义序列。
-