由 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

添加評論