跳到主要内容

每周一龙:第 40 期

· 阅读需 6 分钟
WANG Xuerui
🐲龙门客栈打杂的

每周一都为大家报道 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 目标特性 freciperelax

杂闻播报

安同开源社区(AOSC)开发者王邈在维护 libLoL 时,发现龙芯团队当初移植 glibc 数学库时写了一处笔误。 沟通后,龙芯维护者 caiyinyu 修复了该笔误。 该笔误在正常编译 glibc 时不会被触发,因为从 libm_alias_finite 的定义可见, 该宏定义对龙架构是无效的:龙架构的纪元版本高于 2.31,因此龙架构上的该宏是空操作。 而在编译 libLoL 时,因为 libLoL 有意将 glibc 的纪元版本向过去推了,所以带有笔误的该语句生效,进而暴露了缺少符号的问题。 感谢王邈提供新闻线索! (编者注:您可查阅本站的相关文档了解此处涉及的技术细节。)

donmor 在测试 DOSBox 的衍生项目 DOSBox-X 时,发现它无法正常进行一些浮点运算。 在 xry111xen0n 的协助下,发现原因是该项目对浮点控制状态寄存器(FCSR)的处理不具备跨平台性; 在 donmorxry111 系列修复重构之后,问题已被修复。 感谢 donmor 提供新闻线索!

上期周报提到的 Debian GRUB 的 loong64 改动已被顺利集成,静待 Debian 包版本的下次正式更新。 感谢 jiegec 提供新闻线索!

张贴栏

本栏目可供张贴公益性质的各种信息。