由 LLVM lld 开发的 Mold 1.1 链接器发布

Mold 链接器的一个版本已经发布,它可以用作 Linux 系统上 GNU 链接器的更快、透明的替代品。 该项目由 LLVM lld 链接器的作者开发。 Mold 的一个关键特性是链接目标文件的速度非常快,明显领先于 GNU gold 和 LLVM lld 链接器(Mold 中的链接执行速度仅为使用 cp 实用程序复制文件的速度的一半)。 该代码是用 C++ (C++20) 编写的,并根据 AGPLv3 许可证分发。

在新版本中:

  • 添加了对链接阶段优化的支持(LTO,链接时间优化)。 LTO 优化的不同之处在于考虑了构建过程中涉及的所有文件的状态,而传统优化模式分别优化每个文件,并且不考虑调用其他文件中定义的函数的条件。 以前,当找到 GCC 或 LLVM 中间代码 (IR) 文件时,会调用相应的 ld.bfd 或 ld.lld 链接器,现在 Mold 独立处理 IR 文件并使用链接器插件 API,该 API 也用于 GNU ld 和 GNU黄金接头。 启用后,LTO 仅比其他链接器快一点,因为大部分时间都花在执行代码优化而不是链接上。
  • 添加了对主机和目标平台上的 RISC-V (RV64) 架构的支持。
  • 添加了“--emit-relocs”选项,以允许将重定位部分从输入文件复制到输出文件,以便在链接后阶段进行后续应用优化。
  • 添加了“--shuffle-sections”选项,以在虚拟地址空间中固定其地址之前随机化节的顺序。
  • 添加选项“--print-dependency”和“--print-dependency=full”以CSV格式输出有关输入文件之间依赖关系的信息,例如,可用于分析链接某些目标文件时连接的原因或者在文件之间执行缩小工作依赖关系时。
  • 添加了“--warn-once”和“--warn-textrel”选项。
  • 删除了对 libxxhash 的依赖。

来源: opennet.ru

添加评论