# Hosted StarForth — 3-Architecture Acceptance Test **Date**: 2026-07-24 (original), corrected 2026-08-02 **Branch**: `master` **Commits**: `edced063` (original block-subsystem fix), `4485c38` (doc + 3 clang-surfaced bug fixes), `e287334` (asm register-reuse fix), this pass (`riscv64-clang` Makefile target) --- ## What this verifies The **hosted** StarForth VM (`make`, not `Makefile.starkernel`) is a static binary. This test confirms it starts cleanly — reaches the `ok>` REPL prompt with no errors — on all three architectures the project targets: - **amd64** — native execution on the build host - **aarch64** — cross-compiled, run under QEMU user-mode emulation - **riscv64** — cross-compiled, run under QEMU user-mode emulation This is distinct from the kernel (`Makefile.starkernel`) 3-arch acceptance test documented in [`../amd64-isr-fix/README.md`](../amd64-isr-fix/README.md), which boots a full UEFI bare-metal image under system-mode QEMU. This test only exercises the hosted Linux binary, using QEMU **user-mode** emulation to run a foreign-architecture static binary directly on the x86_64 host — no kernel, no UEFI firmware, no system emulation. --- ## Prerequisites Cross toolchains, QEMU user-mode emulation, and clang (needed for the riscv64 leg — see below): ```bash sudo apt-get install -y \ gcc-aarch64-linux-gnu \ gcc-riscv64-linux-gnu \ clang-18 lld-18 \ qemu-user ``` `qemu-user` alone is enough — the binaries built below are statically linked (`-static`), so the non-static `qemu-` emulators run them directly with no sysroot. (The `qemu-user-static` package, if you see it referenced elsewhere, provides statically-linked *emulators*; it's not required just because the *guest* binary is static.) --- ## Invocation note None of the three binaries accept a `-c "