Mold 1.0.1 釋出,高速現代 Unix 連結器

2022-01-01 09:00:25

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=1make. (  )
  • 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 無法查詢正確的檔案。這導致 (  )的連結失敗。這個錯誤已被修復。(  )

更新公告:

展開閱讀全文