From d6ea592c08e6c943bcbb24f82523609cf68496df Mon Sep 17 00:00:00 2001 From: rajames Date: Thu, 29 Oct 2026 07:34:11 -0400 Subject: [PATCH] fix(amd64): the image runs wherever the firmware loads it -- -fpie, every symbol hidden; qemu-stick-high in acceptance The SER5 stopped at the loader's "Loading kernel from ESP...": built -fno-pic -fno-pie with ImageBase 0, the image carried ~9,000 32-bit absolute addresses, and the firmware loaded it above 2 GiB, where the sign-extended ones (R_X86_64_32S) point into unmapped memory -- a page fault in debug_checkpoint() before [CKPT 001]. Reproduced on QEMU's pc machine at 3 GiB (#PF, CR2 = FFFFFFFFBD316542, the right address sign-extended); q35 always loads it below 2 GiB, so no QEMU boot ever showed it. amd64 now builds -fpie with kernel/include/starkernel/pie_hidden.h force-included (#pragma GCC visibility push(hidden)), so globals are RIP-relative and none is reached through a GOT -- the 2026-08-06 bug that put -fno-pic there. The link refuses any object carrying a 32-bit absolute or GOT relocation (4,531 on the old objects, none now). test_runner.c's visibility("default") on global_test_stats is kept for the -fPIC ISAs only. make -f kernel/Makefile ARCH=amd64 qemu-stick-high boots the PC stick on pc with 3 GiB and is part of acceptance (.claude/CLAUDE.md). Captain Bob, 2026-10-29; FABRIC-3.md XLIV. Verified: qemu-stick-high with Zuse's pair, ok> and 7 ok, RIP sampled inside .text at base 0xBD297000 (logs/20261029-070253); acceptance amd64 -070508, aarch64 -070715, riscv64 -071138, PARITY:V4_POST tests=538 pass=538 fail=0, POST: PASSED, dict_hash=0xfec8c47cfc6f437f on all; make -C v4 test-32, 39 suites, 0 failures. Not yet booted on the SER5. Co-Authored-By: Claude Opus 5.5 --- .claude/CLAUDE.md | 8 + docs/fabric/FABRIC-3.md | 45 ++++ .../runs/doe-aarch64-20261029-070715.csv | 0 .../runs/doe-amd64-20261029-070253.csv | 0 .../runs/doe-amd64-20261029-070508.csv | 0 .../runs/doe-riscv64-20261029-071138.csv | 0 kernel/Makefile | 63 ++++-- kernel/include/starkernel/pie_hidden.h | 27 +++ .../amd64/qemu-amd64-20261029-070253.log | 162 ++++++++++++++ .../amd64/qemu-amd64-20261029-070508.log | 161 ++++++++++++++ .../aarch64/qemu-aarch64-20261029-070715.log | 133 ++++++++++++ .../riscv64/qemu-riscv64-20261029-071138.log | 204 ++++++++++++++++++ v3/src/test_runner/test_runner.c | 5 +- 13 files changed, 789 insertions(+), 19 deletions(-) create mode 100644 experiments/bare_metal/runs/doe-aarch64-20261029-070715.csv create mode 100644 experiments/bare_metal/runs/doe-amd64-20261029-070253.csv create mode 100644 experiments/bare_metal/runs/doe-amd64-20261029-070508.csv create mode 100644 experiments/bare_metal/runs/doe-riscv64-20261029-071138.csv create mode 100644 kernel/include/starkernel/pie_hidden.h create mode 100644 logs/20261029-070253/amd64/qemu-amd64-20261029-070253.log create mode 100644 logs/20261029-070508/amd64/qemu-amd64-20261029-070508.log create mode 100644 logs/20261029-070715/aarch64/qemu-aarch64-20261029-070715.log create mode 100644 logs/20261029-071138/riscv64/qemu-riscv64-20261029-071138.log diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 8c02f9d8..feccc74c 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -309,6 +309,9 @@ The vendored hosted `make` build (above) is NEVER used to validate kernel change make -f kernel/Makefile ARCH=amd64 clean qemu make -f kernel/Makefile ARCH=aarch64 clean qemu make -f kernel/Makefile ARCH=riscv64 clean qemu +# ...the PC stick loaded above 2 GiB, as a PC's firmware loads it (pc machine, 3 GiB; with +# Zuse's pair in the stick: scripts/qemu_session.py stick_zuse amd64 --target qemu-stick-high): +make -f kernel/Makefile ARCH=amd64 clean qemu-stick-high # ...and the 32-bit build -- v4 with 32-bit cells, the F18/Zynq (FPGA) case: its nucleus # image and every v4 test at that width (no QEMU; not a substitute for the boots above): make -C v4 test-32 @@ -356,6 +359,11 @@ present in `logs/`: - **as built (v4)** to `[zuse@Hera] ok> `, with `PARITY:V4_POST tests=538 pass=538 fail=0` (the count grows with v4's POST) and `POST: PASSED`, and `PARITY:V4_SYSTEM ... dict_hash=` equal across the three; +- **the PC stick loaded high** (Captain Bob, 2026-10-29, after the SER5 page-faulted in the + loader -- q35 always loads the image below 2 GiB, a PC's firmware does not; `FABRIC-3.md` + §XLIV): `qemu-stick-high` to `[zuse@Hera] ok> ` with the same `PARITY:V4_POST ... fail=0` and + `POST: PASSED`. The amd64 link also refuses any 32-bit absolute or GOT relocation in the image; + don't work around that check, fix the code it names; - **the 32-bit build** (Captain Bob, 2026-10-14: "the 32 bit build needs to go into the acceptance test too"): `make -C v4 test-32` passes -- every test, `0 failures`. diff --git a/docs/fabric/FABRIC-3.md b/docs/fabric/FABRIC-3.md index b965dc0f..7bd35c0f 100644 --- a/docs/fabric/FABRIC-3.md +++ b/docs/fabric/FABRIC-3.md @@ -5897,3 +5897,48 @@ acceptance rule (`.claude/CLAUDE.md`) became: the three ISAs as built (v4), and of it ("i don't care about v3"); it stays in the tree, `system=v3` still boots it. Verified: the three images rebuilt with `system=v4` in their boot files; the SER5 image under OVMF as built boots v4, and after changing the word, v3 (`logs/20261014-ser5-image/`). + +## XLIV. The amd64 image runs wherever the firmware loads it -- a PC loads it above 2 GiB (the SER5, 2026-10-29) + +**Found.** The first SER5 boot of the PC stick (`make write_stick`, 2026-10-29) stopped at the +loader's second line, "Loading kernel from ESP...", with no `[CKPT 001]`. The amd64 image was +built `-fno-pic -fno-pie`, ImageBase 0: about 9,000 of its addresses were 32-bit absolutes +(8,168 `R_X86_64_32`, 839 `R_X86_64_32S`), of which the firmware's base relocations patch only the +low 32 bits. `R_X86_64_32S` is sign-extended, so at a load address of 2 GiB or more it points into +unmapped memory. The first such access is `debug_checkpoint()` reading its `L"[CKPT "` prefix -- +the zero-extended `mov $imm32` string pointers of the two lines before it still worked, which is +why exactly those printed. QEMU never showed it: OVMF on q35 with the RAM we give it loads the +image below 2 GiB. Reproduced with the stick image unchanged on QEMU's `pc` machine at 3 GiB +(OVMF loads it at `0xBD297000`): `#PF` at ImageBase + `0x104C`, `CR2=FFFFFFFFBD316542` -- the +right address, `0xBD316542`, sign-extended. At 1 GiB the same image boots to `[zuse@Hera] ok> `. + +**Ruled** (Captain Bob, 2026-10-29), from a written trade-off: `-fpie` with every symbol hidden +(not `-mcmodel=large`, which costs code size and speed in the VM's inner loop, nor keeping the image low), +and a 3 GiB boot added to acceptance. + +**Built.** +- `kernel/Makefile`, amd64 `ARCH_CFLAGS`: `-fpie -include kernel/include/starkernel/pie_hidden.h` + in place of `-fno-pic -fno-pie`. `pie_hidden.h` is `#pragma GCC visibility push(hidden)`: + `-fvisibility=hidden` marks definitions only, and an extern declaration of default visibility + is reached through the GOT -- which `ld -m i386pep` never builds: the 2026-08-06 bug (FABRIC-0.md) + that put `-fno-pic` there. With the pragma GCC uses no GOT. (EDK2's GCC X64 `ProcessorBind.h` + does the same.) +- The amd64 link refuses any object carrying `R_X86_64_32`, `_32S`, a GOT or `PLTOFF64` + relocation (`AMD64_RELOC_FORBIDDEN`), listing them -- on the old objects it lists 4,531. + Now none: `PC32`, `PLT32` and `64` only. `.text` grew 2.9%. +- `v3/src/test_runner/test_runner.c`: `global_test_stats`' `visibility("default")` (a workaround + for the old `-fPIC` GOT) is kept for aarch64/riscv64 and dropped under `pie_hidden.h`, where it + contradicted the hidden declaration. +- `make -f kernel/Makefile ARCH=amd64 qemu-stick-high`: `qemu-stick` on the `pc` machine with + 3 GiB (`STICK_MACHINE`, `STICK_MEM`), so OVMF loads the image above 2 GiB as a PC does. + +**Verified.** `qemu-stick-high`, the stick with Zuse's pair (`qemu_session.py stick_zuse`): +`POST: PASSED`, `PARITY:V4_POST tests=538 pass=538 fail=0`, `[zuse@Hera] ok> `, `7 ok` +(`logs/20261029-070253`); the same image's RIP sampled during a 3 GiB boot ran at +`0xBD29CE70`..`0xBD2F40FF`, inside its `.text` at base `0xBD297000`. Acceptance: amd64 +`-070508`, aarch64 `-070715`, riscv64 `-071138`, each `PARITY:V4_POST tests=538 pass=538 fail=0`, +`POST: PASSED`, `[zuse@Hera] ok> `, `dict_hash=0xfec8c47cfc6f437f` on all four boots; +`make -C v4 test-32`, 39 suites, 0 failures. The SER5 itself: a new stick, not yet booted. + +Not covered by QEMU: a load above 4 GiB (OVMF keeps images below it). The relocation check +covers that case statically -- no 32-bit absolute is left to break there. diff --git a/experiments/bare_metal/runs/doe-aarch64-20261029-070715.csv b/experiments/bare_metal/runs/doe-aarch64-20261029-070715.csv new file mode 100644 index 00000000..e69de29b diff --git a/experiments/bare_metal/runs/doe-amd64-20261029-070253.csv b/experiments/bare_metal/runs/doe-amd64-20261029-070253.csv new file mode 100644 index 00000000..e69de29b diff --git a/experiments/bare_metal/runs/doe-amd64-20261029-070508.csv b/experiments/bare_metal/runs/doe-amd64-20261029-070508.csv new file mode 100644 index 00000000..e69de29b diff --git a/experiments/bare_metal/runs/doe-riscv64-20261029-071138.csv b/experiments/bare_metal/runs/doe-riscv64-20261029-071138.csv new file mode 100644 index 00000000..e69de29b diff --git a/kernel/Makefile b/kernel/Makefile index e130f481..ddbead77 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -271,23 +271,28 @@ ifeq ($(ARCH),amd64) CC := x86_64-elf-gcc LD := x86_64-elf-ld OBJCOPY := x86_64-elf-objcopy + READELF := x86_64-elf-readelf else CC := gcc LD := ld OBJCOPY := objcopy + READELF := readelf endif - # -fno-pic -fno-pie: this is a fixed-base, statically-linked freestanding - # image with no dynamic linker to populate a GOT at load time. -fPIC (set - # in COMMON_CFLAGS, needed by riscv64's -shared link pipeline) makes GCC - # emit R_X86_64_REX_GOTPCRELX (GOT-indirect) addressing for some cross-TU - # extern globals depending on per-call-site codegen heuristics; the "GOT - # slot" is just an unpopulated .bss cell here, so those reads silently - # return NULL instead of the real address. Root-caused 2026-08-06 via - # dict_find_word_heat_aware() reading sf_fc_count as NULL while - # vm_find_word() (same globals, same TU as the definition) read it - # correctly. These flags come after COMMON_CFLAGS on the command line so - # they win for amd64 only; riscv64/aarch64 keep -fPIC. - ARCH_CFLAGS := -m64 -march=x86-64 -mno-red-zone -DARCH_AMD64 -fno-pic -fno-pie + # -fpie + pie_hidden.h: the firmware loads this one PE image wherever it + # chooses, and a PC's puts it above 2 GiB (the SER5 did). The -fno-pic + # -fno-pie this replaced emitted 32-bit absolute addresses, sign-extended + # into unmapped memory up there: a page fault before the loader's first + # checkpoint (FABRIC-3.md XLIV). -fpie addresses globals RIP-relative. + # pie_hidden.h makes every declaration hidden, so GCC never reaches one + # through a GOT: this image has no dynamic linker and ld -m i386pep builds + # no GOT, so such a read returns NULL -- the 2026-08-06 bug that -fPIC + # caused (dict_find_word_heat_aware() reading sf_fc_count as NULL, + # FABRIC-0.md). AMD64_RELOC_FORBIDDEN, checked before the link below, + # makes either one fail the build. These flags come after COMMON_CFLAGS' + # -fPIC on the command line so they win for amd64 only; riscv64/aarch64 + # keep -fPIC. + ARCH_CFLAGS := -m64 -march=x86-64 -mno-red-zone -DARCH_AMD64 -fpie \ + -include kernel/include/starkernel/pie_hidden.h LOADER_LINKER_SCRIPT := kernel/linker/starkernel-loader-amd64.ld KERNEL_LINKER_SCRIPT := kernel/linker/starkernel-kernel-amd64.ld @@ -342,7 +347,7 @@ LOADER_LD ?= $(LD) # Common flags for all arches / both loader and kernel. # -fPIC + -fvisibility=hidden: needed by riscv64's -shared loader link -# pipeline (amd64 overrides back to -fno-pic/-fno-pie in its ARCH_CFLAGS +# pipeline (amd64 overrides it with -fpie and pie_hidden.h in its ARCH_CFLAGS # above -- see that comment for why: -fPIC made GCC emit GOT-indirect # addressing for some cross-TU extern globals, and this freestanding image # has no dynamic linker to populate a GOT, so those reads silently returned @@ -943,6 +948,13 @@ $(KERNEL_OBJ_DIR)/%.o: $(KERNEL_SRC)/%.S | $(KERNEL_OBJ_DIR) # LINK RULES # ============================================================================== +# amd64: relocations the image may not carry. The firmware loads the PE anywhere +# and patches only the low 32 bits of a 32-bit absolute (R_X86_64_32, _32S), so +# above 2 GiB (_32S) or 4 GiB (_32) the address is wrong; and a GOT relocation +# reads a slot nothing fills (no dynamic linker, no GOT from ld -m i386pep). +# -fpie and pie_hidden.h (ARCH_CFLAGS) leave none; this keeps it so. +AMD64_RELOC_FORBIDDEN := ^R_X86_64_(32|32S|GOT[A-Z0-9_]*|REX_GOTPCRELX|PLTOFF64)$$ + # Link loader to PE32+ # amd64: ld -m i386pep → PE directly # aarch64: lld-link links COFF objects → PE (auto-generates .reloc) @@ -977,6 +989,15 @@ else ifeq ($(ARCH),riscv64) $(BUILD_DIR)/starkernel_loader_stripped.elf $@ @echo "Loader built: $@" else + @bad=$$(for o in $(LOADER_OBJS); do \ + $(READELF) -rW $$o | awk -v o=$$o '$$3 ~ /$(AMD64_RELOC_FORBIDDEN)/ { print " " o ": " $$3 " " $$5 }'; \ + done); \ + if [ -n "$$bad" ]; then \ + echo "$$bad" | head -20; \ + echo "FATAL: $$(echo "$$bad" | wc -l) GOT or 32-bit absolute relocation(s) in the amd64 image --"; \ + echo " wrong at a load address above 2 GiB (FABRIC-3.md XLIV)"; \ + exit 1; \ + fi @echo "LD (loader PE) $@" @$(LD) $(LOADER_LDFLAGS_PE) $(LOADER_OBJS) -o $@ @echo "Loader built: $@" @@ -1273,8 +1294,16 @@ else ifeq ($(ARCH),riscv64) # on the xHCI controller, booted by OVMF from its ESP. No -cdrom, no virtio disk, no ZUSEDISK: # the kernel finds the stick through the USB storage driver and GPT code a PC uses. amd64 only # (ARM and RISC-V sticks are later, STICK.md 10). Serial, QMP and logs//amd64/ as `qemu`. +# +# qemu-stick-high -- the same boot on the pc machine with 3 GiB, where OVMF loads the image above +# 2 GiB, as a PC's firmware does (the SER5 put it there; q35 keeps RAM below 2 GiB and the image +# with it). Part of acceptance: an image that works only loaded low fails here (FABRIC-3.md XLIV). STICK_PC_IMG := build/boards/pc/lithos-pc.img -.PHONY: qemu-stick +STICK_MACHINE ?= q35 +STICK_MEM ?= 1024 +.PHONY: qemu-stick qemu-stick-high +qemu-stick-high: + @$(MAKE) -f kernel/Makefile ARCH=$(ARCH) STICK_MACHINE=pc STICK_MEM=3G qemu-stick qemu-stick: ifneq ($(ARCH),amd64) @echo "qemu-stick: the stick is the PC's -- ARCH=amd64 (ARM and RISC-V sticks are later, STICK.md 10)"; exit 1 @@ -1292,15 +1321,15 @@ else CSV=$(DOE_RUNS_DIR)/doe-amd64-$$TS.csv; \ SERIAL_SOCK=$(BUILD_DIR)/qemu-serial-amd64-$$TS.sock; \ QMP_SOCK=$(BUILD_DIR)/qemu-qmp-amd64-$$TS.sock; \ - echo "=== Launching QEMU (amd64): the PC stick over USB ==="; \ + echo "=== Launching QEMU (amd64): the PC stick over USB ($(STICK_MACHINE), $(STICK_MEM)) ==="; \ echo " Serial log: $$LOG"; \ echo " QMP socket: $$QMP_SOCK"; \ touch $$LOG; \ tail -n +1 -f $$LOG & TAILPID=$$!; \ qemu-system-x86_64 \ - -machine q35,accel=tcg \ + -machine $(STICK_MACHINE),accel=tcg \ -cpu qemu64,+rdrand \ - -m 1024 \ + -m $(STICK_MEM) \ -vga std \ -drive if=pflash,format=raw,readonly=on,file=$(OVMF_CODE) \ -drive if=pflash,format=raw,file=$(BUILD_DIR)/OVMF_VARS-stick.fd \ diff --git a/kernel/include/starkernel/pie_hidden.h b/kernel/include/starkernel/pie_hidden.h new file mode 100644 index 00000000..8738135b --- /dev/null +++ b/kernel/include/starkernel/pie_hidden.h @@ -0,0 +1,27 @@ +/* + * pie_hidden.h -- every symbol in the amd64 image is the image's own. + * + * Force-included (-include) ahead of every amd64 kernel and loader source by + * kernel/Makefile's ARCH_CFLAGS, together with -fpie. The image is one PE file, + * linked by ld -m i386pep, loaded by the firmware wherever it chooses: a PC's + * firmware puts it above 2 GiB (the Beelink SER5 did), where the 32-bit absolute + * addresses of -fno-pic code are sign-extended into unmapped memory and the + * loader page-faults before its first checkpoint (FABRIC-3.md XLIV). -fpie + * addresses every global relative to RIP, which is right at any load address. + * + * -fpie alone is not enough: GCC treats an extern declaration of default + * visibility as possibly defined in another module and reaches it through the + * GOT. This image has no dynamic linker and ld -m i386pep builds no GOT, so + * such a read returns zero -- the 2026-08-06 bug (FABRIC-0.md). -fvisibility= + * hidden covers definitions only; this pragma covers declarations too, so GCC + * never uses the GOT. (EDK2's GCC X64 ProcessorBind.h does the same.) + * + * The Makefile checks the result: the link fails if any object still carries + * a GOT or 32-bit absolute relocation. + */ +#ifndef STARKERNEL_PIE_HIDDEN_H +#define STARKERNEL_PIE_HIDDEN_H + +#pragma GCC visibility push(hidden) + +#endif /* STARKERNEL_PIE_HIDDEN_H */ diff --git a/logs/20261029-070253/amd64/qemu-amd64-20261029-070253.log b/logs/20261029-070253/amd64/qemu-amd64-20261029-070253.log new file mode 100644 index 00000000..e04a738f --- /dev/null +++ b/logs/20261029-070253/amd64/qemu-amd64-20261029-070253.log @@ -0,0 +1,162 @@ +[=3h[=3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU USB HARDDRIVE 1-0000:00:04.0-1" from PciRoot(0x0)/Pci(0x4,0x0)/USB(0x0,0x0) +BdsDxe: starting Boot0002 "UEFI QEMU QEMU USB HARDDRIVE 1-0000:00:04.0-1" from PciRoot(0x0)/Pci(0x4,0x0)/USB(0x0,0x0) +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +RAW SERIAL UP +[CKPT 002] Serial (COM1) initialized +Monolithic build - kernel linked directly +Collecting boot information... +CmdLine: from starforth.cfg +CmdLine: parsed OK +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +GOP: linear framebuffer found +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop +EBS... +EBS OK +Calling kernel_main (monolithic)... + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v2.1.0 amd64 +Architecture: amd64 +Build: Oct 29 2026 07:02:46 + +UEFI BootServices: EXITED +Console: serial line is a 16550 at port 0x00000000000003f8 (COM1, probed) + +=== StarKernel Boot Information === +Memory map entries: 131 +Total memory: 3071 MB +Usable memory: 3012 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 772611 + Free pages : 771088 + Used pages : 1523 + Total MB : 3018 + Free MB : 3012 + Used MB : 5 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +IDT installed. + +APIC: init... +APIC: IA32_APIC_BASE MSR=0x00000000fee00900 +APIC: stale-ISR drain: 0 EOI(s) issued +APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear) +APIC: init done + +I/O APIC: init... +I/O APIC: base=0xfec00000, gsi_base=0, overrides=5 + override: source=00 gsi=2 flags=0x0000 + override: source=05 gsi=5 flags=0x000d + override: source=09 gsi=9 flags=0x000d + override: source=0a gsi=10 flags=0x000d + override: source=0b gsi=11 flags=0x000d +i8042: keyboard ACKed enable-scanning +i8042: IRQ1 enabled in controller config byte +I/O APIC: keyboard IRQ1 routed (masked) + +Timer: init... +Timer: init start +Timer: PM_TMR_BLK discovered from FADT at port 45064 +Timer: VM mode detected (hypervisor present). +Timer: HPET calibration disabled (VM-exit MMIO would poison timing). +Timer: WARNING: invariant TSC not present under hypervisor. +Timer: continuing in RELATIVE mode (no determinism guarantees). +Timer: RDTSCP not present; using RDTSC (less serialized). +Timer: CPUID frequency unavailable; trying PM Timer... +Timer: trust=1 (0=NONE,1=REL,2=ABS), TSC=2086206217 Hz +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 2147483608 + Free bytes: 2147483608 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 24641536 + Heap end addr: 2172125184 + +Heartbeat: init... +APIC Timer: calibrating... +APIC Timer: apic_hz=1007825508, tick_hz=100, initial_count=10078255 +APIC Timer: configured (masked, ready to start) +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Boot disk: a StarshipOS stick +System: StarForth v4 (system=v4) +StarForth v4: one host node, the F18-derived engine +V4: capsule v4:sys:map-64.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49 +V4: capsule v4:sys:core.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28 +V4: capsule v4:sys:input.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79 +V4: capsule v4:sys:dict.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc +V4: capsule v4:sys:codegen.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90 +V4: capsule v4:sys:compile.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8 +V4: capsule v4:sys:quit.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e +V4: capsule v4:sys:forth.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da +V4: capsule v4:sys:numout.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299 +V4: capsule v4:sys:words.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e +V4: capsule v4:sys:system.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd +V4: capsule v4:sys:qmath.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3 +V4: capsule v4:sys:blocks.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a +V4: capsule v4:sys:log.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b +V4: capsule v4:sys:acl.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22 +V4: capsule v4:sys:end.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc +PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258 +V4: capsule v4:forth79.4th signature: missing (unsigned) +PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8 +PARITY:V4_POST tests=538 pass=538 fail=0 +PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f +PARITY:OK +POST: PASSED +PCI: init... +PCI: MCFG parse failed; using port I/O (amd64 default) +virtio-rng: no device on PCI bus 0 +rng: backend = rdrand +entropy: ready +virtio-input: no device on PCI bus 0 +Starting heartbeat... +APIC Timer: started (LVT=0x00020020 ICR=10078255) +I/O APIC: keyboard IRQ1 unmasked +Heartbeat running. +blkio_usb: MSC device ready +Artemis: the stick's partition attached +[Hera] Zuse: identity confirmed from attached thumbdrive +[zuse@Hera] ok> 3 4 + . +[zuse@Hera] 7 ok +[zuse@Hera] ok>  \ No newline at end of file diff --git a/logs/20261029-070508/amd64/qemu-amd64-20261029-070508.log b/logs/20261029-070508/amd64/qemu-amd64-20261029-070508.log new file mode 100644 index 00000000..8f061ab8 --- /dev/null +++ b/logs/20261029-070508/amd64/qemu-amd64-20261029-070508.log @@ -0,0 +1,161 @@ +[=3hBdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +BdsDxe: starting Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +RAW SERIAL UP +[CKPT 002] Serial (COM1) initialized +Monolithic build - kernel linked directly +Collecting boot information... +CmdLine: parsed OK +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +GOP: linear framebuffer found +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop +EBS... +EBS OK +Calling kernel_main (monolithic)... + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v2.1.0 amd64 +Architecture: amd64 +Build: Oct 29 2026 07:04:40 + +UEFI BootServices: EXITED +Console: serial line is a 16550 at port 0x00000000000003f8 (COM1, probed) + +=== StarKernel Boot Information === +Memory map entries: 122 +Total memory: 1023 MB +Usable memory: 965 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 248648 + Free pages : 247125 + Used pages : 1523 + Total MB : 971 + Free MB : 965 + Used MB : 5 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +IDT installed. + +APIC: init... +APIC: IA32_APIC_BASE MSR=0x00000000fee00900 +APIC: stale-ISR drain: 0 EOI(s) issued +APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear) +APIC: init done + +I/O APIC: init... +I/O APIC: base=0xfec00000, gsi_base=0, overrides=5 + override: source=00 gsi=2 flags=0x0000 + override: source=05 gsi=5 flags=0x000d + override: source=09 gsi=9 flags=0x000d + override: source=0a gsi=10 flags=0x000d + override: source=0b gsi=11 flags=0x000d +i8042: keyboard ACKed enable-scanning +i8042: IRQ1 enabled in controller config byte +I/O APIC: keyboard IRQ1 routed (masked) + +Timer: init... +Timer: init start +Timer: PM_TMR_BLK discovered from FADT at port 1544 +Timer: VM mode detected (hypervisor present). +Timer: HPET calibration disabled (VM-exit MMIO would poison timing). +Timer: WARNING: invariant TSC not present under hypervisor. +Timer: continuing in RELATIVE mode (no determinism guarantees). +Timer: RDTSCP not present; using RDTSC (less serialized). +Timer: CPUID frequency unavailable; trying PM Timer... +Timer: trust=1 (0=NONE,1=REL,2=ABS), TSC=2100714119 Hz +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 536870872 + Free bytes: 536870872 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 24641536 + Heap end addr: 561512448 + +Heartbeat: init... +APIC Timer: calibrating... +APIC Timer: apic_hz=1008140309, tick_hz=100, initial_count=10081403 +APIC Timer: configured (masked, ready to start) +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Boot disk: not a StarshipOS stick +System: StarForth v4 (this build's default) +StarForth v4: one host node, the F18-derived engine +V4: capsule v4:sys:map-64.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49 +V4: capsule v4:sys:core.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28 +V4: capsule v4:sys:input.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79 +V4: capsule v4:sys:dict.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc +V4: capsule v4:sys:codegen.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90 +V4: capsule v4:sys:compile.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8 +V4: capsule v4:sys:quit.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e +V4: capsule v4:sys:forth.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da +V4: capsule v4:sys:numout.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299 +V4: capsule v4:sys:words.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e +V4: capsule v4:sys:system.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd +V4: capsule v4:sys:qmath.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3 +V4: capsule v4:sys:blocks.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a +V4: capsule v4:sys:log.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b +V4: capsule v4:sys:acl.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22 +V4: capsule v4:sys:end.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc +PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258 +V4: capsule v4:forth79.4th signature: missing (unsigned) +PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8 +PARITY:V4_POST tests=538 pass=538 fail=0 +PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f +PARITY:OK +POST: PASSED +PCI: init... +PCI: ECAM mapped (amd64) +virtio-rng: no device on PCI bus 0 +rng: backend = rdrand +entropy: ready +virtio-input: no device on PCI bus 0 +Starting heartbeat... +APIC Timer: started (LVT=0x00020020 ICR=10081403) +I/O APIC: keyboard IRQ1 unmasked +Heartbeat running. +blkio_usb: MSC device ready +Artemis: the stick's partition attached +[Hera] Zuse: identity confirmed from attached thumbdrive +[zuse@Hera] ok> 3 4 + . +[zuse@Hera] 7 ok +[zuse@Hera] ok>  \ No newline at end of file diff --git a/logs/20261029-070715/aarch64/qemu-aarch64-20261029-070715.log b/logs/20261029-070715/aarch64/qemu-aarch64-20261029-070715.log new file mode 100644 index 00000000..5286f501 --- /dev/null +++ b/logs/20261029-070715/aarch64/qemu-aarch64-20261029-070715.log @@ -0,0 +1,133 @@ +UEFI firmware (version 2025.11-3ubuntu7.3 built at 15:40:26 on Sep 23 2026) +[=3hBdsDxe: failed to load Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0): Not Found +BdsDxe: failed to load Boot0003 "UEFI QEMU QEMU USB HARDDRIVE 1-0000:00:04.0-1" from PciRoot(0x0)/Pci(0x4,0x0)/USB(0x0,0x0): Not Found +BdsDxe: loading Boot0004 "UEFI Misc Device 2" from PciRoot(0x0)/Pci(0x6,0x0) +BdsDxe: starting Boot0004 "UEFI Misc Device 2" from PciRoot(0x0)/Pci(0x6,0x0) +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +Collecting boot information... +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v2.1.0 aarch64 +Architecture: aarch64 +Build: Oct 29 2026 07:06:48 + +UEFI BootServices: EXITED +Console: serial line is a PL011 at 0x0000000009000000 (no devicetree: QEMU's) + +=== StarKernel Boot Information === +Memory map entries: 110 +Total memory: 4093 MB +Usable memory: 4054 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 1039257 + Free pages : 1037846 + Used pages : 1411 + Total MB : 4059 + Free MB : 4054 + Used MB : 5 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +AArch64: running at EL1 +IDT installed. + +APIC: init... +PSCI: no DTB -- using HVC (QEMU virt-machine default) +GICv2: no DTB GIC node -- using QEMU virt-machine defaults +GICv2: distributor+CPU interface enabled, PPI 30 +APIC: init done + +Timer: init... +Timer: AArch64 generic timer initialised. +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 2147483608 + Free bytes: 2147483608 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 1207959552 + Heap end addr: 3355443200 + +Heartbeat: init... +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Boot disk: not a StarshipOS stick +System: StarForth v4 (this build's default) +StarForth v4: one host node, the F18-derived engine +V4: capsule v4:sys:map-64.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49 +V4: capsule v4:sys:core.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28 +V4: capsule v4:sys:input.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79 +V4: capsule v4:sys:dict.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc +V4: capsule v4:sys:codegen.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90 +V4: capsule v4:sys:compile.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8 +V4: capsule v4:sys:quit.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e +V4: capsule v4:sys:forth.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da +V4: capsule v4:sys:numout.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299 +V4: capsule v4:sys:words.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e +V4: capsule v4:sys:system.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd +V4: capsule v4:sys:qmath.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3 +V4: capsule v4:sys:blocks.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a +V4: capsule v4:sys:log.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b +V4: capsule v4:sys:acl.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22 +V4: capsule v4:sys:end.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc +PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258 +V4: capsule v4:forth79.4th signature: missing (unsigned) +PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8 +PARITY:V4_POST tests=538 pass=538 fail=0 +PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f +PARITY:OK +POST: PASSED +PCI: init... +virtio-rng: found device +rng: backend = virtio-rng +entropy: ready +virtio-input: found device +virtio-input: driver ready +Starting heartbeat... +Heartbeat running. +blkio_usb: MSC device ready +Artemis: the stick's partition attached +[Hera] Zuse: identity confirmed from attached thumbdrive +[zuse@Hera] ok> 3 4 + . +[zuse@Hera] 7 ok +[zuse@Hera] ok>  \ No newline at end of file diff --git a/logs/20261029-071138/riscv64/qemu-riscv64-20261029-071138.log b/logs/20261029-071138/riscv64/qemu-riscv64-20261029-071138.log new file mode 100644 index 00000000..7f2fce27 --- /dev/null +++ b/logs/20261029-071138/riscv64/qemu-riscv64-20261029-071138.log @@ -0,0 +1,204 @@ + +OpenSBI v1.8 + ____ _____ ____ _____ + / __ \ / ____| _ \_ _| + | | | |_ __ ___ _ __ | (___ | |_) || | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | + | |__| | |_) | __/ | | |____) | |_) || |_ + \____/| .__/ \___|_| |_|_____/|____/_____| + | | + |_| + +Platform Name : riscv-virtio,qemu +Platform Features : medeleg +Platform HART Count : 1 +Platform HART Protection : pmp +Platform IPI Device : aclint-mswi +Platform Timer Device : aclint-mtimer @ 10000000Hz +Platform Console Device : uart8250 +Platform HSM Device : --- +Platform PMU Device : --- +Platform Reboot Device : syscon-reboot +Platform Shutdown Device : syscon-poweroff +Platform Suspend Device : --- +Platform CPPC Device : --- +Firmware Base : 0x80000000 +Firmware Size : 321 KB +Firmware RW Offset : 0x40000 +Firmware RW Size : 65 KB +Firmware Heap Offset : 0x47000 +Firmware Heap Size : 37 KB (total), 0 KB (reserved), 12 KB (used), 23 KB (free) +Firmware Scratch Size : 4096 B (total), 1464 B (used), 2632 B (free) +Runtime SBI Version : 3.0 +Standard SBI Extensions : ipi,pmu,srst,sse,hsm,rfnc,fwft,time,base,legacy,dbcn,dbtr +Experimental SBI Extensions : none + +Domain0 Name : root +Domain0 Boot HART : 0 +Domain0 HARTs : 0* +Domain0 Region00 : 0x0000000080040000-0x000000008005ffff M: (F,R,W) S/U: () +Domain0 Region01 : 0x0000000080000000-0x000000008003ffff M: (F,R,X) S/U: () +Domain0 Region02 : 0x0000000000100000-0x0000000000100fff M: (I,R,W) S/U: (R,W) +Domain0 Region03 : 0x0000000010000000-0x0000000010000fff M: (I,R,W) S/U: (R,W) +Domain0 Region04 : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: () +Domain0 Region05 : 0x000000000c400000-0x000000000c5fffff M: (I,R,W) S/U: (R,W) +Domain0 Region06 : 0x000000000c000000-0x000000000c3fffff M: (I,R,W) S/U: (R,W) +Domain0 Region07 : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X) +Domain0 Next Address : 0x0000000020000000 +Domain0 Next Arg1 : 0x00000000bfe00000 +Domain0 Next Mode : S-mode +Domain0 SysReset : yes +Domain0 SysSuspend : yes + +Boot HART ID : 0 +Boot HART Domain : root +Boot HART Priv Version : v1.12 +Boot HART Base ISA : rv64imafdch +Boot HART ISA Extensions : sstc,zicntr,zihpm,zicboz,zicbom,sdtrig,svadu +Boot HART PMP Count : 16 +Boot HART PMP Granularity : 2 bits +Boot HART PMP Address Bits : 54 +Boot HART MHPM Info : 16 (0x0007fff8) +Boot HART Debug Triggers : 2 triggers +Boot HART MIDELEG : 0x0000000000001666 +Boot HART MEDELEG : 0x0000000000f4b509 +[=3hRISC-V EDK2 firmware version 2025.11-3ubuntu7.3 +Press ESCAPE within 5 seconds for boot options ERROR: C40000002:V03051002 I0 6D33944A-EC75-4855-A54D-809C75241F6C 83FFF850 +BdsDxe: failed to load Boot0001 "UEFI Misc Device" fr +om PciRoot(0x0)/Pci(0x1,0x0): Not Found +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +Monolithic build - kernel linked directly +Collecting boot information... +CmdLine: parsed OK +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +GOP: linear framebuffer found +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop +Calling kernel_main (monolithic)... +riscv64 item 4.3.5a: satp state at kernel entry (before switch) + satp.MODE = 0x000000000000000a + satp.PPN = 0x00000000000bf868 + __kernel_start = 0x00000000bdc1239c +riscv64: satp cleared -- Bare mode, explicit (item 4.3.5a) + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v2.1.0 riscv64 +Architecture: riscv64 +Build: Oct 29 2026 07:10:57 + +UEFI BootServices: EXITED +Console: serial line is a 16550 at 0x0000000010000000 (no devicetree: QEMU's) + +=== StarKernel Boot Information === +Memory map entries: 91 +Total memory: 1020 MB +Usable memory: 974 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 250175 + Free pages : 249523 + Used pages : 652 + Total MB : 977 + Free MB : 974 + Used MB : 2 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +IDT installed. + +APIC: init... +PLIC: no DTB PLIC node -- using QEMU virt-machine default (base=0x0c000000) +PLIC: init (S-mode context 1, threshold=0) +APIC: init done + +Timer: init... +Timer: RISC-V time CSR @ 10000000 Hz (FALLBACK, no devicetree) +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 536870872 + Free bytes: 536870872 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 2214588416 + Heap end addr: 2751459328 + +Heartbeat: init... +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Boot disk: not a StarshipOS stick +System: StarForth v4 (this build's default) +StarForth v4: one host node, the F18-derived engine +V4: capsule v4:sys:map-64.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49 +V4: capsule v4:sys:core.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28 +V4: capsule v4:sys:input.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79 +V4: capsule v4:sys:dict.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc +V4: capsule v4:sys:codegen.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90 +V4: capsule v4:sys:compile.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8 +V4: capsule v4:sys:quit.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e +V4: capsule v4:sys:forth.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da +V4: capsule v4:sys:numout.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299 +V4: capsule v4:sys:words.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e +V4: capsule v4:sys:system.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd +V4: capsule v4:sys:qmath.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3 +V4: capsule v4:sys:blocks.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a +V4: capsule v4:sys:log.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b +V4: capsule v4:sys:acl.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22 +V4: capsule v4:sys:end.f18 signature: missing (unsigned) +PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc +PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258 +V4: capsule v4:forth79.4th signature: missing (unsigned) +PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8 +PARITY:V4_POST tests=538 pass=538 fail=0 +PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f +PARITY:OK +POST: PASSED +PCI: init... +virtio-rng: found device +rng: backend = virtio-rng +entropy: ready +virtio-input: found device +virtio-input: driver ready +Starting heartbeat... +SBI: timer armed (TIME extension) +Heartbeat running. +blkio_usb: MSC device ready +Artemis: the stick's partition attached +[Hera] Zuse: identity confirmed from attached thumbdrive +[zuse@Hera] ok> 3 4 + . +[zuse@Hera] 7 ok +[zuse@Hera] ok>  \ No newline at end of file diff --git a/v3/src/test_runner/test_runner.c b/v3/src/test_runner/test_runner.c index d73486ad..de7bff23 100644 --- a/v3/src/test_runner/test_runner.c +++ b/v3/src/test_runner/test_runner.c @@ -58,8 +58,9 @@ extern int strcmp(const char *a, const char *b); #endif /** @brief Global statistics for test execution */ -#ifdef __STARKERNEL__ -/* Ensure visibility for GOT-based access with -fPIC -fvisibility=hidden */ +#if defined(__STARKERNEL__) && !defined(STARKERNEL_PIE_HIDDEN_H) +/* Ensure visibility for GOT-based access with -fPIC -fvisibility=hidden + * (not amd64: -fpie and pie_hidden.h make every symbol hidden there) */ __attribute__((visibility("default"))) #endif TestStats global_test_stats = {0, 0, 0, 0, 0};