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