A.2. binutils 的更改
Red Hat Developer Toolset 11.0 与 binutils 2.36 一起发布。
自以前的 Red Hat Developer Toolset 发行版本以来,添加了或修改了以下功能:
assembler
- 在 Intel 构架中,支持 AMX、AVX VNI、HRESET、key Locker、TDX 和 UINTR 指令。
- 当设置 ELF 部分的 link order 属性时,您可以使用数字部分索引而不是符号名称。
- 以下 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
标志。
linker
-
添加了一个新的
libdep
插件。它记录链接静态库中的依赖项,并在执行最终链接时使用它们。 -
添加了一个新的
--error-handling-script=<NAME
> 命令行选项。当遇到未定义符号或缺少库时,它会运行一个帮助程序脚本。 -
现在,链接器会在
.ctf
部分中分离类型。您可以使用新的--ctf-share-types
命令行选项来指定链接者如何进行此操作。这个选项的默认值是 shared-unconflicted
,生成最紧凑的输出。 -
默认情况下,linker 省略
.ctf
部分中的变量部分,节省空间。对于自己模拟符号表的项目来说,这种行为可能不相同,它们没有反映在 ELF 符号表中。 -
支持
SHF_GNU_RETAIN ELF
部分标记。此标志指定部分不应被 linker 收集的垃圾回收。
其他二进制工具
-
nm
: 添加了一个新的命令行选项--ifunc-chars=CHARS
,用于指定一个或两个字符的字符串。显示全局ifunc
符号时,第一个字符用作类型字符。如果显示本地ifunc
符号,则使用第二个字符。 -
ar
:之前未使用的l
修饰符可用于指定静态库的依赖项。此l
选项的参数(或其较长的格式为--record-libdeps
)保存在存档的__.LIBDEP
成员中,其链接者可以在链接时读取。 -
readelf
: 使用--lto-syms
命令行选项,可以显示 LTO 符号表部分的内容。 -
readelf
接受-C
命令行选项,该选项启用符号名称。另外,增加了--demangle=<style
>、--no-demangle
、--recurse-limit
和--no-recurse-limit
选项。 为了缓解 CVE-2021-42574,在 binutils 中添加了一个新命令行选项,其中包含 RHSA-2021:4730 公告。
显示名称或字符串(readelf、String、nn 和 objdump)的工具现在有一个新的
--unicode
(-U
)命令行选项,用于控制 Unicode 字符的处理方式。可以为选项设置以下值:-
--Unicode=default
可正常对待 BiDi 字符。当--unicode
选项没有被使用时,这是默认的 behaviour。 -
--Unicode=locale
会根据当前的区域设置显示 BiDi 字符。 -
--Unicode=hex
显示为十六进制值。 -
--Unicode=escape
将 BiDi 字符显示为 Unicode 转义序列。 -
--Unicode=highlight
会显示 BiDi 字符,如果输出设备支持,则 Unicode 转义序列以红色突出显示。
-