Mold 連結器已發布,它可以作為 GNU 連結器的更快、更透明的替代品。 LinuxMold 是一個基於 LLVM lld 連結器的項目,由 LLVM lld 連結器的作者開發。 Mold 的主要特徵是其極高的目標檔案連結速度,顯著優於 GNU gold 和 LLVM lld 連結器(Mold 的連結速度僅為使用 cp 工具複製檔案的一半)。程式碼使用 C++ (C++20) 編寫,並以 AGPLv3 授權發布。
在新版本中:
- 增加了對連結時間優化 (LTO) 的支援。 LTO 最佳化的不同之處在於,它考慮了建置過程中涉及的所有文件的狀態,而傳統的最佳化模式則單獨優化每個文件,而不考慮其他文件中定義的函數的呼叫條件。以前,當偵測到具有 GCC 或 LLVM 中間程式碼 (IR) 的檔案時,會呼叫對應的連結器 ld.bfd 或 ld.lld,但現在 Mold 可以獨立處理 IR 檔案並使用 Linker Plugin API,該 API 也用於 GNU ld 和 GNU gold 連結器。啟用 LTO 時的速度僅略微領先其他連結器,因為大部分時間都花在執行程式碼最佳化而不是連結上。
- 新增了對主機和目標平台上的 RISC-V (RV64) 架構的支援。
- 新增了“--emit-relocs”選項,以允許將重定位部分從輸入文件複製到輸出文件,以便在連結後階段進行後續應用最佳化。
- 新增了“--shuffle-sections”選項,以在虛擬地址空間中固定其地址之前隨機化節的順序。
- 新增了「--print-dependencies」和「--print-dependencies=full」選項,以 CSV 格式輸出輸入檔案之間的依賴訊息,例如,可用於分析連結時或在進行最小化檔案間依賴關係的工作時包含某些目標檔案的原因。
- 新增了“--warn-once”和“--warn-textrel”選項。
- 刪除了對 libxxhash 的依賴。
來源: opennet.ru
