#!/bin/sh
# DF-2237 phase 0: fresh boot, push pack, build, env capture, run CONTROLS
# (mode-0 harness: plain + benign case conversions; must NOT panic).
set -e
cd "$(dirname "$0")"
VM=../../../dfbsd-qemu/vm.sh
CFG=../../../dfbsd-qemu/config

echo "== P0: reset with-src =="
$VM reset with-src

echo "== push pack =="
$VM run_root 'mkdir -p /root/df2237'
scp -q -F $CFG armtbl.c df2237_mod.c mmap0.c build.sh dfbsd:/root/df2237/

echo "== build on guest =="
$VM run_root 'sh /root/df2237/build.sh' 2>&1 | tee build.log

echo "== env capture =="
{
  $VM run_root 'uname -a; sysctl kern.securelevel; cc --version | head -1; \
    sha256 /usr/src/sys/libiconv/iconv_xlat16.c; sysctl vm.min_address 2>/dev/null; \
    sysctl debug.debugger_on_panic debug.trace_on_panic'
} 2>&1 | tee env.txt

echo "== page-0 mapping check (unprivileged) =="
$VM run_user '/root/df2237/mmap0; echo "rc=$?"' 2>&1 | tee mmap0_user.log
$VM run_root '/root/df2237/mmap0; echo "rc=$?"' 2>&1 | tee mmap0_root.log

echo "== arm tables + run control harness (mode 0) =="
$VM run_root 'kldload /boot/kernel/libiconv.ko && /root/df2237/armtbl && \
  kldstat; kldload /root/df2237/km0/df2237_0.ko' 2>&1 | tee run.log
$VM run_root 'dmesg | tail -25' 2>&1 | tee dmesg.txt

echo "== P0 done (guest left up, controls must show no panic) =="
