A.3. binutils 中的更改
Red Hat Developer Toolset 9.0 带有 binutils 2.32。
从以前的 Red Hat Developer Toolset 版本开始添加了或修改了以下功能:
Assembler
-
添加了一个新的命令行选项
:--generate-missing-build-notes=yes。如果输入源不包含此类备注,它将创建 GNU Build Attribute 注释。 特定于 AMD64 和 Intel 64 构架:
-
assembler 现在有一个 a
-mvexwig=[0|1]选项来控制 VEX.W-ignored (WIG) VEX 指令的编码。 -
如果生成了 GNU 属性说明,可以使用 new
-mx86-used-note=[yes|no]选项进行选择。这些备注基于输入 assembler。 -
new
-O[2|s]命令行选项启用备用的、较短的指令编码。
-
assembler 现在有一个 a
BFD 链接器
链接器的默认行为是创建单独的代码和数据片段。这使得二进制文件变得更大,但更安全,因为加载程序可以关闭对代码段的写权限。
-
使用命令行选项
-z noseparate-code来禁用此行为。链接器将像以前一样创建一个网段。
-
使用命令行选项
-
使用
-Map命令行选项创建的链接器映射文件现在包含合并 GNU 属性备注时发生的属性更改的详细信息。 --trace选项不再报告存档中的成员。这使得 选项在生成应打包为链接程序错误报告的文件列表时很有用。- 要报告存档中的成员,请给选项两次。
GOLD 链接器
- 改进了引用丢弃部分的重新定位的警告信息。
-
new-
debug=plugin选项可以更轻松地调试与插件相关的问题。 -
new
-z keep_text_section_prefix选项提供与 BFD 链接器的兼容性。 - 改进了对 64 位 ARM 架构的支持。
-
现在支持 Linux ABI 扩展的
.note.gnu.property部分。 - 现在支持 Intel Indirect Branch Tracking (IBT)和 Shadow Stack (AMD64 和 Intel 64 )。
其他二进制工具
-
addr2line,c++filt,nm, 和objdump工具现在对在取消字符串时允许的最大递归量有限制。这个限制的值由 DEMANGLE_RECURSE_LIMIT 常数定义。此常量在作为 Red Hat Developer Toolset 9.0 的一部分提供的 binutils 中的 2048 值。 -
--no-recurse-limit选项可用于删除上述限制。它恢复这些工具的早期版本行为。这个选项允许忽略非常复杂的名称,但它也使工具容易被恶意构建的名称中的堆栈耗尽。 -
ar归档管理器现在支持O修饰符来显示存档中的成员偏移。 -
objdump :--disassemble选项现在使用一个参数,指定 disassembly 的起始符号。Disassembly 将从此符号(直到下一个符号或功能的末尾)继续。 -
64 位 ARM 处理器的不汇编器现在可以显示注释,当系统发现与可能导致无效指令的指令的不一致时所创建的注释。这些备注可以通过对
objdump的"-M 备注"选项打开。当指令和命名寄存器的组合无效时,不汇编器也会创建警告。