
Hi 刘恺, 多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。 另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。 目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。 Best Regards 赵川峰(Steve) 发件人: kai.liu <kai.liu@xfusion.com> 发送时间: 2023年4月27日 23:47 收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com> 主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论 Hi 川峰, 我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。 由于clang 16默认打开了以下开关, * -Werror=implicit-function-declaration * -Werror=implicit-int * -Werror=strict-prototypes 造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多: https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e... https://bugs.gentoo.org/870412 https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i... 理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决? 刘恺 Email: kai.liu@xfusion.com<mailto:kai.liu@xfusion.com> | Mobile: 181 2600 8111 From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com<mailto:zhaochuanfeng@huawei.com>> Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.org<mailto:tc@openeuler.org> Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com<mailto:weiwei64@huawei.com>>; Chenxi Mao <chenxi.mao@suse.com<mailto:chenxi.mao@suse.com>> Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论 各位TC委员好: 我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。 下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。 [cid:image001.jpg@01D979B8.35C952B0] 可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。 Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下: LTS版本: src-openeuler/clang: 包含clang,clang-tools-extra src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc src-openeuler/lld: 包含lld src-openeuler/llvm-bolt: 包含bolt latest版本: src-openeuler/clang-latest src-openeuler/llvm-latest src-openeuler/lld-latest src-openeuler/llvm-bolt-latest 原则&方案: (1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。 (2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。 (3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。 基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是: [cid:image002.jpg@01D979B8.35C952B0] 欢迎大家给出宝贵意见,谢谢! Best Regards 赵川峰(Steve)