Skip to content

Commit cd6d44b

Browse files
committed
test: attest native ARM64 GNU and openkal acceptance
1 parent 5a0d70e commit cd6d44b

8 files changed

Lines changed: 55 additions & 10 deletions

File tree

‎.agents/docs/2026-10-08-llvm-2313-part2-execution-and-dependencies.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,30 @@ build.mcpp 导入宿主 std.pcm 时,Clang 报目标特征 `-fmv` 不一致。
323323
后,PCM、std 对象与同一导入者均编译成功,并以候选 ARM64 运行时
324324
链接后在 QEMU 下运行成功。该结果验证配置一致性的根因修复,
325325
原生 openkal 全量构建仍作为独立准入门。
326+
327+
## 15. 2026-10-08 原生 GNU 与 openkal 完整消费准入
328+
329+
原生候选门 [37706303240](https://github.com/mcpp-community/mcpp/actions/runs/37706303240)
330+
在 mcpp 提交 `5a0d70ec75c074bfa57273e8676dd7fd92c4086a` 与索引提交
331+
`84c27c3014e676f2175868627b93494d6bd442e8` 上全部通过。冷安装、
332+
受管头文件负对照、std/std.compat、线程、异常、16 字节原子、共享 C ABI、
333+
GNU 默认构建与打包部署、GCC musl 回归、GNU 自举及完整单测 147/147
334+
均通过;804 的 LLVM 宿主工具案例与四个真实索引成员均成功。
335+
336+
同一原生门的 openkal 286 从依赖图供应 kernel-abi、c-abi 与 c++-abi,
337+
产出 aarch64 静态 ELF,九个程序头中没有 INTERP,并在原生宿主输出
338+
`x0x1x2x3 4`。第 14 节宿主 std PCM 配置更正已由完整生态消费验证。
339+
GNU 默认目标的 tier 据此由 preview 提升为 verified;此声明限于
340+
原生 linux-aarch64 供应,不新增预构建 GNU 交叉载荷的支持声明。
341+
342+
主 CI 同一提交的 Windows 单测与打包 job `113081590235`、bare
343+
Windows job `113084571444` 均成功,支持第 11 节 GCC_ROOT 根因更正。
344+
macOS E2E 48 暴露旧断言将 `--rtlib=compiler-rt` 一律视为仅链接参数;
345+
第 14 节实际 ARM64 对照已证明该选项影响代码生成。测试仅移除对此
346+
参数的禁令,保留其余仅链接参数、私有环境与错误输出检查;本地完整
347+
E2E 48 通过。该测试修正仍须最终提交的 CI 验证。
348+
349+
索引原生资源门与 mcpp 原生消费门均已通过,公开索引切换仍等待
350+
索引 PR 当前提交其余 CI 完成。四宿主三目标实际运行、正式发布、
351+
CN 镜像及发布版 SubOS 消费继续作为独立准入项;本节原生成功不
352+
替代这些证据。

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ list` reports for this machine):
435435
| `armv7a-none-eabi` · `armv7a-none-eabihf` | llvm 22 — Cortex-A 32-bit, the first row with an MMU ² | verified |
436436
| `aarch64-none-elf` · `x86_64-none-elf` | llvm 22 — bare metal, no C library by default ² | preview |
437437
| `thumbv7em-none-eabi` · `thumbv8m.base-none-eabi` · `thumbv8m.main-none-eabihf` | llvm 22 — Cortex-M4/M7 soft float, M23, M33F/M55F ² | preview |
438-
| `aarch64-linux-gnu` | `llvm@23.1.3` | preview |
438+
| `aarch64-linux-gnu` | `llvm@23.1.3` | verified |
439439
| `riscv64-linux-musl` · `x86_64-macos` | — | planned |
440440
| `wasm32-emscripten` | `emsdk@6.0.9` — Emscripten ships its own sysroot and its own libc++ module surface; `mcpp run` executes the module with the `node` the payload declares (`xim:node`), not one found on PATH | verified |
441441
| `x86_64-linux-android` | `android-ndk@30.0.16248370` — bionic from the NDK, one payload for both ABIs; ran on an API 24 x86_64 emulator image | verified |

‎README.zh-CN.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ mcpp 的身份模型有两条正交的轴:**工具链**是 `family@version`(
389389
| `armv7a-none-eabi` · `armv7a-none-eabihf` | llvm 22;Cortex-A 32 位,第一个带 MMU 的目标 ² | verified |
390390
| `aarch64-none-elf` · `x86_64-none-elf` | llvm 22;裸机,默认不带 C 库 ² | preview |
391391
| `thumbv7em-none-eabi` · `thumbv8m.base-none-eabi` · `thumbv8m.main-none-eabihf` | llvm 22;Cortex-M4/M7 软浮点、M23、M33F/M55F ² | preview |
392-
| `aarch64-linux-gnu` | `llvm@23.1.3` | preview |
392+
| `aarch64-linux-gnu` | `llvm@23.1.3` | verified |
393393
| `riscv64-linux-musl` · `x86_64-macos` | — | planned |
394394
| `wasm32-emscripten` | `emsdk@6.0.9`;Emscripten 自带 sysroot 与 libc++ 模块接口;`mcpp run` 使用 payload 声明的 `node`(`xim:node`)运行模块,不使用 PATH 上的 `node` | verified |
395395
| `x86_64-linux-android` | `android-ndk@30.0.16248370`;bionic 来自 NDK,一个 payload 服务两个 ABI;已在 API 24 的 x86_64 模拟器镜像上运行 | verified |

‎docs/21-the-target-triple.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ other's rows.
492492
| target | tier | pin | linux-x86_64 | linux-aarch64 | macos-arm64 | windows-x86_64 |
493493
|---|---|---|---|---|---|---|
494494
| `x86_64-linux-gnu` | verified | — | payload | — | — | — |
495-
| `aarch64-linux-gnu` | preview | `llvm@23.1.3` | — | payload | — | — |
495+
| `aarch64-linux-gnu` | verified | `llvm@23.1.3` | — | payload | — | — |
496496
| `x86_64-linux-musl` | verified | `gcc@16.1.0` | payload | payload | — | payload |
497497
| `aarch64-linux-musl` | verified | `gcc@16.1.0` | payload | payload | — | — |
498498
| `riscv64-linux-musl` | planned | — | planned | planned | planned | planned |

‎docs/zh/21-the-target-triple.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ docs/22。
461461
| target | tier | pin | linux-x86_64 | linux-aarch64 | macos-arm64 | windows-x86_64 |
462462
|---|---|---|---|---|---|---|
463463
| `x86_64-linux-gnu` | verified | — | 载荷 | — | — | — |
464-
| `aarch64-linux-gnu` | preview | `llvm@23.1.3` | — | 载荷 | — | — |
464+
| `aarch64-linux-gnu` | verified | `llvm@23.1.3` | — | 载荷 | — | — |
465465
| `x86_64-linux-musl` | verified | `gcc@16.1.0` | 载荷 | 载荷 | — | 载荷 |
466466
| `aarch64-linux-musl` | verified | `gcc@16.1.0` | 载荷 | 载荷 | — | — |
467467
| `riscv64-linux-musl` | planned | — | planned | planned | planned | planned |

‎modules/toolchain-model/src/triple.cppm‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ inline constexpr TargetInfo kKnownTargets[] = {
536536
{ "x86_64-windows-msvc", "verified", "PE", "", "", false },
537537
{ "aarch64-macos", "verified", "", "", "", false },
538538
{ "riscv64-linux-musl", "planned", "", "", "", true },
539-
{ "aarch64-linux-gnu", "preview", "", "llvm@23.1.3", "", false },
539+
{ "aarch64-linux-gnu", "verified", "", "llvm@23.1.3", "", false },
540540
{ "x86_64-macos", "planned", "", "", "", false },
541541
// Bare metal. `defaultStatic` is not a preference here — there is no
542542
// loader, so there is no other option. The pin is llvm on every host
@@ -905,9 +905,8 @@ inline bool is_known_target(const Triple& t) { return find_known_target(t) != nu
905905
// — compile-time data, therefore the same on every host, so target identity
906906
// still does not depend on where the build ran.
907907
//
908-
// RULE ONE MAKES THIS RETIRE ITSELF. When `aarch64-linux-gnu` graduates from
909-
// `planned`, rule one matches first and the completion goes back to the lexical
910-
// answer with nobody editing this function.
908+
// Rule one now selects the supported `aarch64-linux-gnu` lexical default.
909+
// Its promotion from `planned` required no change to this completion logic.
911910
struct RequestResolution {
912911
Triple triple; // the identity to use from here on
913912
// The lexical fill was replaced by a row from the vocabulary. For the

‎tests/e2e/48_build_error_output.sh‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ if grep -q 'LD_LIBRARY_PATH\|toolenv' "$build_ninja"; then
9292
sed -n '1,80p' "$build_ninja"
9393
exit 1
9494
fi
95-
if grep '^cxxflags\|^cflags' "$build_ninja" | grep -Eq -- '-stdlib=libc\+\+|-fuse-ld=lld|--rtlib=compiler-rt|--unwindlib=libunwind'; then
96-
echo "compile flags should not contain clang link/runtime-only flags"
95+
# --rtlib=compiler-rt also controls AArch64 FMV/outline-atomics codegen;
96+
# the std PCM and its consumers must carry the same runtime selection.
97+
if grep '^cxxflags\|^cflags' "$build_ninja" | grep -Eq -- '-stdlib=libc\+\+|-fuse-ld=lld|--unwindlib=libunwind'; then
98+
echo "compile flags should not contain clang link-only flags"
9799
grep '^cxxflags\|^cflags' "$build_ninja"
98100
exit 1
99101
fi

‎tests/unit/test_toolchain_triple.cpp‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,23 @@ TEST(Triple, EachRowsTierMatchesTheEvidenceThatExistsForIt) {
733733
EXPECT_TRUE(info->sysroot.empty()) << name;
734734
}
735735

736+
{
737+
// Native ARM64 admission 37706303240 on 2026-10-08 built and ran
738+
// the LLVM 23.1.3/glibc default, its deployed pack, GNU self-host,
739+
// all 147 suites and four real index members. This is native GNU
740+
// evidence, not a claim about prebuilt GNU cross payloads.
741+
auto [name, tier] = std::pair{"aarch64-linux-gnu", "verified"};
742+
auto t = parse(name);
743+
ASSERT_TRUE(t.has_value());
744+
auto* info = find_known_target(*t);
745+
ASSERT_NE(info, nullptr);
746+
EXPECT_EQ(info->tier, tier);
747+
EXPECT_EQ(info->pin, "llvm@23.1.3");
748+
EXPECT_TRUE(info->sysroot.empty());
749+
EXPECT_FALSE(info->defaultStatic);
750+
EXPECT_FALSE(t->pin_is_capability());
751+
}
752+
736753
// THE THREE APPLE ROWS, AND WHAT THE SDK'S LICENCE DOES AND DOES NOT
737754
// BOUND.
738755
//

0 commit comments

Comments
 (0)