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
. ( )- xxHash 庫現在作為子樹包含在模具的源樹中,以便於構建。如果要連結到系統庫目錄中的 libxxhash,請傳遞
SYSTEM_XXHASH=1
到make
. ( ) extern "C++"
指令現在在動態列表中受支援。( )- 過去在 Mold 中受忽略的標誌
--color-diagnostics
,現已得到支援。( ) - 除了
*
,現在?
也被視為版本指令碼(version script)萬用字元模式中的特殊字元。( ) --threads=N
選項已新增為--thread-count=N
. ( )- 已新增下列選項:
--defsym
(),-z nodefaultlib
()-z separate-code
,-z noseparate-code
和-z separate-lodable-segments
(),-z max-page-size
()
bug 修復
- 現在對未知
-z
選項發出警告而不是錯誤。( ) - 之前為非 SHF_ALLOC 註釋段建立了一個 PT_NOTE 段。這是一個錯誤的行為,應該只為記憶體分配的部分建立段。這個問題已經解決。( )
- 之前當未定義符號升級為動態符號時,版本指令碼會影響它們的符號可見性,這是語意上不正確的行為,且會導致 libQt 構建失敗()。目前問題已修復。( )
- 從 1.0.1 開始, Mold 的行為與 GNU ld 相同。( )
- 以前,模具針對 Initial-Exec 執行緒區域性變數應用了錯誤的重定位值。這導致 Mesa 3D 圖形庫 ( )的連結失敗。問題已解決。( )
- GCC 7 有一個錯誤,它在特定條件下針對執行緒區域性變數發出不正確的重定位,為了與 GCC 7 的錯誤相容性,mold 不會將其報告為錯誤。( )
- 如果輸出檔案包含多個執行緒區域性 BSS 部分,則它們的佈局會相互重疊。此錯誤導致使用 DMD 編譯的程式出現執行時錯誤,DMD 是 D 語言的編譯器 ( )。此佈局問題已解決。( )
- 以前,在某些情況下的
--sysroot
中,mold 無法查詢正確的檔案。這導致 ( )的連結失敗。這個錯誤已被修復。( )
更新公告: