每周一龙:第 40 期
每周一都为大家报道 LoongArch 社区最前线的第一手新鲜资讯! 上周的进展主要有工具链以及各种集成、测试工作。 详情点进来看!
如无特别说明,文中提及的日期、时间都为北京时间(UTC+8)。
本期周报的实际发稿时间是周三晚间,因为前两天都在忙别的。
先「马」再看
本栏目的内容具有一定延续性,将持续追踪报道 LoongArch 领域的重要或长期项目(坑)。
Linux
Huacai Chen 移除了在
LoongArch 上多余的 flush_dcache_page
定义。
Huacai Chen 3 月 7 日发出了 Linux 6.9 开发周期的 KVM 变更,3 月 11 日已被接受。
工具链
GCC
Xi Ruoyao 允许了非
extreme
代码模型下 IE 模型的 TLS 操作被 relax 到 LE 模型。
(编者注:MaskRay 的 All about thread-local storage 是 TLS 话题相当不错的入门材料。)
Chenghui Pan 清理了一些多余代码。
Lulu Cheng 修复了 使用 LL/SC 方式实现原子比较交换(atomic CAS)操作时,由于可能遗漏符号扩展动作,而导致潜在的原子语义错误的问题。 这与上期周报报道的相关 LLVM 变更修复的是同一问题。
Lulu Cheng 还修复了寄存器名称
s9
测试用例的调用方式。
LLVM
MQ-mengqing 使得
R_LARCH_ALIGN
可以相对于 section 工作。
在上期周报报道了
llvm.loongarch.lasx.xvpermi.q
行为的变更之后,xry111
注意到了该变更可能不妥;遂在向 LLVM 18.x 分支集成原变更的 PR 中建议了不光不要往回移植,并且最好回滚该变更;xen0n
看到之后表示认同。
龙芯维护者 SixWeining 在内部讨论后,接受了建议,回滚了原变更。
wangleiat 修复了为 LoongArch32
生成代码时,遇到 MSB 操作数大于 31 的 bstrins
会崩溃的问题。该修复也已往回移植到了
LLVM 18.x 分支。
上期周报提到的修复了 Clang __iocsrrd_h
intrinsic 返回类型的变更,
也往回移植到了
LLVM 18.x 分支。
Rust
暌违近一年,rustup 项目终于迎来了
1.27.0 版本的正式发布。
在 LoongArch 新世界发行版进行 Rust 开发的同学们可以方便地安装、使用 rustup
工具了。除
target tuple 取值不同之外,其余体验都与 x86 或 ARM 平台完全相同。
感谢 syhily 提供新闻线索!
heiher 允许了从 Rust 层面控制底层
LLVM 所新增的 LoongArch 目标特性 frecipe
与 relax
。
杂闻播报
安同开源社区(AOSC)开发者王邈在维护 libLoL
时,发现龙芯团队当初移植 glibc 数学库时写了一处笔误。
沟通后,龙芯维护者 caiyinyu 修复了该笔误。
该笔误在正常编译 glibc 时不会被触发,因为从
libm_alias_finite
的定义可见,
该宏定义对龙架构是无效的:龙架构的纪元版本高于 2.31,因此龙架构上的该宏是空操作。
而在编译 libLoL 时,因为 libLoL 有意将 glibc 的纪元版本向过去推了,所以带有笔误的该语句生效,进而暴露了缺少符号的问题。
感谢王邈提供新闻线索!
(编者注:您可查阅本站的相关文档了解此处涉及的技术细节。)
donmor 在测试 DOSBox 的衍生项目 DOSBox-X 时,发现它无法正常进行一些浮点运算。 在 xry111 与 xen0n 的协助下,发现原因是该项目对浮点控制状态寄存器(FCSR)的处理不具备跨平台性; 在 donmor 与 xry111 一系列的修复与重构之后,问题已被修复。 感谢 donmor 提供新闻线索!
上期周报提到的 Debian GRUB 的 loong64 改动已被顺利集成,静待 Debian 包版本的下次正式更新。 感谢 jiegec 提供新闻线索!
张贴栏
本栏目可供张贴公益性质的各种信息。