Mold 1.0.1 发布,高速现代 Unix 链接器
Mold 是现有 Unix 链接器的快速替代品,它比 LLVM lld 链接器快几倍。
目前 Mold 发布了最新版本 1.0.1 ,此版本带来以下新功能和各种错误修复:
新功能
make install现在创建/usr/local/libexec/mold/ld,作为mold可执行文件的符号链接。现在也为 GCC 执行此操作,通过传递-B/usr/local/libexec/mold,可以告诉 GCCld在该目录中使用,而不是/usr/bin/ld. ( e8dcecf )- xxHash 库现在作为子树包含在模具的源树中,以便于构建。如果要链接到系统库目录中的 libxxhash,请传递
SYSTEM_XXHASH=1到make. ( 665bffa ) extern "C++"指令现在在动态列表中受支持。( 7aa5c39 )- 过去在 Mold 中受忽略的标志
--color-diagnostics,现已得到支持。( 6e290aa ) - 除了
*,现在?也被视为版本脚本(version script)通配符模式中的特殊字符。( 31b0248 ) --threads=N选项已添加为--thread-count=N. ( f9ff048 )- 已添加下列选项:
--defsym(f6e8006),-z nodefaultlib(8c86c28)-z separate-code,-z noseparate-code和-z separate-lodable-segments(5601cf4),-z max-page-size(f3766cd)
bug 修复
- 现在对未知
-z选项发出警告而不是错误。( 8bc5736 ) - 之前为非 SHF_ALLOC 注释段创建了一个 PT_NOTE 段。这是一个错误的行为,应该只为内存分配的部分创建段。这个问题已经解决。( 76407a6 )
- 之前当未定义符号升级为动态符号时,版本脚本会影响它们的符号可见性,这是语义上不正确的行为,且会导致 libQt 构建失败(#151)。目前问题已修复。( 3663389 )
- 从 1.0.1 开始, Mold 的行为与 GNU ld 相同。( 04ccd4d )
- 以前,模具针对 Initial-Exec 线程局部变量应用了错误的重定位值。这导致 Mesa 3D 图形库 ( #197 )的链接失败。问题已解决。( d116113 )
- GCC 7 有一个错误,它在特定条件下针对线程局部变量发出不正确的重定位,为了与 GCC 7 的错误兼容性,mold 不会将其报告为错误。( d9606d6 )
- 如果输出文件包含多个线程局部 BSS 部分,则它们的布局会相互重叠。此错误导致使用 DMD 编译的程序出现运行时错误,DMD 是 D 语言的编译器 ( #126 )。此布局问题已解决。( b151de6 )
- 以前,在某些情况下的
--sysroot中,mold 无法查找正确的文件。这导致ClickHouse ( #150 )的链接失败。这个错误已被修复。( 135f17c )