在 GCC 中使用异国情调的引导程序有意义吗?

在 GCC 中使用异国情调的引导程序有意义吗?

有没有人有任何证据表明当前 GCC 以非平凡的方式引导来检测某些功能和架构的错误?或者至少指出一些文档,我可以在其中找到真正的引导技术用于检查 GCC 中的错误?

常规引导程序

  • 使用GCC版本(X-1)编译GCC版本(X),调用A
  • A是具有缓慢二进制文件的新编译器。
  • 使用新的编译器A自行编译并生成
  • 是具有快速二进制的新编译器
  • 自行编译并生成C
  • 此时如果A没有错误,然后生成的可执行文件的二进制转储C应该是一样的。

GCC 方法也将开发时使用的代码功能保持在最低限度,这样如果引导成功,您就知道至少最小的功能集是没有错误的。 (与 Clang 相反,Clang 使用更多功能只是为了通过简单的引导来增加覆盖范围)。

配置文件引导优化 boostrap

  • 使用A使用标志编译自身-fprofile-generate并生成
  • 使用编译自身(它将生成配置文件信息)
  • 使用A使用 进行编译-fprofile-use并生成乙'

  • 使用乙'使用标志编译自身-fprofile-generate并生成C

  • 使用C编译自身(它将生成配置文件信息)
  • 使用乙'使用 进行编译-fprofile-use并生成C'

  • 此时如果A没有错误,然后生成的可执行文件的二进制转储乙'C'应该是一样的。

后向和前向引导程序

  • 使用GCC版本X编译GCC版本(X-1)并生成A
  • 然后启动常规引导程序A
  • 使用A编译GCC版本X并生成D
  • 定期进行引导D

题外话:我认为如果有人创建一个 GCC 引导程序图并考虑特殊引导程序(例如跨平台构建),并快速查看引导程序失败的位置,那就太好了

相关内容