Linux 5.12 或?qū)⒅С?Clang LTO
對于 GCC 編譯器的替代者 Clang,Linux 或?qū)⒃?2 月份 5.12 版本中支持其 LTO( link-time optimizations ) 功能。
這些補丁由谷歌軟件工程師 Sami Tolvanen 提交,目前被分類為 for-next/kspp,大致分為兩個系列(系列1,系列2),用戶可以在 Kconfig 配置中選擇是否開啟 LTO。接下來如果沒有出大問題,這些補丁可能會發(fā)送到 5.12 的合并窗口中。不過,這些補丁目前僅支持 arm64,對于 x86_64 的支持由于一些 objtool 的問題仍在等待中。
雖然使用 Clang LTO 可以得到最佳的運行時性能,但是構(gòu)建時會占用大量時間和內(nèi)存,因此該支持也包括 ThinLTO —— 僅僅進行有限的函數(shù) importing 分析,與傳統(tǒng)的構(gòu)建方式占用內(nèi)存和時間差不多。
此前,像谷歌這樣的公司早已在其移動設(shè)備上的內(nèi)核構(gòu)建中使用 Clang LTO 并取得了不錯的效果,微軟也探索過使用 LTO + PGO 來給 Linux 內(nèi)核提升性能。實際上,早在 2014 年,Intel 的開發(fā)人員就提交過 LTO 支持的補丁,不過當時 Linus Torvalds 并沒有采納。
如果這些提交最終被使用,那么一些相關(guān)的 "CONFIG_LTO" 配置也會給添加 GCC LTO 的支持打下基礎(chǔ),雖然此前 Intel 等公司也提過支持 GCC LTO,但從未被采納。 同時,Clang 的 CFI(Control-Flow Integrity)實現(xiàn)也能得以實施。
本文轉(zhuǎn)自O(shè)SCHINA
本文標題:Linux 5.12 或?qū)⒅С?Clang LTO
本文地址:https://www.oschina.net/news/126367/linux-5-12-maybe-support-lto