Skip to content

feat: llvm-musl static target support (llvm toolchain family for *-linux-musl) #491

Description

@yspbwx2010

动机

--target x86_64-linux-musl 目前硬绑 gcc@16.1.0。GCC 16 的 modules 实现存在未修复的 ICE(BMI 读回期段错误,堆内指针损坏),而 clang 22 编同一代码库全绿。llvm 家族缺的只是 musl 侧 payload(clang 不携带 musl libc/libc++)。

设计思路

  • 新 xim 包 llvm-musl:clang 前端(复用 llvm payload)+ 自建 musl libc++/libcxxabi/libunwind(含 std.cppm)+ 从 musl-gcc payload 借 crt/libgcc(--gcc-toolchain + -rtlib=libgcc -unwindlib=libgcc
  • linkmodel 增加 llvm-musl 分支:musl sysroot 优先于 glibc payload(clang.cfg 的 host 绑定需以 --no-default-config 中和)
  • stdmod:musl target 的 std.pcm 从 payload 内 std.cppm --precompile
  • 双架构验证过可行(x86_64 native + aarch64 qemu,cloud-code-cpp 全库)

涉及模块

  • src/toolchain/registry.cppm(to_xim_package)
  • src/toolchain/linkmodel.cppm(resolve_link_model)
  • src/toolchain/stdmod.cppm
  • xim-pkgindex(新包 payload)

详细设计:.agents/docs/2026-08-23-llvm-musl-target-design.md(随 PR 附上)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions