-O3编译器优化级别仍然被视为Linux内核太不安全

2021-06-06 11:31:25

我们依靠您的支持:您是否知道每个月在Phoronix上写的数百篇文章主要是由一个人疯狂时间的人撰写? Phoronix.com并不是有一个全新的新闻室,拥有无限的资源,并依赖于阅读我们的内容的人们而不阻止广告,并且通过订阅Phoronix保费的人与其他额外功能。您还可以通过PayPal考虑提示。由于GNU编译器集合(GCC)不太古老的版本可能会使用" -O3&#34生成坏码;编译器优化级别且有时在编译Linux内核时,Linus Torvalds仍然没有性能优势,Linus torvalds仍然反对使用此优化标志。 本周发送,作为Linux 5.13内核的网络修复的一部分是Wioguard修复,其中包括与" -O3&#34编译Wioguard模块的编译。-O3" C国旗。 Wioguard Lead Developer Jason Donenfeld曾与" -O3&#34一起建造Wioguard;项目以来的优化水平'初始化并研究了过去的生成代码。虽然他哈德' t的证人是从&#34生成的坏代码; -o3"用法,由于林万托尔瓦尔德的指导,他已经删除了前进的选项。 " -O3一般是不安全的"来自Torvalds的指导源于这个最近的内核线程,其中一些开发人员一直在讨论-o3使用,而是通过" - fnotree-loop-versive"解决一些版本的GCC可能在更高的优化级别生成错误代码。 在最近的电子邮件帖子Torvalds总结了他的当前-O3的角度: 它在历史上一直是可怕的车辆。它'已经变得更好,但这种情况清楚地表明"已经更好地"真的是'这很高的酒吧。 很少有项目使用-o3,这显然是其中的一部分是它的' s越野车。但是,为什么它的另一部分' S越野车是矢量化是一种简单非常复杂,老实说,最后一份报告的GCC人们不在乎谨慎。他们真实地生成了一个越野检查,因为"它' s未定义行为" 与那种心态,我没有个人所有倾向于说"当然,使用-o3"甚至在明确的案例中也知道它具有错误。

因此,Wioguard' ekel模块向前移动,不会在-o3处构建。 LZ4和ZSTD仍然是与-O3编译编译的内核代码的其他已知用户。 鉴于许多供应商慢慢转移到新的编译器版本甚至更长的内核维护者舒适丢弃旧编译版本支持,它可能是Linux内核发现它安全使用的历年" -O3"默认情况下 - 短缺版本检查或仅为Clang或其他条件启用安全性。