对于 GCC 编译器的替代者 Clang,Linux 或将在 2 月份 5.12 版本中支持其 LTO( link-time optimizations ) 功能。
这些补丁由谷歌软件工程师 Sami Tolvanen 提交,目前被分类为 for-next/kspp,大致分为两个系列(系列1,系列2),用户可以在 Kconfig 配置中选择是否开启 LTO。接下来如果没有出大问题,这些补丁可能会发送到 5.12 的合并窗口中。不过,这些补丁目前仅支持 arm64,对于 x86_64 的支持由于一些 objtool 的问题仍在等待中。
虽然使用 Clang LTO 可以得到最佳的运行时性能,但是构建时会占用大量时间和内存,因此该支持也包括 ThinLTO —— 仅仅进行有限的函数 importing 分析,与传统的构建方式占用内存和时间差不多。
此前,像谷歌这样的公司早已在其移动设备上的内核构建中使用 Clang LTO 并取得了不错的效果,微软也探索过使用 LTO + PGO 来给 Linux 内核提升性能。实际上,早在 2014 年,Intel 的开发人员就提交过 LTO 支持的补丁,不过当时 Linus Torvalds 并没有采纳。
如果这些提交最终被使用,那么一些相关的 "CONFIG_LTO" 配置也会给添加 GCC LTO 的支持打下基础,虽然此前 Intel 等公司也提过支持 GCC LTO,但从未被采纳。 同时,Clang 的 CFI(Control-Flow Integrity)实现也能得以实施。
本文转自OSCHINA
本文标题:Linux 5.12 或将支持 Clang LTO
本文地址:https://www.oschina.net/news/126367/linux-5-12-maybe-support-lto